Instrucøiuni pentru dialog cu utilizatorul
a) Afisare de mesaje
Un mesaj se poate afisa într-o fereastrã de dialog cu instrucøiunea sau funcøia MsgBox, folosind una din sintaxele:
MsgBox mesaj [, tip [, titlu]]
MsgBox(mesaj [, tip [, titlu]])
unde mesaj este mesajul care se afiseazã, tip este o expresie numericã care specificã butoanele afisate si iconul afisat în ferestrã iar titlu este titlul ferestrei afisate (implicit "Microsoft Access").
tip se calculeazã ca o sumã de cel mult 4 numere, reprezentând:
butoanele afisate:
OK - valoarea 0
OK si Cancel - valoarea 1
Abort, Retry si Ignore - valoarea 2
Yes, No si Cancel - valoarea 3
Yes si No- valoarea 4
Retry si Cancel - valoarea 5
iconul atasat mesajului în ferestrã:
iconul de tip STOP - valoarea 16
iconul de tip "?" - valoarea 32
iconul de tip "!" - valoarea 48
iconul de tip "informaøie" ("i") - valoarea 64
butonul implicit:
primul buton - valoarea 0
al doilea buton - valoarea 256
al treilea buton - valoarea 512
continuarea în aplicaøia curentã (valoarea 0) sau în altã aplicaøie (valoarea 4096)
Dupã afisarea mesajului, utilizatorul va alege un buton din fereastrã (implicit, OK). Instrucøiunea MsgBox nu permite reøinerea butonului activat de utilizator. Dacã se doreste reøinerea butonului activat de utilizator, trebuie folositã funcøia MsgBox, care returneazã tipul butonului ales, muløimea tuturor valorilor posibile fiind: 1 - OK, 2 - Cancel (sau tasta ESC), 3 - Abort, 4 - Retry, 5 - Ignore, 6 - Yes, 7 - No.
Exemplu:
nr=Msgbox("Doriti sa continuati?", 4+32, "Continuare")
if nr=7 .
b) Citire de mesaje
Pentru ca utilizatorul sã poatã introduce de la tastaturã anumite texte (prin MsgBox, informaøiile introduse se reduc la tipul butonului ales) care sã fie ulterior utilizate în aplicaøie, se foloseste funcøia InputBox, cu sintaxa:
InputBox[$](mesaj [, titlu [, [text_implicit] [, x, y]]])
unde: mesaj este mesajul care se afiseazã, titlu este titlul ferestrei (implicit, fereastra creatã de InputBox nu are titlu), text_implicit este textul care se afiseazã implicit în caseta în care utilizatorul va introduce textul (de exemplu, extensia unui fisier al cãrui nume se cere de la tastaturã) iar (x, y) - poziøia de afisare a ferestrei (implicit, poziøia se determinã automat).
Rezultatul returnat de funcøia InputBox, dupã ce utilizatorul activeazã butonul OK, este textul introdus de utilizator, considerat de tip Variant pentru funcøia InputBox si de tip String pentru funcøia InputBox$. Dacã utilizatorul activeazã butonul Cancel sau tasteazã ESC, atunci funcøia returneazã stringul vid.
Exemplu:
fis=Inputbox$("Numele fisierului de date:", "Citire", ".TXT")
6) Prelucrarea formularelor si rapoartelor
În cadrul acestui paragraf se vor prezenta funcøiile Access Basic care permit crearea de formulare, rapoarte si obiecte de control.
a) Crearea formularelor / rapoartelor
Un formular sau un raport se pot crea cu funcøiile:
CreateForm([baza_de_date [, format_formular]])
CreateReport([baza_de_date [, format_raport]])
unde format_formular sau format_raport reprezintã numele unui formular / raport (de tip sir de caractere) pe baza cãruia se creeazã noul obiect (formular / raport); implicit, se opteazã pentru formatul specificat în meniul View - Option - Form & Report Design iar baza_de_date este numele bazei de date unde se gãseste "modelul" descris anterior.
Funcøiile CreateForm CreateReport creeazã câte un obiect de tip Form sau Report.
b) Crearea obiectelor de control
Un obiect de control într-un formular / raport se poate crea folosind funcøiile:
CreateControl(nume_formular, tip_control [,sectiune
[,control_parinte [,nume_sursa [,oriz [,vert
[,latime [,inaltime]]]]]]])
CreateReportControl(nume_raport, tip_control [,sectiune
[,control_parinte [,nume_sursa [,oriz [,vert
[,latime [,inaltime]]]]]]])
unde:
nume_formular nume_raport (siruri de caractere) reprezintã numele obiectului de tip formular sau raport unde se creeazã obiectul de control
tip_control specificã tipul obiectului de control: 100 - etichetã, 101 - dreptunghi, 102 - linie, 104 - buton de comandã, 105 - buton radio, 106 - comutator Check Box, 107 - grup de opøiuni, 108 - Bound object frame, 109 - Text box, 110 - List box, 111 - Combo box, 112 - Subform / Subreport, 114 - Unbound object frame, 118 - Page break, 122 - Toggle button.
sectiune - un numãr întreg care precizeazã secøiunea unde se creeazã obiectul de control: 0 - secøiunea de detaliu (valoarea implicitã), 1 - antet de formular / raport, 2 - subsol de formular / raport, 3 - antet de paginã, 4 - subsol de paginã, 5 - antet de grup de nivelul 1 (pentru rapoarte), 6 - subsol de grup de nivelul 1 (pentru rapoarte), 7 - antet de grup de nivelul 2 (pentru rapoarte), 8 - subsol de grup de nivelul 2 (pentru rapoarte) etc.
control_parinte - numele obiectului de control de care depinde obiectul curent (de exemplu, grupul în care este inclus un buton radio) sau strungul vid, dacã obiectul de control este independent
nume_sursa - numele câmpului care este sursa valorilor obiectului de control (dacã existã o asemenea sursã de date)
oriz ,vert - poziøia coløului stânga sus al obiectului de control în cadrul formularului (raportului)
latime ,inaltime - dimensiunile obiectului de control
c) Stergerea obiectelor de control
Un obiect de control dintr-un formular / raport deschis în mod Design View se poate sterge folosind instrucøiunile:
DeleteControl nume_formular , nume_control
DeleteReportControl nume_raport , nume_control
2.7.3. SQL
Limbajul SQL (Structured Query Language) se foloseste pentru gestiunea bazelor de date relaøionale. Pentru fiecare interogare creatã, se genereazã automat o instrucøiune SELECT SQL . Aceastã instrucøiune se poate utiliza si explicit, în formulare, rapoarte sau macro-uri. În plus, existã instrucøiuni SQL care nu se pot obøine cu ajutorul asistenøilor.
a) Obøinerea de informaøii din baze de date
Selectarea de informaøii din baze de date se realizeazã cu instrucøiunea:
SELECT [tip_selectie] lista_câmpuri FROM sursa_de_date
[WHERE conditie] [GROUP BY lista_ câmpuri_grupare]
[HAVING conditie2] [ORDER BY câmp1 []
[,câmp2 [].] [WITH OWNERACCESS OPTIONS]
Numele de câmpuri pot sã aparã ca atare; ele trebuie incluse între paranteze drepte dacã conøin spaøii; dacã existã mai multe tabele în sursa de date, câmpurile vor fi prefixate cu numele tabelului (urmat de .). Clauzele si parametrii acestora au urmãtoarele semnificaøii:
sursa_de_date - numele tabelului sau interogãrii din care se selecteazã datele (poate fi eventual urmat de "AS alias"). Între tabele se pot stabili relaøii de tipurile prezentate în paragraful destinat relaøiilor: între valori egale - INNER JOIN, la legãturile pe valori se adaugã înregistrãrile din primul sau al doilea tabel care nu au corespondent - LEFT JOIN sau RIGHT JOIN. Convenim sã notãm aceste denumiri cu tip_relatie. Astfel, formatul sursei de date poate fi, pentru douã tabele relaøionate: tabel1 tip_relatie tabel2 ON tabel1.câmp1=tabel2.câmp2, unde ultima expresie specificã legãtura dintre câmpurile tabelelor. Dacã baza de date conøine mai multe tabele relaøionate, atunci în locul unui tabel poate apãrea o altã specificare de sursã de date de tipul anterior descris, clauza FROM având forma:
FROM (T1 tiprel1 T2 ON T1.c1=T2.c2) tiprel2 T3 ON =T3.c3 . sau
FROM T1 tiprel1 (T2 tiprel2 T3 [.etc] ON T2.c2=T3.c3) ON T1.c1=
lista_câmpuri - specificã ce câmpuri care vor apãrea în selecøie. Aceasta poate fi: "*" pentru toate câmpurile din sursele de date sau poate fi o listã care sã conøinã urmãtoarele elemente: "sursai.*", care introduce toate câmpurile din sursai, nume de câmpuri (cu convenøiile descrise anterior) sau expresii care sã conøinã nume de câmpuri. Dacã apare o expresie, acesteia i se poate atasa un nume cu care sã fie ulterior referitã folosind sintaxa "expresie [AS nume]".
conditie - precizeazã condiøia de selecøie a înregistrãrilor (criteriul dupã care se face selectarea). Ea conøine uzual (expresii cu) câmpuri ca si operanzi si poate fi formatã cu urmãtorii operatori: logici, relaøionali, Like, IS [NOT] NULL, [NOT] BETWEEN v1 AND v2, [NOT] IN (v1, v2, .). conditie mai poate avea formele: "expresie [NOT] IN (selecøie)", unde selecøie este creatã de o altã instrucøiune SELECT, "câmp op-rel (selecøie)" - dacã prin selecøie se genereazã o interogare (Join) cu o singurã coloanã, de acelasi tip cu câmp, condiøia este adevãratã dacã toate (ALL) sau cel puøin o valoare (ANY | SOME) din "câmp" este în relaøia specificatã cu câmpul rezultat din selecøie; sau "[NOT] EXISTS (selecøie)" - EXISTS este adevãratã dacã selecøia este nevidã (conøine cel puøin o înregistrare) si falsã altfel.
tip_selectie - defineste domeniul de înregistrãri din baza de date pentru care se aplicã selecøia: ALL (implicit), DISTINCT (se eliminã duplicatele), DISTINCTROW (înregistrãrile din interogare vor proveni din surse diferite, adicã nu se pot genera din aceleasi înregistrãri ale tabelelor sursã) sau TOP n [PERCENT] (primele n sau primele n% înregistrãri din sursã).
lista_ câmpuri_grupare - introduce câmpurile de grupare (dupã valori egale), cu semnificaøia cunoscutã de la interogãrile create cu ajutorul asistenului. Înregistrãrile vor fi sortate automat dupã câmpurile din listã si apoi grupate dupã valorile egale. În plus, se poate introduce o filtrare a înregistrãrilor care sã aparã în rezultatul final folosind clauza HAVING. Relativ la un grup de înregistrãri, se pot aplica funcøiile: Sum(expr), Avg(expr), Count(expr), Min(expr), Max(expr), sau câteva funcøii statistice (StDev, StDevP, Var, VarP).
clauza ORDER BY specificã câmpurile dupã care se face sortarea înregistrãrilor în rezultat
clauza WITH OWNERACCESS OPTIONS atribuie drepturi de acces suplimentare "proprietarului" (Owner).
Pentru o sursã de date se pot obøine informaøii de sintezã, similare rezultatelor din interogãrile "Crosstab", folosind instrucøiunea:
TRANSFORM functie_statistica instr-SELECT PIVOT expr_grup
[IN (val1 [, val2] .)]
unde instr-SELECT conøine gruparea doritã în clauza GROUP BY, expr_grup este expresia dupã care se face înpãrøirea în subgrupuri iar clauza IN introduce lista de valori pentru expr_grup în care vor fi incluse înregistrãrile selectate (pentru care se genereazã informaøiile de sintezã). Pentru înregistrãrile din fiecare subgrup, se calculeazã valoarea expresiei calculatã cu functie_statistica
b) Crearea unui tabel
Un tabel nou se poate crea în baza de date curentã sau în altã bazã de date cu instrucøiunile:
SELECT lista_câmpuri INTO tabel_nou [IN baza_date]
[FROM sursa_date] [WHERE conditie]
[ORDER BY câmp1 [][, câmp2 [].]
unde tabel_nou este numele tabelului care se creeazã, lista_câmpuri - câmpurile care se depun, sursa_date - tabelul a cãrui struturã se introduce în noul tabel, conditie - condiøia îndeplinitã de înregistrãrile care se copiazã în noul tabel iar ORDER BY - clauza de ordonare pentru înregistrãrile depuse.
c) Adãugare de înregistrãri
Adãugarea de înregistrãri la un tabel se poate realiza cu instrucøiunile:
INSERT INTO tabel [(câmp1 [,câmp2] . )] VALUES (val1 [,val2] .)
unde valorile val1 ,val2, . se atribuie câmpurilor câmp1 ,câmp2 . sau
INSERT INTO tabel [IN baza_date] [(lista_câmpuri_1)]
SELECT lista_câmpuri_2 FROM sursa_date
unde în tabel se adaugã înregistrãrile rezultate în urma execuøiei interogãrii SELECT
d) Actualizarea
Modificarea datelor dintr-un tabel se poate realiza cu instrucøiunea:
UPDATE tabel SET lista_atribuiri [WHERE conditie]
e) Stergerea de înregistrãri se face cu instrucøiunea:
DELETE [lista_câmpuri] FROM tabel [WHERE conditie]
Se vor sterge înregistrãrile din tabel care îndeplinesc conditie
Efectul urmãtoarelor instrucøiuni SQL nu se poate realiza cu ajutorul asistenøilor.
f) Crearea de tabele indexate si modificarea indecsilor
CREATE TABLE nume_tabel (câmp1 tip1 [(dim1)] [index1]
[, câmp2 tip2 [(dim2)] [index2]].
[, lista_declaratii_index])
Se creeazã un tabelul nume_tabel, care are câmpurile câmp1, câmp2. cu tipurile tip1, tip2. . Pentru câmpurile de tip text se specificã si dimensiunea (numãrul maxim de caractere).
O declaraøie de index pentru un câmp poate cere formarea unui index cu valori unice, pentru cheia primarã, sau stabilirea unei legãturi cu cheia primarã a altui tabel (clauza REFERENCES), în forma:
CONSTRAINT nume_index
Modificarea descrierii unui tabel se poate realiza cu:
ALTER TABLE nume_tabel
DROP
unde ADD adaugã un câmp iar DROP sterge câmp.
Crearea unui index pentru un tabel se mai poate face cu:
CREATE [UNIQUE] INDEX nume_index ON tabel (lista_câmpuri)
[WITH ]
Stergerea unui tabel sau index se poate face cu:
DROP
O reuniune de interogãri se poate crea cu sintaxa:
interogare1 UNION [ALL] [interogare2 UNION [ALL]].
|