[Access] Search/Filter

Pagina: 1
Acties:

  • Thadir
  • Registratie: November 2001
  • Laatst online: 06-08 21:26

Thadir

Geker dan gekker

Topicstarter
Ik heb in access een formulier gemaakt gebaseerd op een query die 2 tabbelen samen voegt tot 1 overzicht.

In dit formulier staat erg veel informatie naast elkaar. En dan nog eens veel hits (9000 stuks onder elkaar).

Nu dacht ik als ik hier nu een zoek/filter optie in brouw.

Dit probeerde ik dan ook aan de hand van een:

keuzen lijst met invoer balk (genaamd varSearch)
een text veld (genaamd txtSearch)
een knop (genaamd cmdSearch)

In de keuzen lijst moet de gebruiker kiezen in welke veld hij gaat zoeken. in het text veld moet hij in voeren waarop hij wilt zoeken. En dan klik hij op de knop. Echter ik krijg snoei hard een foutmelding van MSscript. En ik ben zelf niet zo helemaal thuis in access om te zeggen dat ik de oplossing weet aangezien ik dit gemaakt hebt aan de hand van een zeer simpel voor beeld dat volgens mij niet echt hier voor bedoelt is dacht ik dat ik eens hier mijn geluk zoek.

Nu gebruik ik de volgende script achter de knop:
Private Sub cmdSearch_Click()
Dim strStudentRef As String
Dim strSearch As String

'Check txtSearch for Null value or Nill Entry first.

If IsNull(Me![txtSearch]) Or (Me![txtSearch]) = "" Then
MsgBox "Please enter a value!", vbOKOnly, "Invalid Search Criterion!"
Me![txtSearch].SetFocus
Exit Sub
End If
'---------------------------------------------------------------

'Performs the search using value entered into txtSearch
'and evaluates this against values in the tabels you selected in var
Me.Filter = Me.varSearch.Column(0) & "=" & Me.txtSearch
Me.FilterOn = True

End Sub

I was playing poker the other night... with Tarot cards.
I got a full house and 4 people died.
-- Steven Wright


  • Boss
  • Registratie: September 1999
  • Laatst online: 09:19

Boss

+1 Overgewaardeerd

Als je in Me.txtSearch een variabele hebt staan, moet het zijn
code:
1
Me.Filter = Me.varSearch.Column(0) & "='" & Me.txtSearch & "'"


Overigens kan je de Me! en Me. weglaten, omdat je toch naar objecten verwijst op het huidige form.
En de nette versie met if then else is:

code:
1
2
3
4
5
6
7
8
9
If IsNull(Me![txtSearch]) Or (Me![txtSearch]) = "" Then
  MsgBox "Please enter a value!", vbOKOnly, "Invalid Search Criterion!"
  Me![txtSearch].SetFocus
Else
  'Performs the search using value entered into txtSearch
  'and evaluates this against values in the tabels you selected in var
  Me.Filter = Me.varSearch.Column(0) & "=" & Me.txtSearch
  Me.FilterOn = True
End If

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.