När du använder Microsoft Access behöver du ofta arbeta 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
- Komponenter i uttryck
- Objekt, samlingar och egenskaper
- Identifierare
- Funktioner, operatorer, konstanter och värden
- Kapslingsgränsen för uttryck i en webbdatabas är 65
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 booleska uttrycket består till exempel av bara en operator och en konstant:
>0
Det här uttrycket returnerar:
-
Trueom det jämförs med ett tal som är större än 0. -
Falseom 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 också använda ett uttryck som en del av ett annat uttryck – vanligtvis som ett argument för 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 har 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 identifierDet finns undantag från den här formen, vilket du kan se i avsnittet Operatorer.
Konstanter Den allmänna formen är:
Identifier comparison_operator constantVä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:
- Bangoperatorn (
!) - Punktoperatorn (
.) - Operatorn hakparenteser (
[ ])
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. En identifierare för ett fält med namnet Efternamn i en tabell med namnet Anställda kan till exempel 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. Det är dock bra att skriva 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 måste 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 ett värde av "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 bestämma eller extrahera en del av ett datum – vanligtvis 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 fastställa skillnaden mellan två datum – vanligtvis 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])-10Funktionen 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")-1Funktionen OOM används för att utvärdera ett uttryck som sant eller falskt och returnera sedan ett värde om uttrycket utvärderas som sant och ett annat värde om uttrycket utvärderas som falskt.
=IIf([CountryRegion]="Italy", "Italian", "Some other language")Funktionen SökSträng används för att söka efter positionen för ett tecken eller en 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, t.ex. plustecknet (
+). -
Jämförelse, t.ex. likhetstecknet (
=). -
Logisk, 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.
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. |
Om antingen det första värdet eller det andra värdet är Null, blir resultatet i alla fall också Null. Eftersom Null representerar ett okänt värde är resultatet av en jämförelse med Null också okänt.
Logisk
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 jokerteckenoperatorer ?och *. |
Operatorn SOM |
Between val1 And val2 |
Avgör om ett numeriskt värde eller datumvärde finns i ett intervall. | Operatorn Mellan...Och |
In(string1,string2...) |
Avgör om ett strängvärde ingår i en uppsättning strängvärden. | Operatorn I |
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:
-
Trueanger något som är logiskt sant. -
Falseanger något som är logiskt falskt. -
Nullanger att det saknas ett känt värde. -
"" (empty string)anger ett värde som är känt som 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 den tomma strängkonstanten ("") som en del av ett villkor för en kolumn i en fråga för att utvärdera fältvärdena 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 resulterar det i ett fel när du använder Null tillsammans med en jämförelseoperator. Om du vill jämföra ett värde Null med i ett uttryck använder du operatorn Is Null eller operatorn Is Not Null .
Värden
Du kan använda exakta värden, till exempel 1,254 eller strängen "Ange ett tal mellan 1 och 10." Du kan även använda numeriska värden, som kan vara en serie siffror, inklusive ett tecken eller och en decimal, om det behövs. Om inget tecken anges, antas värdet vara positivt. Om du vill göra ett värde negativt tar du med minustecknet (-). 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 Parisvisas "Paris" i uttrycket i Access. Om du vill att ett uttryck ska skapa en sträng som verkligen omges av citattecken omsluter du den kapslade strängen med enkla (') citattecken eller inom tre uppsättningar med 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 djupt fungerar inte i webbläsaren, så du bör inte använda sådana uttryck i en Access-webbdatabas. Du får inga felmeddelanden – uttrycket fungerar bara inte.
Användning av &, ANDoch OR operatorer kan skapa ytterligare kapslingsnivåer på servern som inte återspeglas i Access-klienten. Uttrycket "a" & "b" & "c" är till exempel inte kapslat i Uttrycksverktyget, men i SharePoint blir concatenate.Db("a", concatenate.Db("b", "c") )det . Den här översättningen skapar en kapslingsnivå. Om du använder många på varandra följande &operatorer ANDOR eller operatorer i ett enda uttryck kan du överskrida serverns kapslingsgräns på 65, och då fungerar inte uttrycket i webbläsaren.
Använda UttrycksverktygetIntroduktion till uttryckSkapa ett uttryckExempel på uttryck