Professional Documents
Culture Documents
este unul dintre cele mai puternice limbaje structurate pentru interogarea bazelor de date relationale, devenind un standard pentru o gama din ce in ce mai larga de SGBD-uri;
permite o comunicare complexa si rapida a utilizatorului cu bazele de date, in functie de cerintele si restrictiile acestora.
I. CREATE TABLE
CREATE TABLE <tabela> ( <camp1> <tip1> [<restrictii_camp1>], <camp2> <tip2> [<restrictii_camp2>], <campn> <tipn> [<restrictii_campn>] [, <restrictii_tabela>] )
End Sub
Obs. 1.Tabela note este o tabela fiu atat pentru tabela stud, cat si pentru tabela discipl. 2. La nivelul comenzii CREATE TABLE legatura dintre doua tabele reprezinta o restrictie la nivel de camp sau la nivel de tabela in cadrul tabelei fiu.
End Sub
ADD <camp_nou>
ALTER TABLE <tabela> ALTER <modificare_proprietate_campi> DROP <campi>
DoCmd.RunSQL "alter table produse add um text(5)" DoCmd.RunSQL "alter table produse alter stoc byte" DoCmd.RunSQL "alter table produse drop um"
III. SELECT
3.1 Interogari simple SELECT * <lista_campuri> FROM <tabela> [WHERE <cond>] (*)
Obs. La executarea frazelor SELECT cu ajutorul metodei RunSQL a obiectului DoCmd se adauga, in sintaxa comenzii, clauza INTO <tabela_rezultat>.
Sub sel_prod() vcodpr = InputBox("Cod produs: ") DoCmd.RunSQL "select codpr,denpr,stoc into f from produse1 where codpr = " & vcodpr End Sub
Ex. Se selecteaza un produs, specificat prin codul sau, informatiile aferente se vor memora in tabela f si se va deschide aceasta tabela. Dupa inspectarea vizuala a acesteia, se va raspunde la intrebarea Doriti o corectare a stocului afisat (d/n) cu d sau n. Daca s-a tastat caracterul d (sau caracterul D), se va specifica noul stoc (vstoc) si se va executa o comanda UPDATE corespunzatoare. Se poate deschide apoi tabela produse pentru a verifica modificarea efectuata.
Sub sel_prod()
vcodpr = InputBox("Cod produs: ") DoCmd.RunSQL "select codpr,denpr,stoc into f from produse where codpr = " & vcodpr DoCmd.OpenTable "f" vopt = InputBox("Doriti o corectare a stocului afisat (d/n):") DoCmd.Close If vopt = "D" Or vopt = "d" Then vstoc = InputBox("Stoc nou") DoCmd.RunSQL "update produse set stoc =" & vstoc & " where codpr = " & vcodpr DoCmd.OpenTable "produse" End If
End Sub
Ex. Formulati diferite conditii in clauza WHERE Sa se selecteze produsul p7: DoCmd.RunSQL "select * into g1 from produse where denpr = 'p7 "
Sa se selecteze facturile din luna ianuarie: DoCmd.RunSQL "select * into g2 from facturi where datfact > #01/01/2007# and datfact < #31/01/2007#"
Sa se selecteze facturile din produsele 2, 7, 10, 16 si 25. se va utiliza operatorul IN: DoCmd.RunSQL "select * into g3 from liniifact where codpr in (2,7,10,16,25) Sa se selecteze produsele ale caror denumiri incep cu prod DoCmd.RunSQL "select * into g4 from produse where denpr like 'prod* Sa se afiseze clientii ale caror denumiri respecta sablonul ?c???: DoCmd.RunSQL "select * into g5 from clienti1 where dencl like '?c???' Sa se afiseze produsele ce au stocul cuprins intre 25 si 47 (incluzand cele doua limite). Se va utiliza operatorul BETWEEN DoCmd.RunSQL "select * into g6 from produse1 where stoc between 25 and 47"
(*)
Ex. 1. Sa se afiseze toate facturarile, dar sa apara si denumirea produselor facturate DoCmd.RunSQL "select produse.codpr, denpr, cant, pret, cant*pret into f1 from produse inner join liniifact on produse.codpr=liniifact.codpr" 2. Sa apara si produsele din care nu s-a facturat nimic !!! (jonctiune externa spre stanga) DoCmd.RunSQL "select produse.codpr, denpr, cant, pret, cant*pret into f2 from produse left join liniifact on produse.codpr=liniifact.codpr"
3. Sa se afiseze o lista cu toti clientii, iar in dreptul celor care au facturi sa apara si
informatiile aferente acestora. Se va utiliza RIGHT JOIN
Ex. 1. Sa se afiseze valorile totale ale facturilor inregistrate. DoCmd.RunSQL "select nrfact,sum(cant*pret) into h1 from liniifact group by nrfact" 2. Sa se afiseze numarul total de facturi inregistrate