Acest articol oferă multe exemple de expresii în Access. O expresie este o combinație de operatori matematici sau logici, constante, funcții, câmpuri de tabel, controale și proprietăți care este evaluată la o singură valoare. Puteți utiliza expresii în Access pentru a calcula valori, a valida date și a seta o valoare implicită.
În acest articol
Formulare și rapoarte
Tabelele din această secțiune oferă exemple de expresii care calculează o valoare cu ajutorul unui control amplasat într-un formular sau un raport. Pentru a crea un control calculat, introduceți o expresie în proprietatea ControlSource a controlului, nu într-un câmp de tabel sau o interogare.
Notă Puteți utiliza expresii într-un formular sau raport și atunci când realizați Evidențierea datelor prin formatarea condiționată.
Operațiuni text
Expresiile din tabelul următor utilizează operatorii & (ampersand) și + (plus) pentru a combina șiruri text, funcții încorporate pentru manipularea unui șir text sau a opera în alt mod pe text cu scopul de a crea un control calculat.
Expresie |
Rezultat |
---|---|
="N/A" |
Afișează Indisponibil. |
=[FirstName] & " " & [LastName] |
Afișează valorile care se găsesc în câmpurile de tabel denumite Prenume și Nume. În acest exemplu, operatorul & este utilizat pentru a combina câmpul Prenume, un caracter spațiu (încadrat între ghilimele) și câmpul Nume. |
=Left([ProductName], 1) |
Utilizează funcția Left pentru a afișa primul caracter al valorii unui câmp sau unui control denumit ProductName (NumeProdus). |
=Right([AssetCode], 2) |
Utilizează funcția Right pentru a afișa ultimele 2 caractere ale valorii unui câmp sau unui control denumit AssetCode (CodActiv). |
=Trim([Address]) |
Utilizează funcția Trim pentru a afișa valoarea controlului Address (Adresă), eliminând toate spațiile inițiale sau suplimentare. |
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) |
Utilizează funcția IIf pentru a afișa valorile controalelor City (Oraș) și PostalCode (CodPoștal) dacă valoarea din controlul Region (Regiune) este nulă; altfel, afișează valorile controalelor City (Oraș), Region (Regiune) și PostalCode (CodPoștal), separate prin spații. |
=[City] & (" " + [Region]) & " " & [PostalCode] |
Utilizează operatorul + și propagarea de valori nule pentru a afișa valorile controalelor Oraș și CodPoștal dacă valoarea din câmpul sau controlul Regiune este nulă; altfel, afișează valorile câmpurilor sau controalelor Oraș, Regiune și CodPoștal, separate prin spații. Propagarea de valori nule înseamnă că, dacă orice componentă a unei expresii este nulă, întreaga expresie este nulă. Operatorul + acceptă propagarea de valori nule; operatorul & nu o acceptă. |
Anteturi și subsoluri
Puteți utiliza proprietățile Pagină și Pagini pentru a afișa sau a imprima numerele de pagină în formulare sau rapoarte. Proprietățile Pagină și Pagini sunt disponibile numai în timpul imprimării sau al previzualizării înaintea imprimării, astfel încât să nu apară în foaia de proprietăți a formularului sau raportului. De obicei, puteți utiliza aceste proprietăți plasând o casetă text în secțiunea de antet sau de subsol a formularului sau raportului, apoi utilizând o expresie, cum ar fi cele afișate în tabelul următor.
Pentru mai multe informații despre utilizarea anteturilor și subsolurilor în formulare și rapoarte, consultați articolul Inserarea numerelor de pagină într-un formular sau raport.
Expresie |
Rezultat |
---|---|
=[Page] |
1 |
="Page " & [Page] |
Pagina 1 |
="Page " & [Page] & " of " & [Pages] |
Pagina 1 din 3 |
=[Page] & " of " & [Pages] & " Pages" |
1 din 3 pagini |
=[Page] & "/" & [Pages] & " Pages" |
1/3 pagini |
=[Country/region] & " - " & [Page] |
UK - 1 |
=Format([Page], "000") |
001 |
="Printed on: " & Date() |
Imprimat pe: 31.12.17 |
Operații aritmetice
Aveți posibilitatea să utilizați expresii pentru a aduna, scădea, înmulți și împărți valorile din două sau mai multe câmpuri sau controale. De asemenea, le puteți utiliza pentru a efectua operații aritmetice cu date. De exemplu, să presupunem că aveți un câmp de tabel Dată/Oră denumit DatăCerută. În câmp sau într-un control legat la acel câmp, expresia =[RequiredDate] - 2 returnează o valoare dată/oră egală cu două zile înainte de valoarea din câmpul DatăCerută.
Expresie |
Rezultat |
---|---|
=[Subtotal]+[Freight] |
Suma valorilor câmpurilor sau controalelor Subtotal și Freight (Transport). |
=[RequiredDate]-[ShippedDate] |
Diferența dintre valorile de dată ale câmpurilor sau controalelor RequiredDate (DatăCerută) și ShippedDate (DatăExpediere). |
=[Price]*1.06 |
Produsul dintre valoarea câmpului sau controlului Price (Preț) și 1,06 (adaugă 6 procente la valoarea prețului). |
=[Quantity]*[Price] |
Produsul valorilor din câmpurile sau controalele Quantity (Cantitate) și Price (Preț). |
=[EmployeeTotal]/[CountryRegionTotal] |
Câtul valorilor din câmpurile sau controalele EmployeeTotal (TotalAngajați) și CountryRegionTotal (TotalȚarăRegiune). |
Notă Atunci când utilizați un operator aritmetic (+, -, * și /) într-o expresie, iar valoarea unuia dintre controalele expresiei este nulă, rezultatul întregii expresii va fi, de asemenea, nul. Aceasta se numește propagare de valori nule. Dacă oricare dintre înregistrările unui control pe care îl utilizați în expresie are o valoare nulă, puteți evita propagarea de valori nule prin conversia valorii nule în zero, utilizând funcția Nz, de exemplu, =Nz([Subtotal])+Nz([Freight]).
Valori din alte controale
Uneori, aveți nevoie de o valoare care se află în altă parte, cum ar fi un câmp sau control dintr-un alt formular sau raport. Puteți utiliza o expresie pentru a returna valoarea dintr-un alt câmp sau control.
Următorul tabel listează exemple de expresii care pot fi utilizate în controale calculate din formulare.
Expresie |
Rezultat |
---|---|
=Forms![Orders]![OrderID] |
Valoarea controlului IDComandă din formularul Comenzi. |
=Forms![Orders]![Orders Subform].Form![OrderSubtotal] |
Valoarea din controlul SubtotalComandă din subformularul denumit Subformular Comenzi din formularul Comenzi. |
=Forms![Orders]![Orders Subform]![ProductID].Column(2) |
Valoarea celei de-a treia coloane din IDProdus, o casetă listă cu mai multe coloane din subformularul denumit Subformular Comenzi din formularul Comenzi. (Rețineți că 0 se referă la prima coloană, 1 la a doua coloană etc.) |
=Forms![Orders]![Orders Subform]![Price] * 1.06 |
Produsul dintre valoarea controlului Preț din subformularul denumit Subformular Comenzi din formularul Comenzi și 1,06 (adaugă 6 procente la valoarea controlului Preț). |
=Parent![OrderID] |
Valoarea controlului IDComandă din formularul principal sau părinte al subformularului curent. |
Expresiile din tabelul următor arată câteva modalități de a utiliza controale calculate în rapoarte. Expresiile fac referire la Proprietatea Raport.
Expresie |
Rezultat |
---|---|
=Report![Invoice]![OrderID] |
Valoarea controlului denumit „IDComandă” într-un raport denumit „Factură”. |
=Report![Summary]![Summary Subreport]![SalesTotal] |
Valoarea controlului TotalVânzări din subraportul denumit Subraport Rezumat al raportului Rezumat. |
=Parent![OrderID] |
Valoarea controlului OrderID (IDComandă) din raportul principal sau părinte al subraportului curent. |
Valori de contorizare, sume și medii
Puteți utiliza un tip de funcție denumit funcție agregată pentru a calcula valori pentru unul sau mai multe câmpuri sau controale. De exemplu, puteți calcula un total de grup pentru subsolul grupului dintr-un raport sau un subtotal de comandă pentru elementele de linie dintr-un formular. De asemenea, aveți posibilitatea să contorizați numărul de elemente din unul sau mai multe câmpuri sau să calculați o valoare medie.
Expresiile din următorul tabel arată câteva modalități de utilizare a funcțiilor precum Avg, Count și Sum.
Expresie |
Descriere |
---|---|
=Avg([Freight]) |
Utilizează funcția Avg pentru a afișa o medie a valorilor dintr-un câmp sau un control denumit „Freight” (Transport) dintr-un tabel. |
=Count([OrderID]) |
Utilizează funcția Count pentru a afișa numărul de înregistrări din controlul OrderID (IDComandă). |
=Sum([Sales]) |
Utilizează funcția Sum pentru a afișa suma valorilor controlului Sales (Vânzări). |
=Sum([Quantity]*[Price]) |
Utilizează funcția Sum pentru a afișa suma produsului valorilor din controalele Quantity (Cantitate) și Price (Preț). |
=[Sales]/Sum([Sales])*100 |
Afișează procentul de vânzări determinat prin împărțirea valorii controlului Sales (Vânzări) la suma tuturor valorilor controlului Sales (Vânzări). Dacă setați proprietatea Format a controlului la Procent, nu includeți *100 în expresie. |
Pentru mai multe informații despre utilizarea funcțiilor agregate și totalizarea valorilor din câmpuri și coloane, consultați articolele Însumarea datelor utilizând o interogare, Contorizarea datelor utilizând o interogare, Afișarea totalurilor de coloană într-o foaie de date utilizând un rând Totaluri și Afișarea totalurilor de coloană dintr-o foaie de date.
Funcții agregate SQL
Puteți să utilizați tipul de funcție denumit SQL sau funcție agregată de domeniu atunci când doriți să însumați sau să contorizați valori în mod selectiv. Un „domeniu” constă din unul sau mai multe câmpuri în unul sau mai multe tabele ori din unul sau mai multe controale în unul sau mai multe formulare sau rapoarte. De exemplu, aveți posibilitatea să potriviți valorile dintr-un câmp de tabel cu valorile dintr-un control de formular.
Expresie |
Descriere |
---|---|
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms("Suppliers")("[SupplierID]")) |
Utilizează funcția DLookup pentru a returna valoarea câmpului ContactName (NumePersoanăDeContact) din tabelul Furnizori acolo unde valoarea câmpului SupplierID (IDFurnizor) din tabel se potrivește cu valoarea controlului SupplierID (IDFurnizor) din formularul Suppliers (Furnizori). |
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms![New Suppliers]![SupplierID]) |
Utilizează funcția DLookup pentru a returna valoarea câmpului ContactName (NumePersoanăDeContact) din tabelul Furnizori acolo unde valoarea câmpului SupplierID (IDFurnizor) din tabel se potrivește cu valoarea controlului SupplierID (IDFurnizor) din formularul New Suppliers (Furnizori Noi). |
=DSum("[OrderAmount]", "[Orders]", "[CustomerID] = 'RATTC'") |
Utilizează funcția DSum pentru a returna suma totală a valorilor din câmpul OrderAmount (ValoareComandă) din tabelul Orders (Comenzi) acolo unde CustomerID (IDClient) este RATTC. |
=DCount("[Retired]","[Assets]","[Retired]=Yes") |
Utilizează funcția DCount pentru a returna numărul de valori Yes (Da) din câmpul Retired (Retrase) (un câmp Da/Nu) din tabelul Assets (Active). |
Operațiuni cu date
Urmărirea datelor și orelor este o activitate fundamentală pentru o bază de date. De exemplu, puteți calcula câte zile au trecut de la data facturării pentru a crește contul de creanțe. Aveți posibilitatea să formatați datele și orele în mai multe moduri, după cum se arată în următorul tabel.
Expresie |
Descriere |
---|---|
=Date() |
Utilizează funcția Date pentru a afișa data curentă în forma mm-dd-yy, unde mm este luna (1-12), dd este ziua (1-31), iar yy reprezintă ultimele două cifre ale anului (1980 până la 2099). |
=Format(Now(), "ww") |
Utilizează funcția Format pentru a afișa numărul săptămânii din an corespondente datei curente, unde ww reprezintă săptămânile de la 1 la 53. |
=DatePart("yyyy", [OrderDate]) |
Utilizează funcția DatePart pentru a afișa anul format din patru cifre din valoarea controlului OrderDate (DatăComandă). |
=DateAdd("y", -10, [PromisedDate]) |
Utilizează funcția DateAdd pentru a afișa o dată care este cu 10 zile înainte de valoarea controlului PromisedDate (DatăPromisă). |
=DateDiff("d", [OrderDate], [ShippedDate]) |
Utilizează funcția DateDiff pentru a afișa numărul de zile diferență între valorile controalelor OrderDate (DatăComandă) și ShippedDate (DatăExpediere). |
=[InvoiceDate] + 30 |
Utilizează operații aritmetice cu date pentru a calcula data de la 30 de zile după data din câmpul sau controlul InvoiceDate (DatăFacturare). |
Condiții cu doar două valori
Exemplele de expresii din următorul tabel utilizează funcția IIf pentru a returna una din două valori posibile. Funcția IIf poate avea trei argumente: Primul argument este o expresie care trebuie să returneze o valoare True sau False. Al doilea argument este valoarea de returnat dacă expresia este adevărată, iar al treilea argument este valoarea de returnat dacă expresia este falsă.
Expresie |
Descriere |
---|---|
=IIf([Confirmed] = "Yes", "Order Confirmed", "Order Not Confirmed") |
Utilizează funcția IIf (Immediate If) pentru a afișa mesajul „Order Confirmed” (Comandă confirmată) dacă valoarea controlului Confirmed (Confirmat) este Yes; altfel, afișează mesajul "Order Not Confirmed.". |
=IIf(IsNull([Country/region]), " ", [Country]) |
Utilizează funcțiile IIf și IsNull pentru a afișa un șir gol dacă valoarea din controlul Country/region (Țară/regiune) este nulă; altfel, afișează valoarea controlului Country/region (Țară/regiune). |
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) |
Utilizează funcțiile IIf și IsNull pentru a afișa valorile controalelor City (Oraș) și PostalCode (Cod Poștal) în cazul în care valoarea controlului Region (Regiune) este nulă; altfel, afișează valorile câmpurilor sau controalelor City (Oraș), Region (Regiune) și PostalCode (Cod Poștal). |
=IIf(IsNull([RequiredDate]) Or IsNull([ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) |
Utilizează funcțiile IIf și IsNull pentru a afișa mesajul „Check for a missing date” (Verifică dată lipsă) dacă rezultatul scăderii ShippedDate (DatăExpediere) din RequiredDate (DatăCerută) este nul; altfel, afișează diferența dintre valorile de dată din controalele RequiredDate (DatăCerută) și ShippedDate (DatăExpediere). |
Interogări și filtre
Această secțiune conține exemple de expresii pe care le puteți utiliza pentru a crea un câmp calculat într-o interogare sau pentru a furniza criterii pentru o interogare. Un câmp calculat este o coloană dintr-o interogare care rezultă dintr-o expresie. De exemplu, aveți posibilitatea să calculați o valoare, să combinați valori text cum ar fi numele și prenumele sau să formatați o parte dintr-o dată.
Puteți să utilizați criterii într-o interogare pentru a micșora numărul de înregistrări cu care lucrați. De exemplu, puteți utiliza operatorul Between pentru a oferi o dată de începere și de terminare și a limita rezultatele interogării la comenzile care au fost expediate între acele date.
Următoarele oferă exemple de expresii de utilizat în interogări.
Operațiuni text
Expresiile din tabelul următor utilizează operatorii & și + pentru a combina șiruri text, funcții încorporate pentru manipularea unui șir text sau a opera în alt mod pe text cu scopul de a crea un câmp calculat.
Expresie |
Descriere |
---|---|
FullName: [FirstName] & " " & [LastName] |
Creează un câmp denumit NumeComplet, care afișează valorile din câmpul Prenume și Nume, separate prin spațiu. |
Address2: [City] & " " & [Region] & " " & [PostalCode] |
Creează un câmp denumit Address2 (Adresă2), care afișează valorile din câmpurile City (Oraș), Region (Regiune) și PostalCode (CodPoștal), separate prin spații. |
ProductInitial: Left([ProductName], 1) |
Creează un câmp denumit InițialăProdus, apoi utilizează funcția Left pentru a afișa în câmpul InițialăProdus primul caracter al valorii din câmpul NumeProdus. |
TypeCode: Right([AssetCode], 2) |
Creează un câmp denumit TipCod, apoi utilizează funcția Right pentru a afișa ultimele două caractere ale valorilor din câmpul CodActive. |
AreaCode: Mid([Phone],2,3) |
Creează un câmp denumit CodZonal, apoi utilizează funcția Mid pentru a afișa cele trei caractere începând cu al doilea caracter al valorii din câmpul Telefon. |
ExtendedPrice: CCur([Order Details].[Unit Price]*[Quantity]*(1-[Discount])/100)*100 |
Denumește câmpul calculat ExtendedPrice (PrețDetaliat) și utilizează funcția CCur pentru a calcula totalurile elementelor de linie, cu o reducere aplicată. |
Operații aritmetice
Aveți posibilitatea să utilizați expresii pentru a aduna, scădea, înmulți și împărți valorile din două sau mai multe câmpuri sau controale. De asemenea, puteți efectua operații aritmetice cu date. De exemplu, să presupunem că aveți un câmp Dată/Oră denumit DatăCerută. Expresia =[RequiredDate] - 2 returnează o valoare Dată/Oră egală cu două zile înainte de valoarea din câmpul DatăCerută.
Expresie |
Descriere |
---|---|
PrimeFreight: [Freight] * 1.1 |
Creează un câmp denumit TransportInițial, apoi afișează costurile de transport plus 10 la sută în câmp. |
OrderAmount: [Quantity] * [UnitPrice] |
Creează un câmp denumit VolumComandă, apoi afișează produsul valorilor din câmpurile Cantitate și PrețUnitar. |
LeadTime: [RequiredDate] - [ShippedDate] |
Creează un câmp denumit TimpDeProcesare, apoi afișează diferența dintre valorile câmpurilor DatăCerută și DatăExpediere. |
TotalStock: [UnitsInStock]+[UnitsOnOrder] |
Creează un câmp denumit TotalStoc, apoi afișează suma valorilor din câmpurile UnitățiStoc și UnitățiComandă. |
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 |
Creează un câmp denumit ProcentTransport, apoi afișează procentul costurilor de transport din fiecare subtotal. Această expresie utilizează funcția Sum pentru a totaliza valorile din câmpul Transport, apoi împarte acele valori la suma valorilor din câmpul Subtotal. Pentru a utiliza această expresie, trebuie să efectuați conversia interogării de selectare într-o interogare de tip Totaluri, deoarece trebuie să utilizați rândul Total în grila de proiectare și să setați celula Total pentru acest câmp la Expresie. Pentru mai multe informații despre crearea unei interogări de tip Totaluri, consultați articolul Însumarea datelor utilizând o interogare. Dacă setați proprietatea Format a câmpului la Procent, nu includeți *100. |
Pentru mai multe informații despre utilizarea funcțiilor agregate și totalizarea valorilor din câmpuri și coloane, consultați articolele Însumarea datelor utilizând o interogare, Contorizarea datelor utilizând o interogare, Afișarea totalurilor de coloană într-o foaie de date utilizând un rând Totaluri și Afișarea totalurilor de coloană dintr-o foaie de date.
Operațiuni cu date
Aproape toate bazele de date stochează și urmăresc date și ore. Puteți lucra cu date și ore în Access setând câmpurile dată și oră din tabele la tipul de date Dată/Oră. Access poate efectua calcule aritmetice cu date. De exemplu, puteți calcula câte zile au trecut de la data facturării pentru a crește contul de creanțe.
Expresie |
Descriere |
---|---|
LagTime: DateDiff("d", [OrderDate], [ShippedDate]) |
Creează un câmp denumit DiferențăTimp, apoi utilizează funcția DateDiff pentru a afișa numărul de zile între data comenzii și data de expediere. |
YearHired: DatePart("yyyy",[HireDate]) |
Creează un câmp denumit YearHired (AnAngajare), apoi utilizează funcția DatePart pentru a afișa anul de angajare al fiecărui angajat. |
MinusThirty: Date( )- 30 |
Creează un câmp denumit MinusThirty (MinusTreizeci), apoi utilizează funcția Date pentru a afișa data cu 30 de zile înaintea datei curente. |
Funcții agregate SQL
Expresiile din următorul tabel utilizează funcții SQL (Structured Query Language) care sintetizează sau calculează date. Adesea, aceste funcții (de exemplu, Sum, Count și Avg) sunt denumite funcții agregate.
Pe lângă funcțiile agregate, Access furnizează de asemenea funcții agregate „de domeniu”, care se utilizează pentru însumarea sau contorizarea valorilor în mod selectiv. De exemplu, puteți să contorizați numai valorile dintr-un anumit interval sau să căutați o valoare din alt tabel. Setul de funcții agregate de domeniu include funcția DSum, funcția DCount și funcția DAvg.
Pentru a calcula totaluri, va fi deseori necesar să creați o interogare de totaluri. De exemplu, pentru a sintetiza pe grupuri, utilizați o interogare Totaluri. Pentru a activa o interogare Totaluri din grila de proiectare a interogării, faceți clic pe Totaluri în meniul Vizualizare.
Expresie |
Descriere |
---|---|
RowCount: Count(*) |
Creează un câmp denumit ContorRând, apoi utilizează funcția Count pentru a contoriza numărul de înregistrări dintr-o interogare, inclusiv înregistrări cu câmpuri nule (necompletate). |
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 |
Creează un câmp denumit ProcentTransport, apoi calculează procentul costurilor de expediere din fiecare subtotal prin împărțirea sumei valorilor din câmpul Transport la suma valorilor din câmpul Subtotal. (Acest exemplu utilizează funcția Sum.) Această expresie trebuie utilizată cu o interogare Totaluri. Dacă setați proprietatea Format a câmpului la Procent, nu includeți *100. Pentru mai multe informații despre crearea unei interogări Totaluri, consultați articolul Însumarea datelor utilizând o interogare. |
AverageFreight: DAvg("[Freight]", "[Orders]") |
Creează un câmp denumit MedieTransport, apoi utilizează funcția DAvg pentru a calcula media de transport pentru toate comenzile dintr-o interogare de tip Totaluri. |
Câmpuri cu date lipsă
Expresiile afișate aici se utilizează cu câmpuri care pot avea informații lipsă, cum ar fi cele care conțin valori nule (necunoscute sau nedefinite). Valorile nule sunt întâlnite frecvent, de exemplu un preț necunoscut pentru un produs nou sau o valoare pe care un coleg a uitat să o adauge la o comandă. Capacitatea de a găsi și a procesa valori nule poate fi un aspect critic al operațiunilor cu baze de date, iar expresiile din următorul tabel demonstrează câteva modalități obișnuite de a gestiona valorile nule.
Expresie |
Descriere |
---|---|
CurrentCountryRegion: IIf(IsNull([CountryRegion]), " ", [CountryRegion]) |
Creează un câmp denumit ȚarăRegiuneCurentă, apoi utilizează funcțiile IIf și IsNull pentru a afișa un șir gol în acel câmp atunci când câmpul ȚarăRegiune conține o valoare nulă; altfel, afișează conținutul câmpului ȚarăRegiune. |
LeadTime: IIf(IsNull([RequiredDate] - [ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) |
Creează un câmp denumit TimpDeProcesare, apoi utilizează funcțiile IIf și IsNull pentru a afișa mesajul "Verifică dată lipsă" în cazul în care valoarea din câmpul DatăCerută sau DatăExpediere este nulă; altfel, afișează diferența de dată. |
SixMonthSales: Nz([Qtr1Sales]) + Nz([Qtr2Sales]) |
Creează un câmp denumit VânzăriȘaseLuni, apoi afișează totalul valorilor din câmpurile VânzăriTrim1 și VânzăriTrim2 utilizând mai întâi funcția Nz pentru a efectua conversia oricăror valori nule la zero. |
Câmpuri calculate cu subinterogări
Puteți utiliza o interogare imbricată, denumită și subinterogare, pentru a crea un câmp calculat. Expresia din următorul tabel este un exemplu de câmp calculat care rezultă dintr-o subinterogare.
Expresie |
Descriere |
---|---|
Cat: (SELECT [CategoryName] FROM [Categories] WHERE [Products].[CategoryID]=[Categories].[CategoryID]) |
Creează un câmp denumit Cat, apoi afișează NumeCategorie, dacă IDCategorie din tabelul Categorii este identic cu IDCategorie din tabelul Produse. |
Potrivirea cu valori text
Exemplele de expresii din acest tabel demonstrează criterii pentru găsirea valorilor text parțiale sau integrale.
Câmp |
Expresie |
Descriere |
---|---|---|
ShipCity |
"London" |
Afișează comenzile expediate în Londra. |
OrașExpediere |
"London" Or "Hedge End" |
Utilizează operatorul Or pentru a afișa comenzile expediate către Londra sau Hedge End. |
ȚarăRegiuneExpediere |
In("Canada", "UK") |
Utilizează operatorul In pentru a afișa comenzile expediate în Canada sau Regatul Unit. |
ȚarăRegiuneExpediere |
Not "USA" |
Utilizează operatorul Not pentru a afișa comenzile expediate în țări/regiuni diferite de SUA. |
NumeProdus |
Not Like "C*" |
Utilizează operatorul Not și caracterul wildcard * pentru a afișa produse ale căror nume nu încep cu C. |
NumeFirmă |
>="N" |
Afișează comenzile expediate către firmele ale căror nume încep cu litere de la N la Z. |
CodProdus |
Right([ProductCode], 2)="99" |
Utilizează funcția Right pentru a afișa comenzile cu valori CodProdus care se termină în 99. |
NumeLivrare |
Like "S*" |
Afișează comenzile expediate către clienți ale căror nume încep cu litera S. |
Potrivirea cu criteriile de dată
Expresiile din următorul tabel demonstrează utilizarea datelor și funcțiilor asociate în expresiile criteriu. Pentru mai multe informații despre introducerea și utilizarea valorilor de dată, consultați articolul Formatarea unui câmp de dată și de oră.
Câmp |
Expresie |
Descriere |
---|---|---|
DatăLivrare |
#2/2/2017# |
Afișează comenzile expediate în data de 2 februarie 2017. |
DatăLivrare |
Date() |
Afișează comenzile expediate astăzi. |
DatăSolicitată |
Between Date( ) And DateAdd("m", 3, Date( )) |
Utilizează operatorul Between...And și funcțiile DateAdd și Date pentru a afișa comenzile cerute pentru următoarele trei luni, începând cu data de astăzi. |
DatăComandă |
< Date( ) - 30 |
Utilizează funcția Date pentru a afișa comenzile mai vechi de 30 de zile. |
DatăComandă |
Year([OrderDate])=2017 |
Utilizează funcția Year pentru a afișa comenzile cu datele de comandă în 2017. |
DatăComandă |
DatePart("q", [OrderDate])=4 |
Utilizează funcția DatePart pentru a afișa comenzile pentru al patrulea trimestru calendaristic. |
DatăComandă |
DateSerial(Year ([OrderDate]), Month([OrderDate])+1, 1)-1 |
Utilizează funcțiile DateSerial, Year și Month pentru a afișa comenzile pentru ultima zi a fiecărei luni. |
DatăComandă |
Year([OrderDate])= Year(Now()) And Month([OrderDate])= Month(Now()) |
Utilizează funcțiile Year și Month și operatorul And pentru a afișa comenzile pentru anul și luna curente. |
DatăLivrare |
Between #1/5/2017# And #1/10/2017# |
Utilizează operatorul Between...And pentru a afișa comenzile expediate nu mai devreme de 5 ianuarie 2017 și nu mai târziu de 10 ianuarie 2017. |
DatăSolicitată |
Between Date( ) And DateAdd("M", 3, Date( )) |
Utilizează operatorul Between...And pentru a afișa comenzile cerute pentru următoarele trei luni începând de astăzi. |
DataNașterii |
Month([BirthDate])=Month(Date()) |
Utilizează funcțiile Month și Date pentru a afișa angajații a căror zi de naștere este în această lună. |
Găsiți datele care lipsesc
Expresiile din următorul tabel funcționează cu câmpuri care pot avea informații lipsă — acele câmpuri care pot conține o valoare nulă sau un șir de lungime zero. O valoare nulă reprezintă lipsa de informații; ea nu reprezintă o valoare zero sau orice fel de valoare. Access acceptă ideea de informații lipsă deoarece conceptul este vital pentru integritatea unei baze de date. În lumea reală, se întâmplă deseori să lipsească informații, chiar dacă acest lucru este numai temporar (de exemplu, un preț nestabilit încă pentru un produs nou). De aceea, o bază de date care modelează o entitate din lumea reală, cum ar fi o afacere, trebuie să fie capabilă să înregistreze informații care lipsesc. Puteți să utilizați funcția IsNull pentru a determina dacă un câmp sau control conține o valoare nulă și să utilizați funcția Nz pentru a efectua conversia unei valori nule la zero.
Câmp |
Expresie |
Descriere |
---|---|---|
RegiuneLivrare |
Is Null |
Afișează comenzile pentru clienții al căror câmp RegiuneExpediere este nul (lipsește). |
RegiuneLivrare |
Is Not Null |
Afișează comenzile pentru clienții al căror câmp RegiuneExpediere conține o valoare. |
Fax |
"" |
Afișează comenzile pentru clienții care nu au un aparat fax, indicate printr-o valoare șir de lungime zero în câmpul Fax în loc de o valoare nulă (lipsă). |
Potrivirea modelelor de înregistrări cu Like
Operatorul Like oferă un grad mare de flexibilitate atunci când încercați să găsiți rânduri care au caracteristici comune, deoarece aveți posibilitatea să utilizați operatorul Like cu caractere wildcard și să definiți modele pe care Access să le găsească. De exemplu, caracterul wildcard * (asterisc) găsește o secvență de caractere de orice tip, ușurând procesul de găsire a tuturor numelor care încep cu o anumită literă. De exemplu, utilizați expresia Like "S*" pentru a găsi toate numele care încep cu litera S. Pentru mai multe informații, consultați articolul Operatorul Like.
Câmp |
Expresie |
Descriere |
---|---|---|
NumeLivrare |
Like "S*" |
Găsește toate înregistrările în câmpul NumeDestinatarComandă care încep cu litera S. |
NumeDestinatarComandă |
Like "*Imports" |
Găsește toate înregistrările în câmpul NumeDestinatarComandă care se termină cu cuvântul „Importuri”. |
NumeLivrare |
Like "[A-D]*" |
Găsește toate înregistrările în câmpul NumeDestinatarComandă care încep cu literele A, B, C sau D. |
NumeLivrare |
Like "*ar*" |
Găsește toate înregistrările în câmpul NumeDestinatarComandă care încep cu secvența de litere „ar”. |
NumeDestinatarComandă |
Like "Maison Dewe?" |
Găsește toate înregistrările din câmpul NumeDestinatarComandă care includ „Maison” în prima parte a valorii și un șir de cinci litere, din care primele patru sunt „Dewe”, iar ultima este necunoscută. |
NumeDestinatarComandă |
Not Like "A*" |
Găsește toate înregistrările din câmpul ShipName (NumeDestinatarComandă) care nu încep cu litera A. |
Potrivirea rândurilor cu agregate SQL
Puteți să utilizați o funcție SQL sau o funcție agregată de domeniu atunci când aveți nevoie să însumați valori, să le contorizați sau să calculați medii ale acestora în mod selectiv. De exemplu, atunci când doriți să contorizați valorile care se încadrează într-un anumit interval sau care se evaluează la Da. Alteori, este posibil să fie nevoie să căutați o valoare din alt tabel pentru a o afișa. Exemplele de expresii din următorul tabel utilizează funcțiile agregate de domeniu pentru a efectua calculul pentru un set de valori și pentru a utiliza rezultatul drept criteriu de interogare.
Câmp |
Expresie |
Descriere |
---|---|---|
Transport |
> (DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders")) |
Utilizează funcțiile DStDev și DAvg pentru a afișa toate comenzile pentru care costul de transport s-a ridicat deasupra mediei plus deviația standard pentru costul de transport. |
Quantity |
> DAvg("[Quantity]", "[Order Details]") |
Utilizează funcția DAvg pentru a afișa produsele comandate în cantități peste cantitatea medie de comandă. |
Potrivirea câmpurilor cu subinterogări
Puteți să utilizați o subinterogare, denumită și interogare imbricată, pentru a calcula o valoare de utilizat ca criteriu. Exemplele de expresii din următorul tabel găsesc rândurile pe baza rezultatelor returnate de o subinterogare.
Câmp |
Expresie |
Afișează |
---|---|---|
PrețUnitar |
(SELECT [UnitPrice] FROM [Products] WHERE [ProductName] = "Aniseed Syrup") |
Produse al căror preț este același cu prețul Siropului de anason. |
PrețUnitar |
>(SELECT AVG([UnitPrice]) FROM [Products]) |
Produse cu prețul unitar peste medie. |
Salariu |
> ALL (SELECT [Salary] FROM [Employees] WHERE ([Title] LIKE "*Manager*") OR ([Title] LIKE "*Vice President*")) |
Salariul fiecărui reprezentant de vânzări al cărui salariu este mai mare decât al tuturor angajaților care au „Manager” sau „Vicepreședinte” în titlul lor. |
TotalComandă: [PrețUnitar] * [Cantitate] |
> (SELECT AVG([UnitPrice] * [Quantity]) FROM [Order Details]) |
Comenzi cu totaluri mai mari decât valoarea medie a comenzilor. |
Interogările de actualizare
Puteți să utilizați interogări de actualizare pentru a modifica datele din unul sau mai multe câmpuri existente într-o bază de date. De exemplu, aveți posibilitatea să înlocuiți valori sau să le ștergeți complet. Acest tabel demonstrează arată câteva modalități de utilizare a expresiilor în interogările de actualizare. Puteți să utilizați aceste expresii în rândul Actualizare la din grila de proiectare a interogării pentru câmpul pe care doriți să-l actualizați.
Pentru mai multe informații despre crearea interogărilor de actualizare, consultați articolul Crearea și rularea unei interogări de actualizare.
Câmp |
Expresie |
Rezultat |
---|---|---|
Titlu |
"Salesperson" |
Modifică valoarea text la Vânzător |
PornireProiect |
#8/10/17# |
Modifică o valoare de dată în 10 august 2017. |
Retras |
Yes |
Modifică o valoare Nu dintr-un câmp Da/Nu în Da. |
NumărComponentă |
"PN" & [PartNumber] |
Adaugă NC la începutul fiecărui număr specificat de componentă. |
TotalElementLinie |
[UnitPrice] * [Quantity] |
Calculează produsul dintre PrețUnitar și Cantitate. |
Transport |
[Freight] * 1.5 |
Mărește cheltuielile de transport cu 50 de procente. |
Vânzări |
DSum("[Quantity] * [UnitPrice]", "Order Details", "[ProductID]=" & [ProductID]) |
Acolo unde valorile IDProdus din tabelul curent se potrivesc cu valorile IDProdus din tabelul Detalii Comandă, actualizează totalul de vânzări pe baza produsului câmpurilor Cantitate și PrețUnitar. |
CodPoștalLivrare |
Right([ShipPostalCode], 5) |
Trunchiază caracterele din partea stângă, lăsând primele 5 caractere din dreapta. |
PrețUnitar |
Nz([UnitPrice]) |
Modifică o valoare nulă (nedefinită sau necunoscută) la (0) în câmpul UnitPrice (PrețUnitar). |
Instrucțiunile SQL
Structured Query Language sau SQL, este limbajul de interogări utilizat de Access. Fiecare interogare pe care o creați în vizualizarea Proiectare poate fi exprimată și prin utilizarea SQL. Pentru a vedea instrucțiunea SQL pentru orice interogare, faceți clic pe Vizualizare SQL în meniul Vizualizare. Următorul tabel afișează exemple de instrucțiuni SQL care utilizează o expresie.
Instrucțiuni SQL care utilizează o expresie |
Rezultat |
---|---|
SELECT [FirstName],[LastName] FROM [Employees] WHERE [LastName]="Danseglio"; |
Afișează valorile din câmpurile FirstName (Prenume) și LastName (NumeFamilie) pentru angajații al căror nume de familie este Popescu. |
SELECT [ProductID],[ProductName] FROM [Products] WHERE [CategoryID]=Forms![New Products]![CategoryID]; |
Afișează valorile din câmpurile IDProdus și NumeProdus din tabelul Produse pentru înregistrările în care valoarea IDCategorie care se potrivește cu valoarea IDCategorie specificată într-un formular deschis Produse noi. |
SELECT Avg([ExtendedPrice]) AS [Average Extended Price] FROM [Order Details Extended] WHERE [ExtendedPrice]>1000; |
Calculează prețul detaliat mediu pentru comenzi pentru care valoarea câmpului PrețDetaliat este mai mare de 1000 și îl afișează într-un câmp denumit Preț detaliat mediu. |
SELECT [CategoryID], Count([ProductID]) AS [CountOfProductID] FROM [Products] GROUP BY [CategoryID] HAVING Count([ProductID])>10; |
Într-un câmp denumit IDNumărătoareProduse, afișează numărul total de produse pentru categoriile cu mai mult de 10 produse. |
Expresii tabel
Cele mai comune două moduri de a utiliza expresii în tabele sunt atribuirea unei valori implicite și crearea unei reguli de validare.
Valori implicite de câmp
Când proiectați o bază de date, poate fi necesar să atribuiți o valoare implicită unui câmp sau control. Access furnizează valoarea implicită atunci când se creează o înregistrare nouă care conține câmpul sau un obiect care conține controlul. Expresiile din următorul tabel reprezintă exemple de valori implicite pentru un câmp sau control. Dacă un control este legat la un câmp din tabel și câmpul are o valoare implicită, valoarea implicită a controlului are prioritate.
Câmp |
Expresie |
Valoare implicită câmp |
---|---|---|
Quantity |
1 |
1 |
Regiune |
"MT" |
MT |
Regiune |
"New York, N.Y." |
New York, N.Y. (Rețineți că trebuie să încadrați valoarea între ghilimele dacă există semne de punctuație.) |
Fax |
"" |
Un șir de lungime zero pentru a indica faptul că, în mod implicit, câmpul ar trebui să fie gol în loc să conțină o valoare nulă |
Data comenzii |
Date( ) |
Data de astăzi |
DatăScadentă |
Date() + 60 |
Data de peste 60 de zile începând cu ziua de azi |
Regulile de validare a câmpurilor
Puteți să creați o regulă de validare pentru un câmp sau control utilizând o expresie. Access impune apoi regula atunci când se introduc date în câmp sau control. Pentru a crea o regulă de validare, modificați proprietatea RegulăValidare a câmpului sau controlului. De asemenea, ar trebui să luați în considerare setarea proprietății TextValidare, care conține textul pe care Access îl afișează când se încalcă o regulă de validare. Dacă nu setați proprietatea TextValidare, Access afișează un mesaj implicit de eroare.
Exemplele din următorul tabel demonstrează utilizarea expresiilor de reguli de validare pentru proprietatea RegulăValidare și textul asociat pentru proprietatea TextValidare.
Proprietatea RegulăValidare |
Proprietatea TextValidare |
---|---|
<> 0 |
Introduceți o valoare diferită de zero. |
0 Or > 100 |
Valoarea trebuie să fie 0 sau mai mare decât 100. |
Like "K???" |
Valoarea trebuie să aibă patru caractere și să înceapă cu litera K. |
< #1/1/2017# |
Introduceți o dată anterioară datei de 01.01.2017. |
>= #1/1/2017# And < #1/1/2008# |
Data trebuie să fie în 2017. |
Pentru mai multe informații despre validarea datelor, consultați articolul Crearea unei reguli de validare pentru validarea datelor dintr-un câmp.
Expresii de tip macrocomenzi
În unele cazuri, veți dori să efectuați o acțiune sau o serie de acțiuni într-o macrocomandă numai dacă este adevărată o anumită condiție. De exemplu, să presupunem că doriți ca o acțiune să ruleze numai atunci când valoarea din caseta text Contor este 10. Utilizați o expresie pentru a defini condiția într-un bloc If:
[Counter]=10
La fel ca în cazul proprietății ValidationRule , expresia dintr-un bloc If este o expresie condițională. Ea trebuie să aibă ca rezultat o valoare True sau False. Acțiunea se petrece numai atunci când condiția este adevărată.
Utilizați această expresie pentru efectuarea acțiunii |
If |
---|---|
[City]="Paris" |
Paris este valoarea câmpului City (Oraș) din formularul din care a fost executată macrocomanda. |
DCount("[OrderID]", "Orders") > 35 |
Există mai mult de 35 de intrări în câmpul OrderID (IDComandă) al tabelului Orders (Comenzi). |
DCount("*", "[Order Details]", "[OrderID]=" & Forms![Orders]![OrderID]) > 3 |
Există mai mult de trei intrări în tabelul Detalii Comandă pentru care câmpul IDComandă din tabel se potrivește cu câmpul IDComandă din formularul Comenzi. |
[ShippedDate] Between #2-Feb-2017# And #2-Mar-2017# |
Valoarea din câmpul ShippedDate (DatăExpediere) din formularul din care se execută macrocomanda se încadrează între 2 februarie 2017 și 2 martie 2017. |
Forms![Products]![UnitsInStock] < 5 |
Valoarea câmpului UnitsInStock (UnitățiÎnStoc) din formularul Produse este mai mică decât 5. |
IsNull([FirstName]) |
Valoarea Prenume din formularul din care se execută macrocomanda este nulă (nu există). Această expresie este echivalentă cu [Prenume] Is Null. |
[CountryRegion]="UK" And Forms![SalesTotals]![TotalOrds] > 100 |
Valoarea din câmpul ȚarăRegiune din formularul din care se execută macrocomanda este Regatul Unit, iar valoarea câmpului TotalComenzi din formularul TotalVânzări este mai mare decât 100. |
[CountryRegion] In ("France", "Italy", "Spain") And Len([PostalCode])<>5 |
Valoarea din câmpul ȚarăRegiune din formularul din care se execută macrocomanda este Franța, Italia sau Spania, iar codul poștal nu are lungimea de 5 caractere. |
MsgBox("Confirm changes?",1)=1 |
Faceți clic pe OK într-o casetă de dialog afișată de MsgBox. Dacă faceți clic pe Anulare în caseta de dialog, Access ignoră acțiunea. |