Eigen zoekfunctie in Acces

Status
Niet open voor verdere reacties.

tweet

Gebruiker
Lid geworden
2 jun 2007
Berichten
38
Ik heb in MS Acces een zoekfuntie gemaakt (gevonden op internet) en die werkt inprincipe goed. Alleen moet ik de volledige naam intypen, bijv. achternaam, voornaam. Wat ik graag wil is dat ik een deel hier van kan intypen en hij dan gaat zoeken en een resultaat geeft.

Dit heb ik er nu staan, ik heb al gekeken of het met een LIKE zou willen, maar dat lukt me niet.

Code:
If strNaamRef = strSearch Then
        MsgBox "Match Found For: " & strSearch, , "Congratulations!"
        naam.SetFocus
        txtSearch = ""
 
Laatst bewerkt door een moderator:
Instr

Je kunt hier een instr-functie voor gebruiken, je code zou dan worden:

Code:
If InStr(strNaamRef, strSearch)>0 Then
MsgBox "Match Found For: " & strSearch, , "Congratulations!"
naam.SetFocus
txtSearch = ""
De functie zoekt of strSearch ergens voorkomt in strNaamRef en geeft de positie terug waar strSearch begint. Als strSearch niet voorkomt is het resultaat 0.
 
Laatst bewerkt door een moderator:
Voor Sesam en tweet;
VBA code dient tussen de codetags geplaatst te worden. Zou je zo vriendelijk willen zijn om dit te lezen a.u.b.
 
Sesam, bedankt voor je reactie.
Als ik dit in de code aanpas gebeurt er nog niks. Als ik een * voor of achter de naam zet krijg ik wel een resultaat. Echter als ik 2 keer de naam Jan heb vindt ie alleen de eerste en blijft het daarbij.
Ook krijg ik nog de melding dat de naam niet gevonden is als ik een * er neer zet. Die melding komt bij de Else als ie niks vindt.
 
Laatst bewerkt:
Te weinig code

Je hebt maar een klein stukje van de code laten zien, hoe dit in het geheel functioneert kan ik daarop niet beoordelen. Ik heb je alleen een toepassing van de instr-functie willen laten zien, in de hoop dat je daarmee zelf verder zou kunnen. Als je meer hulp kunt gebruiken, geef dan iets meer code prijs, dan kunnen we daar naar kijken.
 
Je hebt helemaal gelijk. Dus hierbij de complete code.

Private Sub cmdSearch_Click()
Dim strNaamRef 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 naam

DoCmd.ShowAllRecords
DoCmd.GoToControl ("naam")
DoCmd.FindRecord Me!txtSearch

naam.SetFocus
strNaamRef = naam.Text
txtSearch.SetFocus
strSearch = txtSearch.Text

'If matching record found sets focus in naam and shows msgbox
'and clears search control

If InStr(strNaamRef, strSearch) > 0 Then
MsgBox "Match Found For: " & strSearch, , "Congratulations!"
naam.SetFocus
txtSearch = ""

'If value not found sets focus back to txtSearch and shows msgbox
Else
MsgBox "Match Not Found For: " & strSearch & " - Please Try Again.", _
, "Invalid Search Criterion!"
txtSearch.SetFocus
End If
End Sub
 
acAnywhere

Volgens mij kun je bij je actie findrecord als tweede argument de constante acAnywhere meegeven.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan