När du använder Microsoft Access behöver du ofta arbetar med värden som inte finns direkt i dina data. Du behöver till exempel beräkna moms för en order eller beräkna det totala värdet på själva ordern. Du kan beräkna de här värdena med hjälp av uttryck. Om du vill använda uttryck måste du skriva dem med rätt syntax. Syntax är en uppsättning regler som styr hur orden eller symbolerna i ett uttryck ska kombineras. Till en början är uttryck i Access lite svåra att läsa. Men med en god förståelse av uttryckssyntaxen och lite övning blir det mycket enklare.
I den här artikeln
Uttryck – en översikt
Ett uttryck är en kombination av några eller samtliga av följande: inbyggda eller användardefinierade funktioner, identifierare, operatorer, värden och konstanter, som motsvarar ett enskilt värde.
Till exempel innehåller uttrycket nedan vanliga komponenter:
=Sum([Purchase Price])*0.08
-
Sum() är en inbyggd funktion
-
[Purchase Price] är en identifierare
-
* är en matematisk operator
-
0.08 är en konstant
Det här uttrycket kan användas i en textruta i sidfoten på ett formulär eller en rapport för att beräkna moms för en artikelgrupp.
Uttryck kan vara mycket mer komplexa eller mycket enklare än det här exemplet. Det här boolesk uttrycket består till exempel av enbart en operator och en konstant.
>0
Det här uttrycket returnerar:
-
True när det jämförs med ett tal som är större än 0.
-
False när det jämförs med ett tal som är mindre än 0.
Du kan använda uttrycket i egenskapen Verifieringsuttryck för en kontroll eller ett tabellfält för att se till att endast positiva värden anges. Uttryck används på många platser för att utföra beräkningar, manipulera tecken eller testa data. Tabeller, frågor, formulär, rapporter och makron har egenskaper som accepterar ett uttryck. Du kan till exempel använda uttryck i egenskaperna Kontrollkälla och Standardvärde för en kontroll. Du kan också använda uttryck i egenskapen Verifieringsuttryck för ett tabellfält.
Komponenter i uttryck
När du skapar ett uttryck kombinerar du identifierare med hjälp av funktioner, operatorer, konstanter och värden. Ett giltigt uttryck måste innehålla minst en funktion eller minst en identifierare, och kan också innehålla konstanter eller operatorer. Du kan även använda ett uttryck som en del av ett annat uttryck, i regel som ett argument i en funktion. Det här kallas för att kapsla ett uttryck.
-
Identifierare Den allmänna formen är:
[Collection name]![Object name].[Property name]
Du behöver bara ange tillräckligt många delar av en identifierare för att den ska bli unik inom kontexten för uttrycket. Det är inte ovanligt att en identifierare antar formen [Object name].
-
Funktioner Den allmänna formen är:
Function(argument, argument)
Ett av argumenten är vanligtvis en identifierare eller ett uttryck. Vissa funktioner kräver inte argument. Innan du använder en viss funktion granskar du syntaxen för den funktionen. Mer information finns i Funktioner (ordnade efter kategori).
-
Operatorer den allmänna formen är:
Identifier operator identifier
Det finns undantag från den här formen, vilket du kan se i avsnittet Operatorer.
-
Konstanter Den allmänna formen är:
Identifier comparison_operator constant
-
Värden Värden kan förekomma på många platser i ett uttryck.
Objekt, samlingar och egenskaper
Alla tabeller, frågor, formulär, rapporter och fält i en Access-databas kallas var och en för sig objekt. Alla objekt har ett namn. Vissa objekt är redan namngivna, t.ex. tabellen Kontakter i en databas som skapats utifrån Microsoft Office Access-mallen Kontakter. När du skapar ett nytt objekt ger du det ett namn.
Uppsättningen som utgörs av alla förekomster av en viss typ av objekt kallas en samling. Uppsättningen av alla tabeller i en databas är till exempel en samling. Vissa objekt som ingår i en samling i din databas kan också vara samlingar som innehåller andra objekt. Ett tabellobjekt är till exempel en samling som innehåller fältobjekt.
Objekt har egenskaper, vilka beskriver och utgör ett sätt att ändra objektets egenskaper. Ett frågeobjekt har till exempel en standardvy-egenskap som både beskriver och låter dig ange hur frågan ska visas när du kör den.
I följande diagram visas förhållandet mellan samlingar, objekt och egenskaper:
|
3 En egenskap 2 Ett objekt 1 En samling |
Identifierare
När du använder ett objekt, en samling eller en egenskap i ett uttryck refererar du till det elementet med hjälp av en identifierare. En identifierare innehåller namnet på elementet som du identifierar och även namnet på elementet som den tillhör. Identifieraren för ett fält innehåller till exempel namnet på fältet och namnet på tabellen som fältet tillhör. Ett exempel på en sådan identifierare finns i föregående exempel på ett uttryck:
[Customers]![BirthDate]
I vissa fall fungerar namnet på ett element enbart som en identifierare. Det här är sant när namnet på elementet är unikt i samband med uttrycket som du skapar. Resten av identifieraren är underförstådd genom sammanhanget. Om du till exempel skapar en fråga som används endast i en tabell fungerar fältnamnen ensamma som identifierare, eftersom fältnamnen i en tabell måste vara unika i tabellen. Eftersom du använder endast en tabell är tabellnamnet underförstått i identifierare som du använder i frågan för att referera till ett fält.
I andra fall måste du vara explicit om delarna av en identifierare för att en referens ska fungera. Det här är sant när en identifierare inte är unik i samband med uttrycket. När det finns tvetydigheter måste du uttryckligen beteckna tillräckligt många delar av identifieraren för att den ska bli unik i sammanhanget. Till exempel om du skapar en fråga som använder en tabell med namnet Produkter och en tabell med namnet Order och båda tabellerna har ett fält med namnet ProduktID. I ett sådant fall måste identifieraren du använder i frågan för att hänvisa till det ena eller andra ProduktID-fältet innehålla tabellnamnet förutom fältnamnet. Till exempel:
[Products]![ProductID]
Identifieraroperatorer Det finns tre operatorer som du kan använda i en identifierare:
-
Operatorn utropstecken (!)
-
Operatorn punkt (.)
-
Operatorn hakparentes ([ ])
De här operatorerna använder du genom att placera varje del av identifieraren inom hakparenteser och sedan koppla samman dem med en utropstecken-operator eller en punkt-operator. Till exempel kan en identifierare för ett fält med namnet Efternamn i en tabell med namnet Anställda uttryckas som [Employees]![Last Name]. Operatorn utropstecken talar om för Access att det som följer är ett objekt som hör till samlingen som föregår operatorn utropstecken. I det här fallet är [Efternamn] ett fältobjekt som hör till samlingen [Anställda], som också är ett tabellobjekt.
Faktum är att du inte alltid behöver sätta hakparenteser kring en identifierare eller en del av en identifierare. Om det finns inte finns några blanksteg eller andra specialtecken i identifieraren läggs hakparenteserna till automatiskt i Access när det läser uttrycket. Men det är bra att ange hakparenteserna själv – det hjälper dig att undvika fel och fungerar också som en visuell ledtråd om att en viss del av ett uttryck är en identifierare.
Funktioner, operatorer, konstanter och värden
Om du vill skapa ett uttryck behöver du mer än identifierare, du behöver utföra en åtgärd av något slag. Du använder funktioner, operatorer och konstanter för att utföra åtgärder i ett uttryck.
Funktioner
En funktion är en process som du kan använda i ett uttryck. Vissa funktioner, till exempel datum, kräver inga ytterligare indata för att fungera. De flesta funktioner behöver dock indata, så kallade argument.
I exemplet i början av den här artikeln använder funktionen DatumDel två argument: ett intervallargument med värdet "yyyy" och ett datumargument med värdet [Customers]![BirthDate]. Funktionen DatumDel kräver minst dessa två argument (intervall och datum) men kan acceptera upp till fyra argument.
I följande lista visas några funktioner som ofta används i uttryck. Klicka på länken för respektive funktion om du vill ha mer information om syntaxen som du bör använda med just den funktionen.
-
Funktionen Datum används för att infoga det aktuella systemdatumet i ett uttryck. Det används ofta i samband med funktionen Format, och används även i samband med fältidentifierare för fält som innehåller data om datum/tid.
=Date()
-
Funktionen DatumDel används för att fastställa eller extrahera en del av ett datum – i regel ett datum som hämtas från en fältidentifierare, men ibland ett datumvärde som returneras av en annan funktion, till exempel Datum.
DatePart ( "yyyy", Date())
-
Funktionen DatumDiff används för att ta reda på skillnaden mellan två datum – i regel mellan ett datum som hämtas från en fältidentifierare och ett datum som erhålls med hjälp av funktionen Datum.
=DateDiff(“d”, Now(), [Orders].[ReceiveBefore])-10
-
Funktionen Format används för att tillämpa ett format på en identifierare och resultatet av en annan funktion.
Format([Date],"ww")=Format(Now(),"ww")-1
-
Funktionen OOM används för att beräkna ett uttryck som sant eller falskt och sedan returnera ett angivet värde om uttrycket utvärderas som sant, och ett annat angivet värde om uttrycket utvärderas som falskt.
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
-
Funktionen SökIStr används för att söka efter positionen för ett tecken eller sträng i en annan sträng. Strängen som söks igenom hämtas i regel från en fältidentifierare.
InStr(1,[IPAddress],".")
-
Funktionerna Vänster, Mitt och Höger används för att extrahera tecken från en sträng och börjar med tecknet längst till vänster (Vänster), en viss positionen i mitten (Mitt) eller med tecknet längst till höger (Höger). De används ofta med funktionen SökIStr. Strängen som de här funktionerna extraherar tecken från hämtas i regel från en fältidentifierare.
Left([ProductName], 1) Right([AssetCode], 2) Mid([Phone],2,3)
En lista över funktioner finns i Funktioner (ordnade efter kategori).
Operatorer
En operator är ett ord eller en symbol som anger en aritmetisk eller logisk relation mellan de andra elementen i ett uttryck. Operatorer kan vara:
-
Aritmetiska, till exempel plustecknet (+).
-
Jämförelse, till exempel likhetstecknet (=).
-
Logiska, till exempel Not.
-
Sammanfogning, till exempel &.
-
Special, till exempel Like.
Operatorer används vanligen för att ange en relation mellan två identifierare. I följande tabeller beskrivs operatorer som du kan använda i Access-uttryck.
Aritmetiska
Du använder de aritmetiska operatorerna för att beräkna ett värde utifrån två eller fler tal eller för att ändra tecknet för ett tal från positivt till negativt.
Operator |
Ändamål |
Exempel |
---|---|---|
+ |
Summera två tal. |
[Delsumma]+[Moms] |
- |
Hitta differensen mellan två tal eller ange det negativa värdet för ett tal. |
[Pris]-[Rabatt] |
* |
Multiplicera två tal. |
[Antal]*[Pris] |
/ |
Dividera det första talet med det andra talet. |
[Totalt]/[AntalObjekt] |
\ |
Avrunda båda talen till heltal, dividera det första talet med det andra talet och sedan trunkera resultatet till ett heltal. |
[Registrerade]\[Rum] |
Mod |
Dividera det första talet med det andra talet och returnera endast resten. |
[Registrerade] Rest [Rum] |
^ |
Upphöja ett tal till en exponent. |
Tal ^ Exponent |
Jämförelse
Du använder jämförelseoperatorerna för att jämföra värden och returnera ett resultat som är sant, falskt eller null (ett okänt värde).
Operator |
Ändamål |
---|---|
< |
Avgöra om det första värdet är mindre än det andra värdet. |
<= |
Avgöra om det första värdet är mindre än eller lika med det andra värdet. |
> |
Avgöra om det första värdet är större än det andra värdet. |
>= |
Avgöra om det första värdet är större än eller lika med det andra värdet. |
= |
Avgöra om det första värdet är lika med det andra värdet. |
<> |
Avgöra om det första värdet inte är lika med det andra värdet. |
I samtliga fall där det första värdet eller det andra värdet är Null blir resultatet också Null. Eftersom Null representerar ett okänt värde blir resultatet av en jämförelse med Null också okänt.
Logiska
Du använder de logiska operatorerna för att kombinera två värden och returnera ett sant, falskt eller null-resultat. Logiska operatorer kallas även booleska operatorer.
Operator |
Användning |
Beskrivning |
---|---|---|
And |
Uttr1 OCH uttr2 |
Sant om Uttr1 och Uttr2 är sanna. |
Or |
Uttr1 ELLER uttr2 |
Sant om antingen Uttr1 eller Uttr2 är sant. |
Eqv |
Uttr1 EKV uttr2 |
Sant om både Uttr1 och Uttr2 är sanna, eller om både Uttr1 och Uttr2 är falska. |
Not |
INTE Uttr |
Sant om Uttr inte är sant. |
Xor |
Uttr1 EXELLER uttr2 |
Sant om antingen Uttr1 är sant eller Uttr2 är sant, men inte båda. |
Sammanfogning
Du använder sammanfogningsoperatorerna för att kombinera två textvärden till en sträng.
Operator |
Användning |
Beskrivning |
---|---|---|
& |
sträng1 & sträng2 |
Kombinerar två strängar till en sträng. |
+ |
sträng1 + sträng2 |
Kombinerar två strängar till en sträng och sprider null-värden. |
Special
Använd de särskilda operatorerna på det sätt som beskrivs i tabellen nedan.
Operator |
Beskrivning |
Mer information |
---|---|---|
Is Null or Is Not Null |
Avgör om ett värde är null eller inte null. |
|
Like "pattern" |
Matchar strängvärden med hjälp av jokerteckenoperatorerna ? och *. |
|
Between val1 And val2 |
Avgör om ett numeriskt värde eller datumvärde finns i ett intervall. |
|
In(string1,string2...) |
Avgör om ett strängvärde ingår i en uppsättning strängvärden. |
Konstanter
En konstant är ett känt värde som inte ändras och som du kan använda i ett uttryck. Det finns fyra vanliga konstanter i Access:
-
True anger att något är logiskt sant.
-
False anger att något är logiskt falskt.
-
Null anger att ett känt värde saknas.
-
"" (empty string) anger ett värde som man vet är tomt.
Konstanter kan användas som argument i en funktion och kan användas i ett uttryck som en del av ett villkor. Du kan till exempel använda konstanten tom sträng ("") som en del av ett villkor för en kolumn i en fråga för att beräkna fältvärden för kolumnen genom att ange följande som villkor: <>"". I det här exemplet är <> en operator och "" en konstant. När de används tillsammans anger de att identifieraren som de tillämpas på ska jämföras med en tom sträng. Det uttryck som blir resultatet är sant när identifierarens värde är något annat än en tom sträng.
Var försiktig när du använder konstanten Null. I de flesta fall blir det fel när Null används tillsammans med en jämförelseoperator. Om du vill jämföra ett värde med Null i ett uttryck bör du använda operatorn Is Null eller operatorn Is Not Null.
Värden
Du kan använda litteralvärden i uttrycken, till exempel talet 1,254 eller strängen "Ange ett tal mellan 1 och 10." Du kan också använda numeriska värden, som kan vara en serie med siffror, inklusive tecken och decimalkomma, om det behövs. Om inget tecken anges, antas värdet vara positivt. Om du vill att ett värde ska vara negativt skriver du ett minustecken (-). Du kan också använda matematisk notation. Det gör du genom att ta med "E" eller "e" och exponentens tecken (t.ex. 1,0E-6).
När du använder textsträngar placerar du dem inom citattecken, vilket säkerställer att de tolkas korrekt i Access. I vissa fall infogas citattecknen automatiskt. När du till exempel skriver text i ett uttryck för ett verifieringsuttryck eller för frågevillkor omsluts textsträngarna automatiskt med citattecken.
Om du till exempel skriver texten Paris visas "Paris" i uttrycket. Om du vill att ett uttryck ska skapa en sträng som verkligen omges av citattecken innesluter du antingen den kapslade strängen med apostrofer (') eller inom tre grupper av dubbla citattecken ("). Följande uttryck är till exempel likvärdiga:
Forms![Contacts]![City]. DefaultValue = ' "Paris" '
Forms![Contacts]![City].DefaultValue = " " "Paris" " "
Om du vill använda datum-/tidsvärden omsluter du värdena med nummertecken (#). Exempelvis är #7-3-17#, #7-mar-17# och #mar-7-2017# alla giltiga datum- och tidsvärden. När ett giltigt värde för datum-/tidsvärde påträffas som omges av #-tecken, behandlas värdet automatiskt som datatypen Datum/tid i Access.
Kapslingsgränsen för uttryck i en webbdatabas är 65
Uttryck som är kapslade mer än 65 nivåer ned fungerar inte i webbläsaren. Undvik därför den typen av uttryck i en Access-webbdatabas. Inga felmeddelanden visas men uttrycket fungerar inte.
Operatorerna &, AND och OR kan skapa fler kapslingsnivåer på servern som inte återspeglas på Access-klienten. Exempelvis är uttrycket "a" & "b" & "c" inte kapslat i Uttrycksverktyget, men i SharePoint blir det concatenate.Db("a", concatenate.Db("b", "c") ). Den här översättningen skapar en kapslingsnivå. Om du använder många &-, AND- eller OR-operatorer i följd i samma uttryck kan serverns kapslingsgräns på 65 överskridas, vilket betyder att uttrycket inte kommer att fungera i webbläsaren.