Når du bruker Microsoft Access, må du ofte arbeide med verdier som ikke befinner seg direkte i dataene. Du ønsker for eksempel å beregne merverdiavgift på en bestilling, eller beregne totalverdien av selve bestillingen. Du kan beregne disse verdiene ved å bruke uttrykk. Hvis du vil bruke uttrykk, skriver du dem ved å bruke riktig syntaks. Syntaks er et sett med regler der ordene og symbolene i et uttrykk kombineres i riktig rekkefølge. I utgangspunktet er uttrykk i Access litt vanskelige å lese. Med en god forståelse av uttrykkssyntaks og litt trening blir det imidlertid mye enklere.
I denne artikkelen
Oversikt over uttrykk
Et uttrykk er en kombinasjon av noe av eller alt følgende: innebygde eller brukerdefinerte funksjoner, identifikatorer, operatorer, verdier og konstanter som evalueres til en enkelt verdi.
Følgende uttrykk inneholder for eksempel felles komponenter:
=Sum([Purchase Price])*0.08
-
Sum() er en innebygd funksjon
-
[Purchase Price] er en identifikator
-
* er en matematisk operator
-
0.08 er en konstant
Dette uttrykket kan brukes i en tekstboks i en bunntekst i et skjema eller en rapport til å beregne merverdiavgift for en gruppe elementer.
Uttrykk kan være mye mer komplekse eller mye enklere enn dette eksemplet. Dette Boolsk uttrykket består for eksempel av bare én operator og én konstant:
>0
Dette uttrykket gir resultatet:
-
True når det sammenlignes med et tall som er større enn 0.
-
False når det sammenlignes med et tall som er mindre enn 0.
Du kan bruke dette uttrykket i egenskapen Valideringsregel for en kontroll eller et tabellfelt for å sikre at det bare legges inn positive verdier. Uttrykk brukes mange steder til å utføre beregninger, manipulere tegn eller kontrollere data. Tabeller, spørringer, skjemaer, rapporter og makroer har alle egenskaper som kan godta uttrykk. Du kan for eksempel bruke uttrykk i egenskapene Kontrollkilde og Standardverdi for en kontroll. Du kan også bruke uttrykk i egenskapen Valideringsregel for et tabellfelt.
Uttrykkskomponenter
Hvis du vil bygge et uttrykk, kombinerer du identifikatorer ved å bruke funksjoner, operatorer, konstanter og verdier. Et gyldig uttrykk må inneholde minst én funksjon eller identifikator, og kan også inneholde konstanter eller operatorer. Du kan også bruke et uttrykk som en del av et annet uttrykk, som regel som et argument for en funksjon. Dette kalles å neste et uttrykk.
-
Identifikatorer Den generelle oppbyggingen er som følger:
[Collection name]![Object name].[Property name]
Du trenger bare å angi nok deler av en identifikator til at den blir unik i uttrykket. Det er ikke uvanlig at en identifikator ser ut som [Object name].
-
Funksjoner Den generelle oppbyggingen er som følger:
Function(argument, argument)
Ett av argumentene er vanligvis en identifikator eller et uttrykk. Enkelte funksjoner krever ikke argumenter. Før du tar i bruk en bestemt funksjon, bør du se igjennom syntaksen for denne funksjonen. Hvis du vil ha mer informasjon, kan du se Funksjoner (ordnet etter kategori).
-
Operatorer Den generelle oppbyggingen er som følger:
Identifier operator identifier
Det finnes unntak fra denne oppbyggingen. Disse står beskrevet i Operatorer-delen.
-
Konstanter Den generelle oppbyggingen er som følger:
Identifier comparison_operator constant
-
Verdier Verdier kan forekomme mange steder i et uttrykk.
Objekter, samlinger og egenskaper
Alle tabeller, spørringer, skjemaer, rapporter og felter i en Access-database kalles individuelt for objekter. Hvert objekt har et navn. Enkelte objekter har allerede et navn, som for eksempel Kontakter-tabellen i en database som er opprettet fra malen Kontakter i Microsoft Office Access. Når du oppretter et nytt objekt, gir du det et navn.
Et sett med alle delene til en bestemt type objekt kalles en samling. Eksempel: et sett med tabeller i en database kalles en samling. Enkelte objekter som er en del av en samling i databasen kan også være samlinger som inneholder enkelte andre objekter. Eksempel: et tabellobjekt er en samling som inneholder feltobjekter.
Objekter har egenskaper som beskriver, og som man kan bruke til å endre, objektets karakteristikker. Et spørringsobjekt har for eksempel en Standardvisning-egenskap som både beskriver og lar deg angi hvordan spørringen vises når du kjører den.
Følgende diagram illustrerer relasjonen mellom samlinger, objekter og egenskaper:
|
3 En egenskap 2 Et objekt 1 En samling |
Identifikatorer
Når du bruker et objekt, en samling eller egenskap i et uttrykk, henviser du til det elementet ved å bruke en identifikator. En identifikator omfatter både navnet til elementet som identifiseres, og navnet til elementet det tilhører. Identifikatoren for et felt omfatter for eksempel både navnet på feltet og navnet på tabellen som feltet tilhører. Et eksempel på en slik identifikator er følgende:
[Customers]![BirthDate]
I enkelte tilfeller fungerer navnet på et element også som en identifikator. Dette er sant når navnet på elementet er unikt i uttrykket du oppretter. Resten av identifikatoren er underforstått av konteksten. Hvis du for eksempel oppretter en spørring som bruker bare én tabell, fungerer feltnavnene selv om identifikatorer. Årsaken til dette er at feltnavnene i en tabell må være unike i den gitte tabellen. Siden du bruker bare én tabell, er navnet på tabellen underforstått i enhver identifikator som brukes i spørringen, for å henvise til et felt.
I andre tilfeller må du være veldig nøyaktig med delene til en identifikator. Ellers kan det hende at henvisningen ikke fungerer. Dette er sant når en identifikator ikke er unik i uttrykket. Når det oppstår tvetydighet, må du eksplisitt angi nok deler av en identifikator for at den skal bli unik. La oss for eksempel si at du oppretter en spørring som bruker to tabeller som heter Produkter og Bestillinger, og at begge tabellene har et felt med navn ProductID. I et slikt tilfelle må identifikatoren som du bruker i spørringen for å henvise til hvilket som helst ProductID-felt, må det inneholde tabellnavnet i tillegg til feltnavnet. Eksempler:
[Products]![ProductID]
Identifikatoroperatorer Du kan bruke tre operatorer i en identifikator:
-
Utropstegn-operatoren (!)
-
Punktum-operatoren (.)
-
Hakeparentes-operatoren ([ ])
Du bruker disse operatorene ved å omslutte hver del av identifikatoren med en hakeparentes og deretter sammenføye dem ved bruk av enten utropstegn-operatoren eller punktum-operatoren. En identifikator for et felt som heter Etternavn i en tabell som heter Medarbeidere, kan for eksempel uttrykkes som [Employees]![Last Name]. Utropstegn-operatoren forteller Access at det etterfølgende er et objekt som tilhører samlingen foran utropstegn-operatoren. I dette tilfellet er [Last Name] et feltobjekt som tilhører samlingen [Employees], som selv er et tabellobjekt.
Strengt tatt så må du ikke alltid bruke hakeparenteser rundt en identifikator eller delvis identifikator. Hvis det ikke finnes mellomrom eller andre spesialtegn i identifikatoren, legges Access automatisk til hakeparenteser når den leser uttrykket. Det er imidlertid god praksis å skrive hakeparentesene selv. Dette gjør at du kan unngå feil, og det fungerer også som en visuell pekepinn på at en identifikator er en bestemt del av et uttrykk.
Funksjoner, operatorer, konstanter og verdier
Hvis du vil opprette et uttrykk, trenger du mer enn bare identifikatorer – du må utføre en slags handling. Du bruker funksjoner, operatorer og konstanter for å utføre handlinger i et uttrykk.
Funksjoner
En funksjon er en prosedyre som du kan bruke i et uttrykk. Enkelte funksjoner, for eksempel Dato, krever ikke noe inndata for å fungere. De fleste funksjoner krever imidlertid inndata, som heter argumenter.
I eksemplet i begynnelsen av denne artikkelen bruker DatePart-funksjonen to argumenter: et intervall-argument med verdien "yyyy" og et dato-argument med verdien [Customers]![BirthDate]. DatePart-funksjonen krever minst disse to argumentene (intervall og dato), men kan godta opptil fire argumenter.
Den følgende listen viser noen funksjoner som brukes ofte i uttrykk. Klikk på koblingen for hver funksjon for mer informasjon om syntaksen som skal brukes.
-
Dato-funksjonen brukes til å sette inn den gjeldende systemdatoen i et uttrykk. Den brukes ofte sammen med Format-funksjonen, og brukes også sammen med feltidentifikatorer for felt som inneholder data for dato/klokkeslett.
=Date()
-
DatePart-funksjonen brukes til å fastslå eller trekke ut deler av en dato – som regel en dato som hentes fra en feltidentifikator, men noen ganger er det en datoverdi som returneres av en annen funksjon, for eksempel Dato.
DatePart ( "yyyy", Date())
-
DateDiff-funksjonen brukes til å fastslå forskjellen mellom to datoer – som regel mellom en dato som hentes fra en feltidentifikator, og en dato som hentes ved bruk av Dato-funksjonen.
=DateDiff(“d”, Now(), [Orders].[ReceiveBefore])-10
-
Format-funksjonen brukes til å ta i bruk et format på en identifikator, og på resultatene til en annen funksjon.
Format([Date],"ww")=Format(Now(),"ww")-1
-
IIf-funksjonen brukes til å vurdere et uttrykk som sant eller usant. Deretter returnerer funksjonen en verdi hvis uttrykket vurderes som sant, og en annen verdi hvis uttrykket vurderes som usant.
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
-
InStr-funksjonen brukes til å søke etter plasseringen til et tegn eller streng i en annen streng. Strengen det søkes i, hentes som regel fra en feltidentifikator.
InStr(1,[IPAddress],".")
-
Funksjonene Venstre, Midt og Høyre brukes til å trekke ut tegn fra en streng. Funksjonene begynner med tegnet helt til venstre (Venstre), en spesifikk plassering i midten (Midt), eller med tegnet helt til høyre (Høyre). De brukes ofte sammen med InStr-funksjonen. Strengen som disse funksjonene trekker ut tegn fra, hentes som regel fra en feltidentifikator.
Left([ProductName], 1) Right([AssetCode], 2) Mid([Phone],2,3)
Hvis du vil ha en liste over funksjoner, kan du se Funksjoner (ordnet etter kategori).
Operatorer
En operator er et ord eller symbol som indikerer en spesifikk aritmetisk eller logisk relasjon mellom de andre elementene i et uttrykk. Operatorer kan være:
-
Aritmetiske operatorer, for eksempel plusstegnet (+).
-
Sammenligningsoperatorer, for eksempel likhetstegnet (=).
-
Logiske operatorer, for eksempel Not.
-
Sammenkjedingsoperatorer, for eksempel &.
-
Spesielle operatorer, for eksempel Like.
Operatorer brukes som regel til å indikere en relasjon mellom to identifikatorer. Følgende tabell beskriver operatorene som du kan bruke i Access-uttrykk.
Aritmetiske operatorer
Du bruker de aritmetiske operatorene til å beregne en verdi fra to eller flere tall, eller for å endre fortegnet for et tall fra positiv til negativ.
Operator |
Formål |
Eksempel |
---|---|---|
+ |
Summen av to tall. |
[Delsum] + [Merverdiavgift] |
- |
Finne forskjellen mellom to tall eller angi den negative verdien for et tall. |
[Pris]-[Rabatt] |
* |
Multiplisere to tall. |
[Antall]*[Pris] |
/ |
Dele det første tallet med det andre tallet. |
[Total]/[AntallElementer] |
\ |
Runde av begge tall til heltall, dele det første tallet med det andre tallet, og deretter avkorte resultatet til et heltall. |
[Registrert]\[Rom] |
Mod |
Dele det første tallet med det andre tallet, og deretter bare returnere resten. |
[Registrert] Rest [Rom] |
^ |
Oppheve et tall i en eksponent. |
Tall ^ eksponent |
Sammenligningsoperatorer
Du bruker sammenligningsoperatorer til å sammenligne verdier og returnere et resultat som enten er sant, usant eller null (en ukjent verdi).
Operator |
Formål |
---|---|
< |
Fastslå om den første verdien er mindre enn den andre verdien. |
<= |
Fastslå om den første verdien er mindre enn eller lik den andre verdien. |
> |
Fastslå om den første verdien er større enn den andre verdien. |
>= |
Fastslå om den første verdien er større enn eller lik den andre verdien. |
= |
Fastslå om den første verdien er lik den andre verdien. |
<> |
Fastslå om den første verdien ikke er lik den andre verdien. |
Hvis enten den første eller andre verdien er Null, blir resultatet i alle tilfeller også Null. Resultatet av en sammenligning med Null er også ukjent, fordi Null representerer en ukjent verdi.
Logiske operatorer
Du kan bruke logiske operatorer til å kombinere to verdier og returnere et resultat som enten er sann, usann eller null. Det kan også hende at logiske operatorer henvises til som boolske operatorer.
Operator |
Bruk |
Beskrivelse |
---|---|---|
And |
Uttrykk1 Og Uttrykk2 |
Sann når Uttr1 og Uttr2 er sann. |
Or |
Uttrykk1 Eller Uttrykk2 |
Sann når enten Uttrykk1 eller Uttrykk2 er sann. |
Eqv |
Uttrykk1 Eqv Uttrykk2 |
Sann når både Uttrykk1 og Uttrykk2 er sanne, eller når både Uttrykk1 og Uttrykk2 er usanne. |
Not |
Ikke-uttrykk |
Sann når Uttrykk ikke er sann. |
Xor |
Uttrykk1 Eksklusiv eller Uttrykk2 |
Sann når enten Uttrykk1 er sann eller Uttrykk2 er sann, men ikke begge. |
Sammenkjedingsoperatorer
Du kan bruke sammenkjedingsoperatorer til å kombinere to tekstverdier til én streng.
Operator |
Bruk |
Beskrivelse |
---|---|---|
& |
streng1 & streng2 |
Kombinerer to strenger for å danne én streng. |
+ |
streng1 + streng2 |
Kombinerer to strenger for å danne én streng, og overfører Null-verdier. |
Spesielle operatorer
Du bruker spesielle operatorer som beskrevet i tabellen under.
Operator |
Beskrivelse |
Mer informasjon |
---|---|---|
Is Null or Is Not Null |
Bestemmer om en verdi er null eller ikke null. |
|
Like "pattern" |
Sammenligner strengverdier ved å bruke jokertegn-operatorene ? og *. |
|
Between val1 And val2 |
Fastslår om en numerisk verdi eller datoverdi ligger inne i et område. |
|
In(string1,string2...) |
Fastslår om en strengverdi finnes i et sett med strengverdier. |
Konstanter
En konstant er en kjent verdi som ikke endres, og som du kan bruke i et uttrykk. De finnes fire konstanter som brukes ofte i Access:
-
True angir noe som er logisk sant.
-
False angir noe som er logisk usant.
-
Null angir mangelen på en kjent verdi.
-
"" (empty string) angir en verdi som er kjent for å være tom.
Konstanter kan brukes som argumenter til en funksjon, og kan brukes i et uttrykk som en del av et kriterium. Du kan for eksempel bruke den tomme strengkonstanten ("") som en del av et kriterium for en kolonne i en spørring, for å vurdere feltverdiene for den kolonnen. Du skriver da inn følgende kriterium: <>"". I dette eksempelet er <> en operator og "" en konstant. Når de brukes sammen, angir de at identifikatoren de brukes for skal sammenlignes med en tom streng. Det resulterende uttrykket er sann når identifikatorverdien er noe annet enn en tom streng.
Vær forsiktig når du bruker Null-konstanten. I de fleste tilfeller resulterer bruken av Null sammen med en sammenligningsoperator i feil. Hvis du ønsker å sammenligne en verdi med Null i et uttrykk, bruker du operatoren Is Null eller Is Not Null.
Verdier
Du kan bruke litterale verdier i uttrykkene, for eksempel tallet 1,254 eller strengen "Angi et tall mellom 1 og 10". Du kan også bruke numeriske verdier, som kan være en serie med sifre, med eller uten fortegn og desimaltegn. Hvis det ikke finnes noe fortegn, brukes en positiv verdi. Hvis du vil gjøre en verdi negativ, inkluderer du minustegnet (-). Du kan også bruke vitenskapelige notasjoner. Det gjøres ved å inkludere "E" eller "e" og tegnet for eksponenten (for eksempel, 1.0E-6).
Når du bruker tekststrenger, plasserer du dem i anførselstegn for å sikre at de tolkes riktig i Access. I noen tilfeller angis anførselstegnene automatisk. Når du for eksempel skriver inn tekst i et uttrykk for en valideringsregel eller spørringsvilkår, omsluttes tekststrengene automatisk med anførselstegn i Access.
Hvis du for eksempel skriver inn teksten Paris, vises «Paris» i uttrykket. Hvis du vil at et uttrykk skal produsere en streng som er omsluttet av anførselstegn, omslutter du den nestede strengen med enkle (')-anførselstegn eller med tre sett doble (")-anførselstegn. Uttrykkene under er for eksempel ekvivalente:
Forms![Contacts]![City]. DefaultValue = ' "Paris" '
Forms![Contacts]![City].DefaultValue = " " "Paris" " "
Hvis du vil bruke dato/klokkeslett-verdier, omslutter du verdiene med nummertegn (#). For eksempel er #3-7-17#, #7-Mar-17# og #Mar-7-2017# alle eksempler på gyldige verdier. Når Access støter på en gyldig dato/klokkeslett-verdi som er omsluttet med #-tegn, behandles verdien automatisk som datatypen Dato/klokkeslett.
Nestegrensen for uttrykk i en nettdatabase er 65
Uttrykk som er nestet dypere enn 65 nivåer, fungerer ikke i nettleseren. Derfor bør du ikke bruke slike uttrykk i en nettdatabase i Access. Du får ingen feilmeldinger, men uttrykket fungerer ganske enkelt ikke.
Hvis du bruker operatorene &, AND og OR, kan du opprette ekstra nestenivåer på serveren som ikke gjenspeiles på Access-klienten. For eksempel er uttrykket "a" & "b" & "c" ikke nestet i uttrykksverktøyet, men i SharePoint blir det concatenate.Db("a", concatenate.Db("b", "c") ). Denne oversettelsen oppretter ett nestenivå. Bruker du mange &-, AND- eller OR-operatorer etter hverandre i et enkelt uttrykk, kan det føre til at serverens nestegrense på 65 nivåer overskrides, og da vil ikke uttrykket fungere i nettleseren.