Creați o interogare simplă de selectare. Selectați interogări în Access Folosind o expresie ca câmp de ieșire

Dacă trebuie să selectați anumite date dintr-una sau mai multe surse, puteți utiliza o interogare de selectare. O interogare pull vă permite să obțineți doar informațiile de care aveți nevoie și, de asemenea, vă ajută să combinați informații din mai multe surse. Puteți utiliza tabele și alte interogări similare ca surse de date pentru interogările de selecție. Această secțiune discută pe scurt cererile de eșantion și sugerează instrucțiuni pas cu pas pentru a le crea utilizând Expertul de interogări sau în Designer.

Dacă doriți să aflați mai multe despre cum funcționează interogările folosind baza de date Northwind ca exemplu, consultați articolul Înțelegerea interogărilor.

În acest articol

Informații generale

Când este nevoie de anumite date, este rar ca tot conținutul unui tabel să fie necesar. De exemplu, dacă aveți nevoie de informații dintr-un tabel de contact, de obicei despre care vorbim despre o anumită înregistrare sau doar un număr de telefon. Uneori este necesar să combinați datele din mai multe tabele simultan, de exemplu, pentru a combina informații despre clienți cu informații despre clienți. Interogările de selectare sunt folosite pentru a selecta datele necesare.

O interogare de selectare este un obiect de bază de date care afișează informații în vizualizarea tabelului. Interogarea nu stochează date, dar conține date care sunt stocate în tabele. O interogare poate afișa date dintr-unul sau mai multe tabele, din alte interogări sau o combinație a ambelor.

Beneficiile interogărilor

Solicitarea vă permite să efectuați următoarele sarcini:

    Vizualizați valorile numai din câmpurile care vă interesează. Când deschideți un tabel, sunt afișate toate câmpurile. Puteți salva o interogare care returnează doar câteva dintre ele.

    Notă: Interogarea returnează doar date, dar nu le stochează. Când salvați o solicitare, nu salvați o copie a datelor asociate.

    Combinați date din mai multe surse. Într-un tabel, de obicei puteți vedea doar informațiile care sunt stocate în acesta. Interogarea vă permite să selectați câmpuri din diferite surse și să specificați exact cum doriți să combinați informațiile.

    Utilizați expresii ca câmpuri. De exemplu, un câmp poate fi o funcție care returnează o dată, iar folosind funcția de formatare puteți controla formatul valorilor din câmpurile din rezultatele interogării.

    Vizualizați postările care îndeplinesc criteriile pe care le specificați. Când deschideți un tabel, sunt afișate toate înregistrările. Puteți salva o interogare care returnează doar câteva dintre ele.

Pașii de bază pentru crearea unei interogări selectate

Puteți crea o interogare de selectare folosind expertul sau designerul de interogări. Unele elemente nu sunt disponibile în expert, dar pot fi adăugate ulterior de la designer. Deși aceasta căi diferite, pașii principali sunt similari.

    Selectați tabelele sau interogările pe care doriți să le utilizați ca surse de date.

    Specificați câmpurile din sursele de date pe care doriți să le includeți în rezultate.

    De asemenea, puteți seta condiții care limitează setul de solicitări de înregistrare care sunt returnate.

După ce ați creat o interogare de selectare, rulați-o pentru a vedea rezultatele. Pentru a rula o interogare de selectare, deschideți-o în vizualizarea Foaie de date. După ce salvați o interogare, o puteți utiliza mai târziu (de exemplu, ca sursă de date pentru un formular, raport sau altă interogare).

Creați o interogare de selectare utilizând Expertul de interogare

Expertul vă permite să creați automat o cerere de selecție. Când utilizați un expert, nu aveți control complet asupra tuturor detaliilor procesului, dar cererea este de obicei creată mai rapid în acest fel. În plus, expertul detectează uneori erori simple în cerere și vă solicită să selectați o acțiune diferită.

Pregătirea

Dacă utilizați câmpuri din surse de date care nu au legătură, Expertul de interogare vă solicită să creați relații între ele. El va deschide fereastra relatiei, cu toate acestea, dacă faceți modificări, va trebui să reporniți expertul. Prin urmare, înainte de a rula vrăjitorul, este logic să creați imediat toate relațiile pe care le va solicita interogarea dvs.

Informații suplimentare Pentru informații despre crearea relațiilor între tabele, consultați articolul A Guide to Table Relationships.

Utilizarea expertului de interogare

    Pe fila Creare in grup Cereri faceți clic pe butonul Expertul de interogări.

    În caseta de dialog Cerere nouă selectați elementul Cerere simplăși apăsați butonul Bine.

    Acum adăugați câmpurile. Puteți adăuga până la 255 de câmpuri din 32 de tabele sau interogări.

    Pentru fiecare câmp, faceți următorii doi pași:


  1. Dacă nu ați adăugat niciun câmp numeric (câmpuri care conțin date numerice), treceți la pasul 9. Când adăugați un câmp numeric, va trebui să alegeți dacă interogarea va returna detalii sau totaluri.

    FĂ una din urmĂtoarele:


  2. În caseta de dialog Rezultate specificați câmpurile obligatorii și tipurile de date rezumative. Doar câmpurile numerice vor fi disponibile în listă.

    Pentru fiecare câmp numeric, selectați una dintre următoarele opțiuni:

    1. Sumă- interogarea va returna suma tuturor valorilor specificate în câmp.

      Mediu- interogarea va returna valoarea medie a câmpului.

      Min- cererea va returna valoarea minima specificata in camp.

      Max- cererea va returna valoarea maxima specificata in camp.


  3. Dacă doriți ca rezultatele interogării să afișeze numărul de înregistrări din sursa de date, bifați caseta de selectare corespunzătoare Numărați numărul de înregistrări din (numele sursei de date).

    Clic Bine pentru a închide caseta de dialog Rezultate.

    Dacă nu ați adăugat câmpuri de dată și oră la interogare, treceți la pasul 9. Dacă ați adăugat câmpuri de dată și oră la interogare, Expertul de interogare vă solicită să alegeți cum să grupați valorile datei. Să presupunem că ați adăugat un câmp numeric ("Preț") și un câmp de dată și oră ("Transaction_Time") la interogare, apoi în caseta de dialog Rezultate a indicat că doriți să afișați valoarea medie pentru câmpul numeric „Preț”. Deoarece ați adăugat un câmp de dată și oră, puteți calcula totaluri pentru fiecare valoare unică de dată și oră, cum ar fi fiecare lună, trimestru sau an.


    Selectați perioada pe care doriți să o utilizați pentru a grupa valorile datei și orei, apoi faceți clic Mai departe.

    Pe ultima pagina asistent, introduceți un titlu pentru cerere, indicați dacă doriți să o deschideți sau să o editați și faceți clic Gata.

    Dacă alegeți să deschideți o interogare, aceasta va afișa datele selectate în vizualizarea Foaie de date. Dacă decideți să editați interogarea, aceasta se deschide în vizualizarea Design.

Crearea unei interogări în vizualizarea design

În vizualizarea Design, puteți crea manual o interogare selectată. În acest mod, aveți mai mult control asupra procesului de creare a interogărilor, dar este mai ușor să faceți greșeli și durează mai mult timp decât în ​​vrăjitor.

Creați o cerere

Pasul 1: Adăugați surse de date

În modul proiectare, sursele de date și câmpurile sunt adăugate în etape diferite, deoarece caseta de dialog este folosită pentru a adăuga surse Adăugarea unui tabel. Cu toate acestea, puteți adăuga oricând surse suplimentare ulterior.

Conexiune automată

Dacă relațiile sunt deja definite între sursele de date pe care le adăugați, acestea sunt adăugate automat la interogare ca conexiuni. Îmbinările definesc modul în care ar trebui combinate datele din surse conexe. De asemenea, Access creează automat o îmbinare între două tabele dacă acestea conțin câmpuri cu tipuri de date compatibile și unul dintre ele este o cheie primară.

Puteți personaliza conexiunile adăugate de Access. Access selectează tipul de conexiune de creat în funcție de relația care se potrivește. Dacă Access creează o îmbinare, dar nu are o relație definită pentru aceasta, Access adaugă o îmbinare internă.

Reutilizarea unei surse de date

În unele cazuri, puteți alătura două copii ale aceluiași tabel sau interogare, care se numește auto-asamblare, și veți uni înregistrările din același tabel dacă există valori care se potrivesc în câmpurile îmbinate. De exemplu, să presupunem că aveți un tabel de angajați în care câmpul „raportează către” pentru înregistrarea fiecărui angajat afișează ID-ul de manager în loc de numele lor. Puteți utiliza un auto-aderare pentru a afișa numele managerului în evidența fiecărui angajat.

Când adăugați o sursă de date a doua oară, Access va încheia numele celei de-a doua instanțe cu „_1”. De exemplu, când re-adăugând tabelul „Angajați”, al doilea exemplar al acestuia se va numi „Angajați_1”.

Pasul 2: Conectați sursele de date asociate

Dacă sursele de date pe care le adăugați la interogare au deja relații, Access creează automat o îmbinare interioară pentru fiecare relație. Dacă se utilizează integritatea datelor, Access afișează, de asemenea, un „1” deasupra liniei de îmbinare pentru a arăta care tabel se află pe partea „unu” a elementului relației unu-la-mulți și simbolul infinit ( ) pentru a arăta care tabel se află pe partea „multe”.

Dacă ați adăugat alte interogări la o interogare și nu ați creat relații între ele, Access nu creează automat îmbinări între ele sau între interogări și tabele care nu au legătură. Dacă Access nu creează conexiuni atunci când adăugați surse de date, de obicei trebuie să le creați manual. Sursele de date care nu sunt conectate la alte surse pot cauza probleme în rezultatele interogării.

De asemenea, puteți schimba tipul de îmbinare de la o îmbinare interioară la o îmbinare exterioară, astfel încât interogarea să includă mai multe înregistrări.

Adăugarea unei conexiuni

Schimbarea conexiunii

Odată ce conexiunile sunt create, puteți adăuga câmpuri de ieșire: acestea vor conține datele pe care doriți să le afișați în rezultate.

Pasul 3: Adăugați câmpuri de afișare

Puteți adăuga cu ușurință un câmp din orice sursă de date pe care ați adăugat-o la pasul 1.

    Pentru a face acest lucru, trageți câmpul de la sursă în zona de sus a ferestrei de proiectare de interogări în jos până la rând Camp formular de cerere (în partea de jos a ferestrei de proiectare).

    Când adăugați un câmp în acest fel, Access completează automat rândul Masaîn tabelul de proiectare conform sursei de date a câmpului.

    Sfat: Pentru a adăuga rapid toate câmpurile la rândul Câmp al unui formular de interogare, faceți dublu clic pe numele tabelului sau al interogării din panoul de sus pentru a selecta toate câmpurile din acesta, apoi trageți-le pe toate în jos simultan pe formular.

Utilizarea unei expresii ca câmp de ieșire

Puteți utiliza o expresie ca câmp de ieșire pentru calcule sau pentru a genera rezultate de interogare folosind o funcție. Expresiile pot folosi date din orice sursă de interogare, precum și funcții precum Format sau InStr, constante și operatori aritmetici.

    Într-o coloană goală a tabelului de interogări, faceți clic pe rând Camp Click dreapta mouse-ul și selectați elementul din meniul contextual Scară.

    În câmp Scară Tastați sau lipiți expresia necesară. Înainte de expresie, tastați numele pe care doriți să îl utilizați pentru rezultatul expresiei, urmat de două puncte. De exemplu, pentru a desemna rezultatul unei expresii ca " Ultima actualizare", introduceți fraza înaintea acesteia Ultima actualizare:.

    Notă: Puteți folosi expresii pentru a efectua o varietate de sarcini. Considerarea lor detaliată depășește scopul acestui articol. Pentru mai multe informații despre crearea expresiilor, consultați articolul Crearea expresiilor.

Pasul 4: Specificați condițiile

Nu este obligatoriu.

Folosind condiții, puteți limita numărul de înregistrări pe care le returnează o interogare, selectând numai acelea ale căror valori de câmp îndeplinesc criteriile specificate.

Definirea condițiilor pentru un câmp de afișare

    În tabelul de proiectare de interogări din rând Condiție de selecție câmp ale cărui valori doriți să le filtrați, introduceți o expresie pe care trebuie să o satisfacă valorile din câmp pentru a fi incluse în rezultat. De exemplu, pentru a include în interogarea dvs. numai înregistrările care au Ryazan în câmpul Oraș, introduceți Ryazanîn linie Condiție de selecție sub acest domeniu.

    Diverse exemple de expresii de condiție pentru interogări pot fi găsite în articolul Exemple de condiții de interogare.

    Specificați condiții alternative pe linie sau sub linie Condiție de selecție.

    Când sunt specificate condiții alternative, o înregistrare este inclusă în rezultatele interogării dacă valoarea câmpului corespunzător îndeplinește oricare dintre condițiile specificate.

Condiții pentru mai multe câmpuri

Condițiile pot fi setate pentru mai multe câmpuri. În acest caz, toate condițiile din rândul corespunzător trebuie îndeplinite pentru ca intrarea să fie inclusă în rezultate Conditii de selectie sau Sau.

Setarea condițiilor pe baza unui câmp care nu este inclus în rezultat

Puteți adăuga un câmp la o interogare, dar nu includeți valorile acestuia în rezultatele afișate. Acest lucru vă permite să utilizați conținutul unui câmp pentru a limita rezultatele, dar nu să îl afișați.

    Adăugați un câmp la tabelul de interogări.

    Debifați caseta pentru aceasta din linie Spectacol.

    Setați condițiile ca pentru câmpul de ieșire.

Pasul 5: Calculați totalurile

Acest pas este opțional.

De asemenea, puteți calcula totaluri pentru datele numerice. De exemplu, poate doriți să vedeți prețul mediu sau vânzările totale.

Pentru a calcula valorile totale, interogarea folosește șirul Total. Șir implicit Total nu apare în modul design.

    Cu interogarea deschisă în designer, în fila Design, în grupul Afișare sau Ascundere, faceți clic Rezultate.

    Accesul va afișa linia Total pe formularul de cerere.

    Pentru fiecare câmp necesarîn linie Total Selectați funcția dorită. Setul de funcții disponibile depinde de tipul de date din câmp.

    Pentru mai multe informații despre funcționalitatea rândului Total în interogări, consultați Suma sau numărați valorile într-un tabel folosind rândul Total.

Pentru a vedea rezultatele interogării, în fila Design, faceți clic A executa. Access afișează rezultatele interogării în vizualizarea Foaie de date.

Pentru a reveni la modul de proiectare și a face modificări la interogare, faceți clic Acasă > Vedere > Constructor.

Personalizați câmpurile, expresiile sau condițiile și rulați din nou interogarea până când returnează datele dorite.

Creați o interogare selectată într-o aplicație web Access

Pentru a face rezultatele interogării disponibile în browser, trebuie să adăugați o vizualizare a interogării la ecranul de selecție a tabelului. Pentru a adăuga o nouă vizualizare la antetul de pe ecranul de selecție a tabelului, urmați acești pași:


Subiect: Crearea de relații între mese. Crearea unei interogări de selecție, cu un parametru și o interogare finală.

Deschideți cel creat în precedentul munca de laborator Bază de date Decanatul TF .

Crearea de relații între mese

Selectați un obiect în fereastra bazei de date Mese . Faceți clic pe butonul " Sistem date " pe bara de instrumente sau executați comanda " Serviciu »  « Sistem date " folosind meniul de comandă. Pe ecran va apărea o fereastră: Sistem date "și fereastra" Plus Mese „(Fig. 18).

Orez. 18. Caseta de dialog Schema de date și Caseta de dialog Adăugare tabel

La fereastră " Plus Mese "pe fila" Mese » listează toate tabelele bazei de date. Pentru a crea relații între tabele, trebuie să le mutați din " Plus Mese "pe fereastra" Sistem date " Pentru a transfera un tabel, selectați-l cu un clic de mouse și faceți clic pe butonul „ Adăuga " După transferul tabelelor necesare, închideți fereastra " Plus Mese ».

Mutați toate tabelele în fereastră " Sistem date " Redimensionați ferestrele tabelului astfel încât tot textul să fie vizibil (Fig. 19).

Pentru a crea o relație între tabele Elevi Și Evaluări în conformitate cu Schema de date trebuie să mutați cursorul mouse-ului pe câmp Cod student in masa Elevi și cu butonul mouse-ului apăsat, trageți acest câmp pe câmp Cod student in masa Evaluări , apoi eliberați butonul mouse-ului. Fereastra " Schimbare conexiuni „(Fig. 20).

Verificați proprietatea " Securitate integritate date " făcând clic pe el. Bifați casetele de selectare din proprietăți " Cascadă Actualizați legate de câmpuri " Și " Cascadă ştergere legate de câmpuri " Acest lucru vă va permite să editați înregistrările numai în tabel Elevi , și în tabel Evaluări aceste acțiuni asupra înregistrărilor legate vor fi efectuate automat.

Pentru a crea o conexiune, faceți clic pe butonul " Crea ».

Orez. 19. Aspectul schemei de date a bazei de date " Decanatul TF» înainte de a face conexiuni

Orez. 20. Casetă de dialog pentru specificarea parametrilor de conexiune între câmpurile tabelului

La fel conform Schema de date se creează conexiuni între tabelele rămase (Fig. 21).

Orez. 21. Schema de date a bazei de date " Decanatul TF»

Răspundeți când închideți fereastra diagramei de date da la întrebarea despre salvarea aspectului.

Relațiile create între tabelele bazei de date pot fi modificate.

Pentru a schimba conexiunile trebuie să apelați fereastra „ Sistem date " După aceasta, plasați cursorul mouse-ului pe conexiunea care trebuie schimbată și faceți clic dreapta. Va apărea un meniu contextual (Fig. 22):

Orez. 22. Meniul contextual de comunicare

Dacă selectați comanda " Șterge ", apoi după confirmare conexiunea va fi ștearsă. Dacă trebuie să schimbați conexiunea, selectați comanda " Schimbare conexiune " După aceea, în fereastra care apare „ Schimbare conexiuni " (în partea de sus) selectați câmpurile din tabelele pe care doriți să le conectați și faceți clic pe butonul " Crea ».

Cereri

Interogările sunt folosite pentru a selecta sau a căuta date dintr-unul sau mai multe tabele. Puteți utiliza interogări pentru a vizualiza, analiza și modifica datele din mai multe tabele. Ele sunt, de asemenea, utilizate ca sursă de date pentru formulare și rapoarte. Interogările vă permit să calculați totaluri și să le afișați într-un format compact, precum și să efectuați calcule pe grupuri de înregistrări.

Vom dezvolta cereri în modul Designer .

ÎN Acces Puteți crea următoarele tipuri de interogări:

    Cerere de mostra . Acesta este tipul de cerere cel mai frecvent utilizat. Acest tip de interogare returnează date dintr-unul sau mai multe tabele și le afișează ca tabel. Interogările de selectare pot fi, de asemenea, utilizate pentru a grupa înregistrări și pentru a calcula sume, medii, număra înregistrări și pentru a găsi alte tipuri de totaluri. Pentru a modifica condițiile de selecție, trebuie să modificați cererea.

    Cerere cu parametri . Acesta este un prompt care, atunci când este executat, afișează propria casetă de dialog care vă solicită să introduceți datele sau valoarea pe care doriți să o introduceți într-un câmp. Aceste date sau valoare se pot modifica de fiecare dată când se face cererea.

    Cerere încrucișată . Folosit pentru calcule și prezentarea datelor într-o structură care facilitează analiza acestora. O interogare transversală calculează suma, media, numărul de valori sau efectuează alte calcule statistice, apoi grupează rezultatele într-un tabel în două seturi de date, unul definind titlurile coloanelor, iar celălalt definind titlurile rândurilor.

    Cerere de modificare . Aceasta este o interogare care modifică sau mută mai multe înregistrări într-o singură operațiune. Există patru tipuri de solicitări de modificare:

1. Pentru a șterge o intrare. Această interogare șterge un grup de înregistrări din unul sau mai multe tabele.

2. Pentru a actualiza înregistrarea. Contribuie modificari generaleîntr-un grup de înregistrări dintr-unul sau mai multe tabele. Vă permite să modificați datele din tabele.

3. Pentru a adăuga înregistrări. Adaugă un grup de înregistrări dintr-unul sau mai multe tabele la sfârșitul unuia sau mai multor tabele.

4. Pentru a crea un tabel. Creează masa noua pe baza totală sau parțială a datelor dintr-unul sau mai multe tabele.

    Cereri SQL . Creat folosind instrucțiuni lingvistice SQL , folosit in DB .

Aș dori să pot crea o interogare parametrizată în MS Access 2003 și să transmit valori anumite elemente formularele în acea interogare, apoi obțineți setul corespunzător de rezultate și faceți câteva calcule de bază cu ele. Vă voi prezenta pe scurt cum să obțineți parametrii de interogare care să fie populați cu elemente de formular. Dacă trebuie să folosesc VBA, e în regulă.

5 răspunsuri

Referințele la controalele dintr-un formular pot fi utilizate direct în interogările Access, deși este important să le definiți ca parametri (altfel, rezultatele în ultimele versiuni Accesul poate fi imprevizibil dacă a fost cândva fiabil).

De exemplu, dacă doriți să filtrați o interogare după controlul LastName din MyForm, veți folosi acesta ca criteriu:

LastName = Forms!MyForm!LastName

PARAMETRI [!MyForm!] Text (255); SELECTAȚI tblCustomers.* FROM tblCustomers WHERE tblCustomers.LastName=!;

Cu toate acestea, aș dori să întreb de ce aveți nevoie de o interogare stocată în acest scop. Ce faci cu rezultatele? Afișați-le într-un formular sau raport? Dacă acesta este cazul, puteți face acest lucru în sursa de înregistrare a formularului/raportului și lăsați interogarea salvată neschimbată cu parametrii, astfel încât să poată fi utilizată în alte contexte fără a afișa o solicitare de populare a parametrilor.

Pe de altă parte, dacă faceți ceva în cod, scrieți SQL-ul din mers și utilizați valoarea literală a controlului formularului pentru a crea clauza WHERE.

Iată un fragment de cod. Actualizează tabelul utilizând parametrul txtHospital:

Set db = CurrentDb Set qdf = db.QueryDefs("AddHospital") qdf.Parameters!txtHospital = Trim(Me.HospName) qdf.ReturnsRecords = False qdf.Execute dbFailOnError intResult = qdf.RecordsAffected

Iată un exemplu de SQL:

PARAMETRI txtHospital Text(255); INSERT INTO tblHospitals() VALUES()

Există trei moduri tradiționale de a ocoli această problemă:

  1. Setați parametrul la o valoare, astfel încât utilizatorului să i se solicite o valoare atunci când rulează interogarea.
  2. Câmp de link din formular (posibil ascuns)
  3. Creați interogarea din mers și nu utilizați parametrii.

Cred că este greșit pentru mine că ar trebui să introduceți ceva de genul [?introduceți codul ISO al țării] sau link-uri către câmpuri din formularul dvs. precum: !! .

Aceasta înseamnă că nu putem reutiliza aceeași interogare în mai multe locuri, deoarece câmpuri diferite furnizează datele sau trebuie să ne bazăm pe faptul că utilizatorul nu confundă introducerea datelor atunci când rulează interogarea. Din câte îmi amintesc, poate fi dificil să folosești aceeași valoare de mai multe ori cu un parametru introdus de utilizator.

De obicei, aș alege ultima opțiune, aș crea interogarea din mers și aș actualiza obiectul de interogare după cum este necesar. Cu toate acestea, acesta este un atac obișnuit de injecție SQL (fie accidental, fie intenționat cunoscând utilizatorii mei) și este pur și simplu obscen.

„Ed. Start - pentru completarea exemplului dim qryStartDate ca data dim qryEndDate ca data qryStartDate = #2001-01-01# qryEndDate = #2010-01-01# „Ed. Sfârșitul „CITAT „Armăsar”: Pentru a transmite parametri unei interogări în VBA „ este într-adevăr destul de simplu: „Mai întâi vom seta câteva variabile: Dim qdf As Querydef Dim rst As Recordset „apoi vom deschide interogarea: Set qdf = CurrentDB.QueryDefs(qryname) „Acum vom atribui valori interogării folosind opțiunea de parametri: qdf.Parameters(0) = qryStartDate qdf.Parameters(1) = qryEndDate „Acum vom converti querydef într-o recordset și rulați-l Set rst = qdf.OpenRecordset "Run code on recordset" Închideți toate obiectele rst.Close qdf.Close Set rst = Nimic Set qdf = Nimic

(Nu am testat asta eu însumi, ci doar ceva ce am adunat în călătoriile mele pentru că din când în când am vrut să fac asta, dar am ajuns să folosesc unul dintre kludge-urile mele menționate anterior)

edit am avut în sfârșit un motiv să folosesc asta. Iată codul real.

"... Dim qdf As DAO.QueryDef Dim prmOne As DAO.Parameter Dim prmTwo As DAO.Parameter Dim rst as recordset "... "deschide interogarea: Set qdf = db.QueryDefs("my_two_param_query") "params called param_one și "param_two" vă leagă DAP.Parameters la interogarea Set prmOne = qdf.Parameters!param_one Set prmTwo = qdf.Parameters!param_two "setează valorile parametrilor prmOne = 1 prmTwo = 2 Set rst = qdf.OpenRecordset (dbOpenDynaset , _ dbSeeChanges) „... tratați setul de înregistrări ca de obicei „asigurați-vă că vă curățați după sine. Set rst = Nimic Set prmOne = Nimic Set prmTwo = Nimic Set qdf = Nimic

DoCmd.SetParameter „frontMthOffset”, -3 DoCmd.SetParameter „endMthOffset”, -2 DoCmd.OpenQuery „QryShowDifference_ValuesChangedBetweenSELECTEDMonths”

Unde interogare SQL Accesul include de fapt SQL. De exemplu

„selectați blah din mytable unde dateoffset="

Totul pur și simplu funcționează!

Să luăm un exemplu. cererea parametrizată arată astfel:

Selectați Tbl_Country.* Din Tbl_Country WHERE id_Country = _ [?introduceți codul ISO al țării]

și ați dori să puteți obține această valoare ([? introduceți... țară] una) dintr-un formular în care aveți controale și câteva date în el. Ei bine... ar putea fi posibil, dar necesită o anumită normalizare a codului.

O soluție ar fi să atribuiți o anumită logică controalelor de formular, cum ar fi fid_Country pentru control, care ar deține valoarea id_Country. Interogarea dvs. poate fi apoi reprezentată ca șir:

Qr = "Selectați Tbl_Country.* Din Tbl_Country WHERE id_Country = "

După ce ați introdus toate datele solicitate în formular, faceți clic pe butonul „cerere”. Logica va trece prin toate controalele și va verifica dacă acestea sunt prezente în cerere, eventual înlocuind parametrul cu valoarea controlului:

Dim ctl ca control Pentru fiecare ctl din Me.controls Dacă instr(qr,"[" & ctl.name & "]") > 0 Atunci qr = înlocuiți(qr,"[" & ctl.name & "]",ctl .valoare) End if Next i

În acest caz, veți avea o interogare complet actualizată, în care parametrii sunt înlocuiți cu date reale. În funcție de tipul fid_country (șir, GUID, dată etc.) poate fi necesar să adăugați ghilimele duble suplimentare sau să nu obțineți interogarea finală, de exemplu:

Qr = "Selectați Tbl_Country.* Din Tbl_Country WHERE id_Country = ""GB"""

Aceasta este o interogare complet compatibilă cu Access pe care o puteți folosi pentru a deschide un set de înregistrări:

Setați rsQuery = currentDb.openRecordset(qr)

Cred că ai terminat aici.

Acest subiect este esențial atunci când scopul dvs. este să dezvoltați aplicații Access. Trebuie să oferi utilizatorilor mod standard solicitați date de la aceștia GUI nu numai pentru rularea interogărilor, ci și pentru filtrarea formularelor continue (la fel cum face Excel cu opțiunea „autofilter”) și gestionarea opțiunilor de raport. Noroc!

Teorie O interogare de selectare vă permite să selectați date dintr-unul sau mai multe tabele pe baza unei anumite condiții. Ca rezultat al executării interogării, pe ecran este afișat un tabel care conține datele selectate. Interogările pot fi create folosind instrucțiuni SQL sau folosind un șablon de interogare. În acest caz, instrucțiunea SQL care implementează această interogare este creată automat.

Teorie Pentru a crea o interogare, trebuie să deschideți baza de date, să accesați fila Interogări și să selectați „Creați o interogare în modul proiectare”

Exemplu În baza de date a Decanului, trebuie să găsiți adresele (numărul căminului și camera) tuturor fetelor din grupul 9701. Afișați numele de familie în ordine alfabetică, numărul căminului și camera. Pentru a crea o interogare, trebuie să deschideți baza de date, să accesați fila Interogări și să selectați „Creați o interogare în modul proiectare”

Exemplu Două ferestre vor apărea pe ecran: un formular de solicitare și o fereastră pentru adăugarea de tabele. În fereastra adăugare tabele, sunt selectate numai acele tabele ale căror câmpuri sunt necesare în interogare.

Exemplu Câmpurile Nume, sex, grup sunt în tabelul „Studenți”, câmpurile numărul căminului și cameră sunt în tabelul „Cămin”. Prin urmare, în fereastra Adăugare tabele, selectați aceste tabele și faceți clic pe butonul Adăugați. Apoi faceți clic pe butonul Închidere. Rezultat:

Exemplu Rezultatul unei interogări ar trebui să fie un tabel care să conțină câmpurile Nume, Număr dormitor și Cameră. Să glisăm aceste câmpuri din tabelele din partea de sus a formularului în partea de jos folosind LMB.

Exemplu de rezultat: linia Nume tabel și linia Afișare sunt completate automat. O pasăre înseamnă că valoarea câmpului este afișată pe ecran. Pentru a afișa numele de familie în ordine alfabetică, selectați câmpul Nume din linia Sortare ascendentă.

Exemplu Trebuie să filtram după câmpurile Gen și Grup. Prin urmare, să glisăm aceste câmpuri din tabele în rândul Câmp. Aceste câmpuri nu trebuie să fie afișate pe ecran, așa că vom elimina bifa din linia Ieșire pe ecran. Rezultat:

Exemplu Completați linia Condiție de selecție. În această linie, pentru câmpul Sex indicăm w (vezi tabel), iar pentru câmpul Grup indicăm 9701. Rezultat: Aceste câmpuri sunt de tip text. Au fost adăugate automat ghilimele duble. Pentru a finaliza solicitarea, faceți clic

Crearea condițiilor de selecție Condițiile de selecție sunt restricții aplicate interogării pentru a determina înregistrările cu care va funcționa. În condiții de selecție: valoarea unui câmp de tip dată/ora este inclusă în semne numerice (#). De exemplu, #05. 02. 2009# valoarea câmpului tip de text este cuprins între ghilimele drepte ("). Pentru a combina două câmpuri de tip text, se folosește operatorul &. Numele câmpului este cuprins între paranteze drepte (). Condiția de selecție este scrisă în formularul de cerere în rândul „Condiția de selecție ” în domeniul pentru care se face comparația.

Verificarea unui interval de valori Pentru a verifica egalitatea, semnul = poate fi omis. Condiția selecției Rezultatul selecției = „Ivanov” Selectarea înregistrărilor care conțin nume de familie, începând cu „Ivanov” și până la sfârșitul alfabetului, în câmpul „Nume” Între Selectarea înregistrărilor care conțin #02 în câmpul „Data”. 99# Și date cuprinse între 2 februarie 1999 și 1 decembrie 1999 #01. 12. 99# Nu „SUA” Selectarea înregistrărilor care conțin în câmpul „Țară” orice țară, cu excepția SUA

Combinarea condițiilor de selecție folosind operatorii și și sau Dacă expresiile sunt introduse în mai multe celule Condiții de selecție, acestea sunt combinate automat folosind operatorii și sau sau. Dacă expresiile sunt în celule diferite, dar pe aceeași linie, atunci Microsoft Access folosește operatorul Și

Combinarea condițiilor de selecție folosind operatorii și și sau Dacă expresiile sunt pe linii diferite ale formularului de interogare, atunci Microsoft Access folosește operatorul Sau.

O parte a valorii câmpului (Like) Operatorul Like funcționează aproape în același mod ca modelele de căutare de fișiere. Rezultatele selectării expresiilor Ca „C*” Numele încep cu litera C Ca „[A-D]*” Numele variază de la A la D Ca „*tr*” Numele conțin o combinație de litere „tr” Ca „? ? ” Numele constau în patru scrisoare

Valoarea câmpului gol Expresia Rezultatele selecției Este nulă Selecția printr-un câmp care conține o valoare nulă, adică este „ ” goală Selecția printr-un câmp care conține un șir de lungime zero

Solicitare cu un parametru Parametru – informații pentru cererea introdusă de la tastatură. Folosit în condiția de selecție. Textul mesajului este indicat între paranteze drepte. La sfârșit trebuie să existe „:” La executarea unei astfel de solicitări se afișează următoarea fereastră: Rezultat.

În cel mai simplu caz, interogarea implementează selecția dintr-un tabel a câmpurilor solicitate, înregistrările care îndeplinesc condițiile de selecție specificate și vizualizarea rezultatelor interogării.

Construirea de interogări de selecție cu condiții de selecție

Să ne uităm la interogările de selecție din Access folosind exemplul de recuperare a informațiilor din tabelul PRODUCT al bazei de date Aprovizionare cu bunuri.

Problema 1. Să presupunem că trebuie să selectați un număr de caracteristici ale unui produs după numele său.

  1. Pentru a crea o interogare în fereastra bazei de date, selectați fila panglică - Creare(Creează) și în grup Cereri(Interogări) faceți clic pe butonul Generator de interogări(Design de interogare). Se va deschide fereastra goala selectați interogarea în modul proiectare - CerereN(QueryN) și caseta de dialog Adăugarea unui tabel(Afișați tabelul) (Fig. 4.2).
  2. La fereastră Adăugarea unui tabel(Afișare tabel) selectați tabelul PRODUSE și faceți clic pe butonul Adăuga(Adăuga). Tabelul selectat va fi afișat în zona schemei de date de interogare. Inchide geamul Adăugarea unui tabel(Afișați tabelul) prin apăsarea butonului Închide(Închide).

Ca urmare a acțiunilor efectuate în fereastra de proiectare de interogări (Fig. 4.1), în panoul de sus va apărea o schemă de date de interogare, care le include pe cele selectate pentru a acestei cereri Mese. În acest caz, un singur tabel PRODUS. Tabelul este reprezentat de o listă de câmpuri. Primul rând din lista de câmpuri de tabel, marcat cu un asterisc (*), denotă întregul set de câmpuri de tabel. Panoul de jos este un formular de cerere care trebuie completat.

În plus, apare pe panglică și se activează automat inserție nouă(Instrumente de interogare | Design) (Figura 4.3 prezintă o parte a acestei file), pe care tipul de interogare creat este evidențiat cu culoare - Probă(Selectați). Prin urmare, implicit, o interogare de selectare este întotdeauna creată. Comenzile din această filă oferă instrumente pentru execuție acțiunile necesare la crearea unei cereri. Această filă se deschide când creați o interogare nouă sau editați una existentă în vizualizarea Design.

  1. Pentru a elimina orice tabel din schema de date de interogare, plasați cursorul mouse-ului pe acesta și apăsați . Pentru a adăuga - faceți clic pe butonul Arată tabelul(Afișați tabelul) în grup Configurare interogare(Configurare interogare). Lucrul cu cereri | Constructor(Instrumente de interogare | Design) sau executați comanda Adăugați un tabel(Afișare tabel) în meniul contextual numit în diagrama datelor de solicitare.
  2. În fereastra de proiectare (Fig. 4.4), trageți secvențial câmpurile NUME_IT, PREȚ, DISPONIBILITATE_IT din lista de câmpuri din tabelul PRODUSE în coloanele formularului de solicitare în rând. Camp(Camp).
  3. Pentru a include câmpurile dorite din tabel în coloanele de interogare corespunzătoare, puteți utiliza următoarele tehnici:
    • în primul rând al formularului de cerere Camp(Câmp) faceți clic cu mouse-ul pentru a face să apară butonul de listă și selectați câmpul dorit din listă. Lista conține câmpurile tabelelor reprezentate în schema de date de interogare;
    • faceți dublu clic pe numele câmpului tabelului din schema de date de interogare;
    • Pentru a include toate câmpurile de tabel, puteți trage sau faceți dublu clic pe simbolul * (asterisc) din lista câmpurilor de tabel din schema de date de interogare.
  4. Dacă ați tras accidental un câmp inutil în formularul de solicitare, ștergeți-l. Pentru a face acest lucru, mutați cursorul în zona etichetei coloanei din partea de sus, unde va apărea ca o săgeată neagră îndreptată în jos și faceți clic pe butonul mouse-ului. Coloana va fi evidențiată. Apăsați tasta sau executați comanda Eliminați coloanele(Ștergeți coloanele) în grup Configurare interogare(Configurare interogare).
  5. În linie Ieșire pe afișaj(Afișați) verificați câmpurile, altfel nu vor fi incluse în tabelul de interogări.
  6. Scrie pe linie Conditii de selectie(Criterii) denumirea produsului, așa cum se arată în formularul de cerere din Fig. 4.4. Deoarece expresia din condiția de selecție nu conține un operator, operatorul = este utilizat implicit. Se introduce valoarea textului folosită în expresie ghilimele duble, care sunt adăugate automat.
  7. Rulați interogarea făcând clic pe butonul Executare sau pe butonul Vizualizare din grupul Rezultate. O fereastră de interogare va apărea pe ecran în modul tabel cu o intrare din tabelul PRODUSE care îndeplinește condițiile de selecție specificate.

COMETARIU
Fereastra de interogare din vizualizarea tabel este similară cu fereastra de vizualizare a tabelului bazei de date. Prin intermediul unor tabele de interogări, pot fi aduse modificări datelor din tabelul de bază care stă la baza interogării. Interogare vizualizată în vizualizarea tabelă, spre deosebire de tabelul de bază Accesați datele 2010, nu are coloană Faceți clic pentru a adăuga(Click to Add), conceput pentru a schimba structura tabelului. În acest mod, pe fila panglică Acasă(Acasă) aceleași butoane sunt disponibile ca atunci când deschideți un tabel de bază de date.

  1. Dacă ați făcut o inexactitate la introducerea unui nume de produs complex, produsul nu va fi găsit în tabel. Utilizarea operatorilor wildcard - asterisc (*) și semn de întrebare (?) (standard ANSI-89, utilizat implicit pentru interogări) sau semn de procente (%) și liniuță de subliniere (_) (ANSI-92, recomandat ca standard pentru SQL Server), simplifică căutarea șirurilor necesare și vă permite să evitați multe greșeli. Introduceți Corpus* sau Corpus% în loc de numele complet al produsului. Completați cererea. Dacă în câmpul numelui produsului o valoare începe cu cuvântul „Caz”, rezultatul solicitării va fi același ca în cazul precedent. După executarea interogării, expresia introdusă va fi completată cu operatorul Like „Body*”. Acest operator permite folosirea caracterelor wildcard la căutarea în câmpurile de text.
  2. Dacă trebuie să găsiți mai multe produse, utilizați operatorul In. Vă permite să verificați egalitatea cu orice valoare din listă, care este specificată în paranteze. Scrieți în linia de condiții de selecție („Carcasă MiniTower”; „HDD Maxtor 20GB”; „FDD 3.5″). Tabelul de interogări va afișa trei rânduri. Declarația In nu permite caractere joker.
  3. Salvați solicitarea făcând clic pe filă Fişier(Fișier) și rulați comanda Salvați(Salva). La fereastră Conservare(Salvare ca) introduceți numele cererii Exemplu1. Rețineți că numele interogării nu trebuie să coincidă nu numai cu numele interogărilor existente, ci și cu numele tabelelor din baza de date.
  4. Închideți cererea curentă folosind comanda meniului contextual Închide(Închideți) sau făcând clic pe butonul ferestrei de interogare Închide(Închide).
  5. Execută o interogare salvată evidențiind interogarea în panoul de navigare și selectând comanda din meniul contextual Deschis(Deschis).
  6. Pentru a edita o solicitare, selectați-o în zona de navigare și executați comanda din meniul contextual Constructor(Vizualizare design).

Sarcina 2. Să presupunem că trebuie să selectați bunuri al căror preț nu depășește 1000 de ruble și TVA nu mai mult de 10% și, de asemenea, să selectați mărfuri al căror preț este mai mare de 2500 de ruble. Rezultatul trebuie să conțină numele produsului (NAIM_TOV), prețul acestuia (PREZ) și TVA (RATE_VAT).

  1. Creați o interogare nouă în modul design, adăugați tabelul PRODUCT. În fereastra de proiectare (Fig. 4.5), trageți secvențial câmpurile NUME_IT, PREȚ, RATE_TVA din lista de câmpuri din tabelul PRODUSE în formularul de solicitare.
  2. Noteaza Conditii de selectie(Criterii), așa cum se arată în formularul de cerere din Fig. 4.5. Între condițiile scrise pe aceeași linie, este adevărat: operatie logicaȘI. O operație logică SAU este efectuată între condițiile scrise pe linii diferite.
  3. Completați cererea, faceți clic pe butonul A executa(Alergă) în grup rezultate(Rezultate). O fereastră de interogare va apărea pe ecran în modul tabel cu înregistrări din tabelul PRODUSE care îndeplinesc condițiile de selecție specificate.
  4. Salvați cererea executând comanda corespunzătoare din meniul contextual al cererii, care este apelată când plasați cursorul pe antetul cererii. Dă-i un nume Exemplul 2.

Problema 3. Să presupunem că trebuie să selectăm toate facturile pentru o anumită perioadă. Rezultatul trebuie să conțină numărul facturii (NOM_NAK), codul depozitului (CODE_SC), data expedierii (DATE_SHIP) și costul total al mărfurilor expediate (SUMMA_INKL).

  1. Creați o nouă interogare în vizualizarea Design, adăugați tabelul FACTURA. În fereastra de proiectare, trageți secvențial toate câmpurile necesare din lista de câmpuri din tabelul FACTURA în formularul de solicitare.
  2. Pentru câmpul DATE_OTGR din linie Conditii de selectie(Criterii) scrieți Între #01/11/2008# Și #03/31/2008#. Operatorul Between specifică un interval de dată (ANSI-92 utilizează ghilimele simple ' în loc de semnul #). În plus, acest operator vă permite să specificați un interval pentru o valoare numerică.

Pentru a consolida acest lucru, urmăriți tutorialul video:

Câmpuri calculate în interogările Access.