Du kan bruke makrohandlingen SearchForRecord i Access-skrivebordsdatabaser til å søke etter en bestemt post i en tabell, spørring, et skjema eller en rapport.
Innstilling
Makrohandlingen SearchForRecord har følgende argumenter:
Handlingsargument |
Beskrivelse |
||||||||||
Objekttype |
Skriv inn eller velg typen databaseobjekt du søker i. Du kan velge Tabell, Spørring, Skjema eller Rapport. |
||||||||||
Objektnavn |
Skriv inn eller velg objektet som inneholder posten du vil søke etter. Rullegardinlisten viser alle databaseobjekter av typen du valgte for argumentet Objekttype . |
||||||||||
Spille inn |
Angi startpunktet og retningen for søket.
|
||||||||||
Where-betingelse |
Skriv inn vilkårene for søket ved hjelp av samme syntaks som en SQL WHERE-setningsdel, bare uten ordet «WHERE». Eksempler: Description = "Beverages" Hvis du vil opprette et vilkår som inneholder en verdi fra en tekstboks i et skjema, må du opprette et uttrykk som setter sammen den første delen av vilkåret med navnet på tekstboksen som inneholder verdien du vil søke etter. Følgende vilkår søker for eksempel etter verdien i tekstboksen txtDescription i skjemaet frmCategories i beskrivelsesfeltet. Legg merke til likhetstegnet (=) i begynnelsen av uttrykket, og bruk av enkle anførselstegn (') på hver side av tekstboksreferansen: ="Description = '" & Forms![frmCategories]![txtDescription] & "'" |
Merknader
-
I tilfeller der mer enn én post samsvarer med vilkårene i where-betingelsesargumentet , bestemmer følgende faktorer hvilken post som blir funnet:
-
Innstillingen For postargument Se tabellen i Innstillinger-delen for mer informasjon om Post-argumentet .
-
Sorteringsrekkefølgen for postene Hvis for eksempel Post-argumentet er satt til Først, kan endring av sorteringsrekkefølgen for postene endre hvilken post som blir funnet.
-
-
Objektet som er angitt i argumentet Objektnavn , må være åpent før denne handlingen kjøres. Ellers oppstår det en feil.
-
Hvis vilkårene i where-betingelsesargumentet ikke oppfylles, oppstår det ingen feil, og fokuset forblir på gjeldende post.
-
Når du søker etter forrige eller neste post, brytes ikke søket når det når slutten av dataene. Hvis det ikke er flere poster som samsvarer med vilkårene, oppstår det ingen feil, og fokuset forblir på den gjeldende posten. Hvis du vil bekrefte at det ble funnet et treff, kan du angi en betingelse for neste handling og gjøre betingelsen den samme som vilkårene i where-betingelsesargumentet .
-
Hvis du vil kjøre handlingen SearchForRecord i en VBA-modul, bruker du SearchForRecord-metoden for DoCmd-objektet .
-
Makrohandlingen SearchForRecord ligner makrohandlingen SøkEtterPost , men SearchForRecord har kraftigere søkefunksjoner. Makrohandlingen FindRecord brukes hovedsakelig til å finne strenger, og den dupliserer funksjonaliteten i dialogboksen Søk . Makrohandlingen SearchForRecord bruker vilkår som er mer lik de i et filter eller en SQL-spørring. Listen nedenfor viser noen ting du kan gjøre med makrohandlingen SearchForRecord :
-
Du kan bruke komplekse vilkår i where-betingelsesargumentet , for eksempel
-
Beskrivelse = "Drikkevarer" og CategoryID = 11
-
Du kan referere til felt som er i postkilden til et skjema eller en rapport, men som ikke vises i skjemaet eller rapporten. I det forrige eksemplet må verken Description eller CategoryID vises i skjemaet eller rapporten for at vilkårene skal fungere.
-
Du kan bruke logiske operatorer, for eksempel <, >, AND, OR og BETWEEN. Handlingen SøkEtterPost samsvarer bare med strenger som er like, begynner med eller inneholder strengen det søkes etter.
Eksempel
Følgende makro åpner først Kategorier-tabellen ved hjelp av handlingen OpenTable . Makroen bruker deretter makrohandlingen SearchForRecord til å finne den første posten i tabellen der Beskrivelse-feltet er lik «Drikkevarer».
Handling |
Argumenter |
Åpnetabell |
Tabellnavn: Kategorier Visning: Dataark Datamodus: Rediger |
SearchForRecord |
Objekttype: Tabell Objektnavn: Kategorier Post: Første Where-betingelse: Beskrivelse = "Drikkevarer" |