Kun käytät Microsoft Accessia, sinun on usein käsiteltävä arvoja, joita ei ole suoraan tiedoissasi. Oletetaan esimerkiksi, että haluat laskea tilauksen arvonlisäveron tai tilauksen kokonaisarvon. Voit laskea nämä arvot käyttämällä lausekkeita. Jotta voit käyttää lausekkeita, kirjoita ne käyttämällä oikeaa syntaksia. Syntaksi on joukko sääntöjä, joiden avulla lausekkeen sanat ja symbolit yhdistetään oikein. Accessin lausekkeita voi olla aluksi hieman vaikea lukea. Kun opettelet lausekkeiden syntaksin ja harjoittelet hiukan, tästä tulee paljon helpompaa.
Tämän artikkelin sisältö
Yleistä lausekkeista
Lauseke muodostuu joistakin tai kaikista seuraavista: sisäiset tai käyttäjän määrittämät funktiot, tunnisteet, operaattorit, arvot ja vakiot, jotka palauttavat tulokseksi yksittäisen arvon.
Esimerkiksi seuraava lauseke sisältää yleisiä osia:
=Sum([Purchase Price])*0.08
-
Sum() on sisäinen funktio
-
[Purchase Price] on tunniste
-
* on matemaattinen operaattori
-
0.08 on vakio.
Tätä lauseketta voidaan käyttää tekstiruudussa lomakkeen tai raportin alatunnisteessa tuoteryhmän arvonlisäveron laskemiseen.
Lausekkeet voivat olla paljon esimerkkiä monimutkaisempia tai yksinkertaisempia. Esimerkiksi seuraava totuusarvo koostuu pelkästä operaattorista ja vakiosta:
>0
Tämä lauseke palauttaa seuraavan:
-
True, kun sitä verrataan lukuun, joka on suurempi kuin 0.
-
False, kun sitä verrataan lukuun, joka on pienempi kuin 0.
Voit käyttää tätä lauseketta ohjausobjektin Kelpoisuussääntö-ominaisuudessa tai taulukon kentässä, kun haluat varmistaa, että annetaan vain positiivisia arvoja. Lausekkeita käytetään monissa paikoissa laskutoimitusten suorittamiseen, merkkien käsittelemiseen tai tietojen testaamiseen. Sekä taulukoissa, kyselyissä, lomakkeissa, raporteissa että makroissa on ominaisuuksia, joissa voi käyttää lauseketta. Voit käyttää lausekkeita esimerkiksi ohjausobjektin Ohjausobjektin lähde- ja Oletusarvo-ominaisuuksissa. Voit käyttää lausekkeita myös taulukon kentän Kelpoisuussääntö-ominaisuudessa.
Lausekkeiden osat
Lauseke luodaan yhdistämällä tunnisteita funktioiden, operaattoreiden, vakioiden ja arvojen avulla. Kelvollisessa lausekkeessa on oltava vähintään yksi funktio tai vähintään yksi tunniste, ja se voi sisältää myös vakioita tai operaattoreita. Voit käyttää lauseketta myös toisen lausekkeen osana, yleensä funktion argumenttina. Tätä kutsutaan lausekkeiden sisäkkäisyydeksi.
-
Tunnisteet Yleinen muoto on:
[Collection name]![Object name].[Property name]
Sinun on määritettävä riittävästi tunnisteen osia, jotta se on yksilöllinen lausekkeen kontekstissa. Tunniste voi usein olla myös muodossa [Object name].
-
Funktiot Yleinen muoto on:
Function(argument, argument)
Jokin argumenteista on yleensä tunniste tai lauseke. Jotkin funktiot eivät vaadi argumentteja. Ennen kuin käytät tiettyä funktiota, tarkista funktion syntaksi. Lisätietoja on artikkelissa Funktiot (järjestettyinä luokittain).
-
Operaattorit Yleinen muoto on:
Identifier operator identifier
Muotoon on joitakin poikkeuksia, jotka on kuvattu Operaattorit-osassa.
-
Vakiot Yleinen muoto on:
Identifier comparison_operator constant
-
Arvot Arvoja voi olla lausekkeen monissa kohdissa.
Objektit, kokoelmat ja ominaisuudet
Kaikkia Access-tietokannan taulukoita, kyselyitä, lomakkeita, raportteja ja kenttiä kutsutaan objekteiksi. Jokaisella objektilla on nimi. Joillekin objekteille on jo annettu nimi, kuten esimerkiksi Yhteystiedot-taulukolle tietokannassa, joka on luotu Microsoft Office Accessin Yhteystiedot-mallista. Kun luot uuden objektin, annat sille nimen.
Tietyntyyppisen objektin kaikkien jäsenten joukkoa kutsutaan kokoelmaksi. Esimerkiksi tietokannan kaikkien taulukoiden joukko on kokoelma. Jotkin objektit, jotka kuuluvat tietokannassa kokoelmaan, voivat myös olla kokoelmia, jotka sisältävät muita objekteja. Esimerkiksi taulukko-objekti on kokoelma, joka sisältää kenttäobjekteja.
Objekteilla on ominaisuudet, jotka kuvaavat objektin ominaispiirteet ja joiden avulla ominaispiirteitä voi muuttaa. Esimerkiksi kyselyobjektilla on Oletusnäkymä-ominaisuus, joka sekä kuvaa että antaa määrittää sen, miten kysely näkyy, kun se suoritetaan.
Seuraava kaavio kuvaa kokoelmien, objektien ja ominaisuuksien välisen suhteen:
|
3 Ominaisuus 2 Objekti 1 Kokoelma |
Tunnisteet
Kun käytät objektia, kokoelmaa tai ominaisuutta lausekkeessa, viittaat kyseiseen osaan käyttämällä tunnistetta. Tunniste sisältää määritettävän osan nimen ja sen osan nimen, johon se kuuluu. Esimerkiksi kentän tunniste sisältää kentän nimen ja sen taulukon nimen, johon kenttä kuuluu. Esimerkki tällaisesta tunnisteesta on seuraavassa:
[Customers]![BirthDate]
Joissakin tapauksissa pelkkä osan nimi toimii tunnisteena. Tämä koskee tilanteita, joissa osan nimi on yksilöllinen luotavan lausekkeen kontekstissa. Loput tunnisteesta saadaan kontekstista. Jos esimerkiksi suunnittelet kyselyä, joka käyttää vain yhtä taulukkoa, pelkät kenttien nimet toimivat tunnisteina, koska taulukon kenttien nimien on oltava yksilöllisiä kyseisessä taulukossa. Koska käytät vain yhtä taulukkoa, taulukon nimi päätellään tunnisteissa, joiden avulla viittaat kyselyssä kenttään.
Joskus tunnisteen osat on annettava erikseen, jotta viittaus toimii. Näin on toimittava, kun tunniste ei ole yksilöllinen lausekkeen kontekstissa. Jos moniselitteisyyttä ilmenee, sinun on annettava riittävästi tunnisteen osia, jotta tunniste on yksilöllinen kontekstissa. Oletetaan esimerkiksi, että suunnittelet kyselyä, jossa käytetään taulukkoa nimeltä Tuotteet ja taulukkoa nimeltä Tilaukset, ja kummassakin taulukossa on Tuotetunnus-kenttä. Tässä tapauksessa tunnisteen, jota käytät kyselyssä viittaamaan kumpaan tahansa Tuotetunnus-kenttään, on sisällettävä taulukon nimi kentän nimen lisäksi. Esimerkki:
[Products]![ProductID]
Tunnisteen operaattorit Tunnisteessa voi käyttää kolmea operaattoria:
-
huutomerkkioperaattori !)
-
pisteoperaattori (.)
-
hakasuljeoperaattori ([ ]).
Näitä operaattoreita käytetään ympäröimällä tunnisteen jokainen osa hakasulkeilla ja yhdistämällä ne sitten joko huutomerkki- tai pisteoperaattorilla. Esimerkiksi Työntekijät-taulukossa olevan Sukunimi-kentän tunniste voidaan ilmaista muodossa [Employees]![Last Name]. Huutomerkkioperaattori kertoo Accessille, että seuraavana tulee objekti, joka kuuluu huutomerkkioperaattoria edeltävään kokoelmaan. Tässä tapauksessa [Sukunimi] on kenttäobjekti, johon kuuluu kokoelmaan [Työntekijät], joka itsessään on taulukko-objekti.
Tarkkaan ottaen tunnisteen tai tunnisteen osan ympärille ei aina tarvitse kirjoittaa hakasulkeita. Jos tunnisteessa ei ole välilyöntejä eikä muita erikoismerkkejä, Access lisää sulkeet automaattisesti, kun se lukee lausekkeen. Sulkeiden kirjoittaminen on kuitenkin hyvä käytäntö. Se auttaa välttämään virheitä ja toimii myös visuaalisena merkkinä sille, että lausekkeen tietty osa on tunniste.
Funktiot, operaattorit, vakiot ja arvot
Jotta voit luoda lausekkeen, tarvitset muutakin kuin tunnisteita, koska sinun on suoritettava jonkinlainen toiminto. Lausekkeessa suoritetaan toimintoja käyttämällä funktioita, operaattoreita ja vakioita.
Funktiot
Funktio on toimenpide, jota voi käyttää lausekkeessa. Jotkin funktiot, kuten Date, eivät vaadi syötettä toimiakseen. Useimmat funktiot vaativat kuitenkin syötteitä, joita kutsutaan argumenteiksi.
Tämän artikkelin alussa olevassa esimerkissä DatePart-funktio käyttää kahta argumenttia: väliargumenttia, jonka arvo on "yyyy", ja päivämääräargumenttia, jonka arvo on [Customers]![BirthDate]. DatePart-funktio edellyttää vähintään näitä kahta argumenttia (väli ja päivämäärä), mutta siinä voi käyttää enintään neljää argumenttia.
Seuraavassa on lueteltu joitakin funktioita, joita käytetään usein lausekkeissa. Napsauttamalla kunkin funktion linkkiä saat lisätietoja syntaksista, jota kyseisen funktion kanssa käytetään.
-
Date-funktion avulla lausekkeeseen lisätään järjestelmän nykyinen päivämäärä. Sitä käytetään usein Format-funktion kanssa, ja sitä käytetään myös sellaisten kenttien tunnisteiden kanssa, jotka sisältävät päivämäärä- ja aikatietoja.
=Date()
-
DatePart-funktion avulla määritetään tai poimitaan päivämäärän osa, yleensä päivämäärä, joka on peräisin kentän tunnisteesta, mutta joskus päivämääräarvo, jonka palauttaa toinen funktio, esimerkiksi Date.
DatePart ( "yyyy", Date())
-
DateDiff-funktion avulla määritetään kahden päivämäärän välinen ero, yleensä kentän tunnisteesta peräisin olevan päivämäärän ja Date-funktion avulla saadun päivämäärän välillä.
=DateDiff(“d”, Now(), [Orders].[ReceiveBefore])-10
-
Format-funktion avulla tunnisteeseen ja toisen funktion tuloksiin voidaan lisätä muotoilu.
Format([Date],"ww")=Format(Now(),"ww")-1
-
IIf-funktion avulla voidaan arvioida, onko lausekkeen tulos tosi vai epätosi, ja palauttaa jonkin arvo, jos lausekkeen tulos on tosi, ja toinen arvo, jos lausekkeen tulos on epätosi.
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
-
InStr-funktion avulla haetaan merkin tai merkkijonon sijainti toisen merkkijonon sisällä. Haettu merkkijono on yleensä peräisin kentän tunnisteesta.
InStr(1,[IPAddress],".")
-
Left-, Mid- ja Right-funktioiden avulla voidaan poimia merkkejä merkkijonosta alkaen vasemmanpuoleisimmasta merkistä (Left), tietystä sijainnista keskellä (Mid) tai oikeanpuolimmaisesta merkistä (Right). Niitä käytetään usein InStr-funktion kanssa. Merkkijono, josta nämä funktiot poimivat merkkejä, saadaan yleensä kentän tunnisteesta.
Left([ProductName], 1) Right([AssetCode], 2) Mid([Phone],2,3)
Funktioiden luettelo on artikkelissa Funktiot (järjestettyinä luokittain).
Operaattorit
Operaattori on sana tai symboli, joka ilmaisee lausekkeen muiden osien välisen aritmeettisen tai loogisen suhteen. Operaattorit voivat olla seuraavanlaisia:
-
aritmeettisia, kuten plusmerkki (+)
-
vertailevia, kuten yhtäsuuruusmerkki (=)
-
loogisia, kuten Not.
-
ketjuttavia, kuten &.
-
erikoiskäyttöisiä, kuten Like.
Operaattoreita käytetään yleensä osoittamaan kahden tunnisteen välinen suhde. Seuraavissa taulukoissa kuvataan operaattorit, joita voi käyttää Accessin lausekkeissa.
Aritmeettiset
Aritmeettisia operaattoreita käytetään laskettaessa arvoa vähintään kahdesta luvusta tai vaihdettaessa luvun etumerkkiä positiivisesta negatiiviseksi.
Operaattori |
Käyttötarkoitus |
Esimerkki |
---|---|---|
+ |
Laskee yhteen kaksi lukua. |
[Välisumma]+[Arvonlisävero] |
- |
Laskee kahden luvun erotuksen tai ilmoittaa luvun negatiivisen arvon. |
[Hinta]-[Alennus] |
* |
Kertoo kaksi lukua. |
[Määrä]*[Hinta] |
/ |
Jakaa ensimmäisen luvun toisella luvulla. |
[Yhteensä]/[Nimikemäärä] |
\ |
Pyöristää molemmat luvut kokonaisluvuiksi ja jakaa sitten ensimmäisen luvun toisella luvulla. Katkaisee sen jälkeen tuloksen kokonaisluvuksi. |
[Ilmoittautuneet]\[Huoneet] |
Mod |
Jakaa ensimmäisen luvun toisella luvulla ja palauttaa vain jakojäännöksen. |
[Ilmoittautuneet] Mod [Huoneet] |
^ |
Korottaa luvun eksponentin potenssiin. |
Luku ^ Eksponentti |
Vertailevat
Vertailuoperaattoreiden avulla verrataan arvoja ja palautetaan tulos, joka on joko tosi, epätosi tai tyhjäarvo (tuntematon arvo).
Operaattori |
Käyttötarkoitus |
---|---|
< |
Määrittää, onko ensimmäinen arvo pienempi kuin toinen arvo. |
<= |
Määrittää, onko ensimmäinen arvo pienempi tai yhtä suuri kuin toinen arvo. |
> |
Määrittää, onko ensimmäinen arvo suurempi kuin toinen arvo. |
>= |
Määrittää, onko ensimmäinen arvo suurempi tai yhtä suuri kuin toinen arvo. |
= |
Määrittää, onko ensimmäinen arvo yhtä suuri kuin toinen arvo. |
<> |
Määrittää, onko ensimmäinen arvo eri suuri kuin toinen arvo. |
Kaikissa tapauksissa jos joko ensimmäinen arvo tai toinen arvo on Null, myös tulos on Null. Koska Null edustaa tuntematonta arvoa, kaikkien Null-arvon sisältävien vertailujen tulos on myös tuntematon.
Loogiset
Loogisilla operaattoreilla yhdistetään kaksi arvoa ja palautetaan joko tosi-, epätosi- tai tyhjäarvo-tulos. Loogisia operaattoreita voidaan kutsua myös totuusarvo-operaattoreiksi.
Operaattori |
Käyttö |
Kuvaus |
---|---|---|
And |
Lauseke1 And Lauseke2 |
Tosi, jos Lauseke1 ja Lauseke2 ovat tosia. |
Or |
Lauseke1 Or Lauseke2 |
Tosi, jos joko Lauseke1 tai Lauseke2 on tosi. |
Eqv |
Lauseke1 Eqv Lauseke2 |
Tosi, jos sekä Lauseke1 että Lauseke2 ovat tosia tai sekä Lauseke1 että Lauseke2 ovat epätosia. |
Not |
Not Lauseke |
Tosi, jos Lauseke ei ole tosi. |
Xor |
Lauseke1 Xor Lauseke2 |
Tosi, jos joko Lauseke1 on tosi tai Lauseke2 on tosi, mutta eivät molemmat. |
Ketjuttavat
Ketjutusoperaattoreilla voidaan yhdistää kaksi tekstiarvoa yhdeksi merkkijonoksi.
Operaattori |
Käyttö |
Kuvaus |
---|---|---|
& |
merkkijono1 & merkkijono2 |
Muodostaa yhden merkkijonon yhdistämällä kaksi merkkijonoa. |
+ |
merkkijono1 + merkkijono2 |
Muodostaa yhden merkkijonon yhdistämällä kaksi merkkijonoa ja välittää tyhjäarvoja. |
Erikoiskäyttöiset
Erikoisoperaattoreita käytetään seuraavassa taulukossa kuvatuilla tavoilla.
Operaattori |
Kuvaus |
Lisätietoja |
---|---|---|
Is Null or Is Not Null |
Määrittää, onko arvo tyhjäarvoinen vai ei tyhjäarvoinen. |
|
Like "pattern" |
Täsmää merkkijonoarvoja käyttämällä yleismerkkioperaattoreita ? ja *. |
|
Between val1 And val2 |
Määrittää, sisältyykö numeerinen arvo tai päivämääräarvo tiettyyn alueeseen. |
|
In(string1,string2...) |
Määrittää, sisältyykö merkkijonoarvo merkkijonoarvojen joukkoon. |
Vakiot
Vakio on tunnettu arvo, joka ei muutu ja jota voi käyttää lausekkeessa. Accessissa on neljä yleisesti käytettyä vakiota:
-
True Ilmaisee jonkin olevan loogisesti tosi.
-
False Ilmaisee jonkin olevan loogisesti epätosi.
-
Null Ilmaisee tunnetun arvon puuttumisen.
-
"" (empty string) Ilmaisee arvon, jonka tiedetään olevan tyhjä.
Vakioita voi käyttää funktion argumentteina, ja niitä voi käyttää lausekkeessa ehdon osana. Voit esimerkiksi käyttää tyhjän merkkijonon vakiota ("") sarakkeen ehdon osana kyselyssä kyseisen sarakkeen kenttäarvojen laskemiseen syöttämällä seuraavan ehdon: <>"". Tässä esimerkissä <> on operaattori ja "" on vakio. Kun niitä käytetään yhdessä, ne ilmaisevat, että tunnistetta, johon niitä käytetään, on verrattava tyhjään merkkijonoon. Tuloksena saatava lauseke on tosi, jos tunnisteen arvo on mikä tahansa muu kuin tyhjä merkkijono.
Ole varovainen, kun käytät Null-vakiota. Useimmissa tapauksissa Null-vakion käyttäminen vertailuoperaattorin kanssa aiheuttaa virheen. Jos haluat verrata arvoa Null-vakioon lausekkeessa, käytä Is Null- tai Is Not Null-operaattoria.
Arvot
Voit käyttää lausekkeissa literaaliarvoja, kuten lukua 1 254 tai merkkijonoa ”Anna arvo väliltä 1–10”. Numeeriset arvot voivat olla numeroiden sarjoja, jotka sisältävät tarvittaessa etumerkin ja desimaalipilkun. Jos etumerkkiä ei ole, Access olettaa arvon olevan positiivinen. Jos haluat arvosta negatiivisen, lisää miinusmerkki (-). Voit käyttää myös tieteellistä merkintätapaa. Lisää tällöin "E" tai "e" ja eksponentin etumerkki (esimerkiksi 1,0E-6).
Kun käytät tekstimerkkijonoja, kirjoita ne lainausmerkkeihin, jotta Access varmasti tulkitsee ne oikein. Joissakin tilanteissa Access lisää lainausmerkit puolestasi. Jos esimerkiksi kirjoitat tekstiä kelpoisuussäännön tai kyselyn ehtojen lausekkeeseen, Access ympäröi tekstimerkkijonot lainausmerkeillä automaattisesti.
Jos esimerkiksi kirjoitat tekstin Paris, Access näyttää lausekkeessa merkkijonon "Pariisi". Jos haluat lausekkeen tuottavan merkkijonon, joka on lainausmerkeissä, voit kirjoittaa sisäkkäisen merkkijonon joko heittomerkkien (') sisälle tai lainausmerkkien (") kolmen parin sisälle. Esimerkiksi seuraavat lausekkeet vastaavat toisiaan:
Forms![Contacts]![City]. DefaultValue = ' "Paris" '
Forms![Contacts]![City].DefaultValue = " " "Paris" " "
Jos haluat käyttää päivämäärä- ja aika-arvoja, kirjoita ne ristikkomerkkien (#) väliin. Esimerkiksi #3-7-17#, #7-Mar-17# ja #Mar-7-2017# ovat kelvollisia päivämäärä- ja aika-arvoja. Kun Access havaitsee kelvollisen, #-merkkien välissä olevan päivämäärä- ja aika-arvon, se pitää arvoa automaattisesti Pvm./klo-tietotyyppinä olevana arvona.
Sisäkkäisten lausekkeiden enimmäismäärä verkkotietokannassa on 65.
Lausekkeet, jotka on upotettu yli 65 tasoa syvälle, eivät toimi selaimessa. Tästä syystä niitä ei kannata käyttää Access-verkkotietokannoissa. Näyttöön ei tule virheilmoituksia – lauseke ei vain toimi.
Käyttämällä &-, AND- ja OR-operaattoreita voit lisätä palvelimeen sisäkkäisiä tasoja, jotka eivät näy Access-asiakassovelluksessa. Esimerkiksi lauseke "a" & "b" & "c" ei ole sisäkkäinen lausekkeenmuodostimessa, mutta SharePointissa siitä tulee concatenate.Db("a", concatenate.Db("b", "c") ). Tämä käännös luo yhden sisäkkäisyystason. Peräkkäisten &-, AND- tai OR-operaattoreiden käyttö yhdessä lausekkeessa saattaa ylittää palvelimen 65 sisäkkäisen tason rajoituksen, jolloin lauseke ei toimi selaimessa.