Kada koristite Microsoft Access, često morate raditi s vrijednostima koje se ne nalaze izravno u vašim podacima. Možda ćete, primjerice, poželjeti izračunati porez za narudžbu ili pak ukupnu vrijednost same narudžbe. Te vrijednosti možete izračunati pomoću izraza. Da biste koristili izraze, morate ih napisati koristeći pravilnu sintaksu. Sintaksa je skup pravila prema kojima se riječi i simboli u izrazu pravilno kombiniraju. U početku je izraze u programu Access malo teže pročitati. Uz dobro razumijevanje sintakse izraza i malo prakse, to će postati mnogo lakše.
Sadržaj članka
Pregled izraza
Izraz je kombinacija nekih od sljedećih elemenata ili pak svih njih: ugrađenih ili korisnički definiranih funkcija, identifikatora, operatora, vrijednosti i konstanti. Svaki izraz izračunava jednu vrijednost.
Sljedeći izraz, primjerice, sadrži sljedeće česte komponente:
=Sum([Purchase Price])*0.08
-
Sum() predstavlja ugrađenu funkciju
-
[Purchase Price] predstavlja identifikator
-
* predstavlja matematički operator
-
0.08 predstavlja konstantu
Ovaj se izraz može koristiti u tekstnom okviru u podnožju obrasca ili podnožju izvješća radi izračuna poreza za skupinu stavki.
Izrazi mogu biti puno složeniji ili jednostavniji od tog primjera. Primjerice, ovaj booleovski izraz sastoji se samo od operatora i konstante:
>0
Taj izraz vraća sljedeći rezultat:
-
True kad se uspoređuje s brojem većim od 0.
-
False kad se uspoređuje s brojem manjim od 0.
Taj izraz možete koristiti u svojstvu ValidationRule kontrole ili polja tablice da biste bili sigurni da se unose samo pozitivne vrijednosti. Izrazi se koriste na mnogim mjestima radi izračuna, upravljanja znakovima ili testiranja podataka. Tablice, upiti, obrasci, izvješća i makronaredbe sadrže svojstva koja prihvaćaju izraze. Izraze možete, primjerice, koristiti u svojstvima ControlSource i DefaultValue za kontrolu. Osim toga, možete ih koristiti i u svojstvu ValidationRule za polje tablice.
Komponente izraza
Da biste sastavili izraz, identifikatore kombinirate pomoću funkcija, operatora, konstanti i vrijednosti. Da bi izraz bio valjan, mora sadržavati barem jednu funkciju ili barem jedan identifikator, a može sadržavati i konstante ili operatore. Izraz možete koristiti i kao dio drugog izraza, obično kao argument funkcije. Taj se postupak zove ugniježđivanje izraza.
-
Identifikatori Općeniti je oblik sljedeći:
[Collection name]![Object name].[Property name]
Da bi identifikator bio jedinstven u kontekstu izraza, potrebno je odrediti samo dovoljan broj njegovih dijelova. Identifikatori često imaju oblik [Object name].
-
Funkcije Općeniti je oblik sljedeći:
Function(argument, argument)
Jedan od argumenata obično je identifikator ili izraz. Za neke funkcije nisu potrebni argumenti. Prije no što upotrijebite određenu funkciju, pregledajte njezinu sintaksu. Dodatne informacije potražite u članku Funkcije (po kategorijama).
-
Operatori Općeniti je oblik sljedeći:
Identifier operator identifier
Operator ne mora uvijek imati takav oblik, kao što je navedeno u odjeljku Operatori.
-
Konstante Općeniti je oblik sljedeći:
Identifier comparison_operator constant
-
Vrijednosti Vrijednosti se mogu pojaviti na mnogim mjestima u izrazu.
Objekti, zbirke i svojstava
Sve tablice, upiti, obrasci, izvješća i polja u bazi podataka programa Access pojedinačno se nazivaju objekti. Svaki objekt ima svoj naziv. Nekim je objektima naziv već dodijeljen, primjerice tablici Kontakti u bazi podataka stvorenoj pomoću predloška Kontakti u programu Microsoft Office Access. Kada stvorite novi objekt, dodijelite mu naziv.
Skup svih članova određene vrste objekta naziva se zbirka. Zbirka je, primjerice, skup svih tablica u bazi podataka. Neki objekti koji su članovi zbirke u vašoj bazi podataka mogu i sami biti zbirke koje sadrže druge objekte. Na primjer, objekt tablice zbirka je koja sadrži objekte polja.
Objekti imaju svojstva koja opisuju karakteristike objekta i omogućuju njihovu promjenu. Objekt upita, primjerice, ima svojstvo Zadani prikaz koje opisuje izgled upita prilikom pokretanja i omogućuje vam promjenu tog izgleda.
Na sljedećem su dijagramu prikazani odnosi između zbirki, objekata i svojstava:
|
3 Svojstvo 2 Objekt 1 Zbirka |
Identifikatori
Kada u izrazu koristite objekt, zbirku ili svojstvo, referencu na taj element stvarate pomoću identifikatora. Identifikator sadrži naziv samog elementa, kao i naziv elementa kojem pripada. Identifikator za polje, primjerice, sadrži naziv tog polja i naziv tablice kojoj ono pripada. Primjer takvog identifikatora glasi:
[Customers]![BirthDate]
U nekim je slučajevima identifikator sam naziv elementa. To vrijedi kada je naziv elementa jedinstven u kontekstu izraza koji stvarate. Ostatak identifikatora određuje se iz konteksta. Ako, primjerice, dizajnirate upit koji koristi samo jednu tablicu, nazivi polja funkcionirat će kao identifikatori jer nazivi polja u tablici moraju u toj tablici biti jedinstveni. Budući da koristite samo jednu tablicu, njezin se naziv može odrediti iz svakog identifikatora koji u upitu koristite radi referiranja na polje.
U drugim slučajevima morate biti eksplicitni o dijelovima identifikatora da bi referenca funkcionirala. To vrijedi kada identifikator nije jedinstven u kontekstu izraza. Kada postoji dvosmislenost, morate izričito označiti dovoljno dijelova identifikatora da bi bio jedinstven u kontekstu. Pretpostavimo, primjerice, da dizajnirate upit koji koristi tablicu pod nazivom Proizvodi i tablicu pod nazivom Narudžbe, a obje tablice imaju polje pod nazivom IDProizvoda. U tom slučaju identifikator koji koristite u upitu radi poziva na bilo koje polje IDProizvoda mora uz naziv polja uvrstiti i naziv tablice. Na primjer:
[Products]![ProductID]
Operatori identifikatora U identifikatoru možete koristiti sljedeća tri operatora:
-
Operator uskličnika (!)
-
Operator točke (.)
-
Operator uglatih zagrada ([ ])
Te operatore koristite tako da svaki dio identifikatora stavite u uglate zagrade, a zatim ih povežete pomoću operatora uskličnika ili točke. Identifikator polja s nazivom LastName u tablici Employees, primjerice, može se izraziti kao [Employees]![Last Name]. Operator uskličnika programu Access govori da slijedi objekt koji pripada zbirci koja je navedena prije operatora uskličnika. U ovom je slučaju [LastName] objekt polja koji pripada zbirci [Employees] koja je pak objekt tablice.
Unos uglatih zagrada oko identifikatora ili djelomičnog identifikatora nije uvijek nužan. Ako u identifikatoru nema razmaka ni drugih posebnih znakova, Access prilikom čitanja izraza automatski dodaje uglate zagrade. Međutim, preporučujemo da sami unosite zagrade – time ćete izbjeći pogreške, a zagrade će vam koristiti i kao vizualni podsjetnik da je određeni dio izraza identifikator.
Funkcije, operatori, konstante i vrijednosti
Da biste stvorili izraz, nisu dovoljni samo identifikatori – morate izvršiti i neku radnju. Da biste izvodili radnje u izrazu, koristite funkcije, operatore i konstante.
Funkcije
Funkcija je procedura koju možete upotrijebiti u izrazu. Neke funkcije, primjerice Date, ne zahtijevaju ulazne podatke da bi funkcionirale. Većina funkcija ipak zahtijeva ulazne podatke, odnosno argumente.
U primjeru s početka ovog članka funkcija DatePart koristi dva argumenta: argument intervala, koji sadrži vrijednost "yyyy", i argument datuma, koji sadrži vrijednost [Customers]![BirthDate]. Funkciji DatePart potrebna su najmanje dva argumenta (intervala i datuma), no može prihvatiti i do četiri argumenta.
Na sljedećem su popisu navedene uobičajene funkcije koje se koriste u izrazima. Kliknite vezu za pojedinu funkciju da biste saznali sintaksu koju morate za nju koristiti.
-
Funkcija Date koristi se za umetanje trenutnog datuma sustava u izraz. Obično se koristi u kombinaciji s funkcijom Format ili pak s identifikatorima polja za ona polja koja sadrže podatke o datumu/vremenu.
=Date()
-
Funkcija DatePart koristi se za utvrđivanje ili izdvajanje određenog dijela datuma; obično je to datum dobiven iz identifikatora polja, ali vrijednost datuma ponekad može vratiti i druga funkcija, primjerice funkcija Date.
DatePart ( "yyyy", Date())
-
Funkcija DateDiff koristi se za utvrđivanje razlike između dva datuma; obično između datuma dobivenog iz identifikatora polja i datuma dobivenog pomoću funkcije Date.
=DateDiff(“d”, Now(), [Orders].[ReceiveBefore])-10
-
Funkcija Format koristi se za primjenu oblikovanja na identifikator i rezultate neke druge funkcije.
Format([Date],"ww")=Format(Now(),"ww")-1
-
Funkcija IIf koristi se da bi se odredilo je li izraz istinit (true) ili neistinit (false) te da bi se u slučaju da je izraz istinit vratila jedna vrijednost, a u slučaju da je neistinit druga vrijednost.
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
-
Funkcija InStr koristi se za traženje položaja znaka ili znaka niz unutar drugog niza. Niz koji se pretražuje obično se dohvaća iz identifikatora polja.
InStr(1,[IPAddress],".")
-
Funkcije Left, Mid i Right koriste se za izdvajanje znakova iz polja, počevši od znaka na krajnjem lijevom položaju (Left), znaka na određenom položaju u sredini (Mid) ili znaka na krajnjem desnom položaju (Right). Te se funkcije obično koriste zajedno s funkcijom InStr. Niz iz kojeg funkcije izdvajaju znakove obično se dobiva iz identifikatora polja.
Left([ProductName], 1) Right([AssetCode], 2) Mid([Phone],2,3)
Popis funkcija potražite u članku Funkcije (poredane po kategoriji).
Operatori
Operator je riječ ili simbol koji označava specifičan aritmetički ili logički odnos između ostalih elemenata u izrazu. Operatori mogu biti:
-
aritmetički, primjerice znak plus (+)
-
operatori usporedbe, primjerice znak jednakosti (=)
-
logički, primjerice Not
-
operatori povezivanja, primjerice &
-
posebni operatori, primjerice Like
Operatori se obično koriste za prikaz odnosa između dvaju identifikatora. U sljedećim su tablicama opisani operatori koje možete koristiti u izrazima programa Access.
Aritmetički operatori
Aritmetičke operatore koristite za izračun vrijednosti pomoću dvaju ili više brojeva ili da biste promijenili predznak broja iz pozitivnog u negativni.
Operator |
Svrha |
Primjer |
---|---|---|
+ |
Zbrajanje dvaju brojeva. |
[Podzbroj]+[ProdPorez] |
- |
Traženje razlike između dvaju brojeva ili označavanje negativne vrijednosti broja. |
[Cijena]-[Popust] |
* |
Množenje dvaju brojeva. |
[Količina]*[Cijena] |
/ |
Dijeljenje prvog broja drugim. |
[UkupniZbroj]/[BrojArtikala] |
\ |
Zaokruživanje obaju brojeva na cijele brojeve, dijeljenje prvog broja drugim, a zatim skraćivanje rezultata na cijeli broj. |
[Prijavljeni]\[Sobe] |
Mod |
Dijeljenje prvog broja drugim, a zatim prikaz samo ostatka dijeljenja. |
[Prijavljeni] Mod [Sobe] |
^ |
Potenciranje broja na eksponent. |
Broj ^ Eksponent |
Operatori usporedbe
Operatore usporedbe koristite da biste usporedili vrijednosti i vratili rezultat koji je True, False ili Null (nepoznata vrijednost).
Operator |
Svrha |
---|---|
< |
Utvrđuje je li prva vrijednost manja od druge vrijednosti. |
<= |
Utvrđuje je li prva vrijednost manja od druge vrijednosti ili joj je pak jednaka. |
> |
Utvrđuje je li prva vrijednost veća od druge vrijednosti. |
>= |
Utvrđuje je li prva vrijednost veća od druge vrijednosti ili joj je pak jednaka. |
= |
Utvrđuje je li prva vrijednost jednaka drugoj vrijednosti. |
<> |
Utvrđuje je li prva vrijednost različita od druge vrijednosti. |
U svakom slučaju, ako je prva ili druga vrijednost Null, rezultat je također Null. Budući da Null predstavlja nepoznatu vrijednost, nepoznat je i rezultat bilo koje usporedbe s vrijednosti Null.
Logički operatori
Logičke operatore koristite za kombiniranje dvaju vrijednosti i vraćanje rezultata True, False ili Null. Logički operatori ponekad se nazivaju i Booleovi operatori.
Operator |
Namjena |
Opis |
---|---|---|
And |
Izraz1 And Izraz2 |
True kada su Izraz1 i Izraz2 istiniti. |
Or |
Izraz1 Or Izraz2 |
True ako je Izraz1 ili Izraz2 istinit. |
Eqv |
Izraz1 Eqv Izraz2 |
True kada su Izraz1 i Izraz2 istiniti ili kada su Izraz1 i Izraz2 neistiniti. |
Not |
Not Izraz |
True ako Izraz nije istinit. |
Xor |
Izraz1 Xor Izraz2 |
True ako je Izraz1 ili Izraz2 istinit, ali ne ako su oba istinita. |
Operatori povezivanja
Operatori povezivanja koriste se za objedinjavanje dvije tekstne vrijednosti u jedan niz.
Operator |
Namjena |
Opis |
---|---|---|
& |
niz1 & niz2 |
Spaja dva niza u jedan. |
+ |
niz1 + niz2 |
Spaja dva niza u jedan uz prijenos null vrijednosti. |
Posebni operatori
Posebne operatore koristite u skladu s opisima u sljedećoj tablici.
Operator |
Opis |
Dodatne informacije |
---|---|---|
Is Null or Is Not Null |
Određuje je li vrijednost Null ili nije Null. |
|
Like "pattern" |
Povezuje vrijednosti niza pomoću zamjenskih operatora ? i *. |
|
Between val1 And val2 |
Utvrđuje je li brojčana vrijednost ili vrijednost datuma unutar raspona. |
|
In(string1,string2...) |
Utvrđuje nalazi se vrijednost niza unutar skupa vrijednosti niza. |
Konstante
Konstanta je poznata vrijednost koji se ne mijenja i koju možete koristiti u izrazu. U programu Access najčešće se koriste četiri konstante:
-
True označava nešto što je logički istinito.
-
False označava nešto što je logički neistinito.
-
Null označava nedostatak poznate vrijednosti.
-
"" (empty string) označava vrijednost za koju je poznato da je prazna.
Konstante se mogu koristiti kao argumenti funkcije i mogu se koristiti u izrazu kao dio kriterija. Konstantu praznog niza ("") možete, primjerice, koristiti kao dio kriterija za stupac u upitu da biste procijenili vrijednosti polja za taj stupac tako da kao kriterij unesete sljedeće: <>"". U ovom primjeru <> operator, "" je konstanta. Koriste se zajedno, označavaju da se identifikator na koji se primjenjuju treba usporediti s praznim nizom. Izraz koji rezultira istinit je kada je vrijednost identifikatora nešto drugo osim praznog niza.
Budite oprezni prilikom korištenja konstante Null. Korištenje konstante Null zajedno s operatorom usporedbe u većini će slučajeva rezultirati pogreškom. Ako u izrazu vrijednost želite usporediti s konstantom Null, upotrijebite operator Is Null ili Is Not Null.
Vrijednosti
Možete koristiti doslovne vrijednosti u izrazima, primjerice broj 1254 ili niz "Unesite broj između 1 i 10". Možete koristiti i numeričke vrijednosti, koje mogu biti niz znamenki, uključujući predznak i decimalni zarez ako je potrebno. Ako nema predznaka, Access pretpostavlja da je vrijednost pozitivna. Da biste vrijednost učinili negativnom, uvrstite negativni predznak (-). Možete koristiti i znanstvenu notaciju. Da biste to učinili, uvrstite "E" ili "e" i znak eksponenta (primjerice 1,0E-6).
Kada koristite tekstne nizove, stavite ih u navodnike da bi ih Access ispravno protumačio. U nekim slučajevima Access sam stavlja navodnike. Kada, primjerice, upišete tekst u izrazu za pravilo provjere valjanosti ili kriterij upita, Access te tekstne nizove automatski stavlja u navodnike.
Ako, primjerice, upišete tekst Paris, Access u izrazu prikazuje "Pariz". Ako želite izrazom stvoriti niz u navodnicima, niz stavite u jednostruke (') navodnike ili u tri para dvostrukih (") navodnika. Sljedeći su primjeri izraza ekvivalentni:
Forms![Contacts]![City]. DefaultValue = ' "Paris" '
Forms![Contacts]![City].DefaultValue = " " "Paris" " "
Da biste koristili vrijednosti datuma/vremena, vrijednost stavite između znakova ljestvi (#). Primjeri #7-3-17#, #7-ožu-17# i #ožu-7-2017# svi predstavljaju valjane vrijednosti datuma/vremena. Kada Access naiđe na valjanu vrijednost datuma/vremena omeđenu znakovima #, on automatski tretira tu vrijednost kao da pripada vrsti podataka datum/vrijeme.
Ograničenje od 65 razina ugnježđivanja u aplikacijama ili web-bazama podataka
Izrazi ugniježđeni dublje od 65 razina neće funkcionirati u pregledniku, pa ne biste trebali koristiti takve izraze u web-bazi podataka programa Access. Nećete dobiti poruke o pogreškama – izraz jednostavno neće funkcionirati.
Korištenje operatora &, AND i OR može stvoriti dodatne razine ugnježđivanja na poslužitelju koje se ne odražavaju u klijentu programa Access. Izraz "a" & "b" & "c", primjerice, nije ugniježđen u sastavljaču izraza, ali u sustavu SharePoint pretvara se u concatenate.Db("a", concatenate.Db("b", "c") ). Tim se prijevodom stvara jedna razina ugnježđivanja. Ako u jednom izrazu koristite mnogo uzastopnih operatora &, AND ili OR, mogli biste premašiti ograničenje od 65 razina na poslužitelju, pa izraz tada više neće funkcionirati u pregledniku.