Sunteți pe pagina 1din 51

BAZE DE DATE

– CURS 10 -

Conf.univ.dr. Logica BĂNICĂ


PROGRAMARE VBA

Controale VBA:
 Formular (Form)
 Buton de comandă (Command
Button)
 Casetă de dialog (MsgBox)
 Eticheta (Label)
Programare VBA
Proprietăţile unui obiect (Properties) sunt
grupate astfel:
• Format – sunt opţiuni legate de modul de
prezentare al controlului;
• Data – controlează sursa datelor, posibilităţi
de editare, adăugare, ştergere date;
• Event – specifică evenimentele posibile ale
obiectului;
• Other – proprietăţi diverse, cum ar fi numele
obiectului sau bara de instrumente ataşată
unui formular;
• All – lista tuturor proprietăţilor.
Programare VBA
• Data proprietăţi:
- Allow Additions, Deletions, Edits sunt
proprietăţi referitoare la câmpurile unui tabel
sau la permisiunea de adăugare, modificare şi
ştergere a valorilor din caseta de tip text.
• Events conţine evenimentele posibile ale unui
obiect, dintre care numai unele sunt
interesante pentru aplicaţie şi acestora
programatorul le ataşează proceduri-
eveniment.
Programare VBA

• Unui obiect plasat pe interfaţa grafică îi pot


corespunde mai multe proceduri de tratare a
evenimentelor.

• Ele se execută numai dacă utilizatorul


declanşează evenimentul respectiv.
Programare VBA

Sunt 4 categorii de evenimente:


• declanşate de la tastatură (apăsarea unei
taste);
• declanşate de mouse (activare buton sau
mutarea lui peste obiect);
• modificări ale unor proprietăţi (închidere/
deschidere formular);
• declanşate de sistem (depăşire spaţiu disc,
fişier inexistent).
Programare VBA

• Evenimente frecvent folosite:


• On Click, On Mouse Over
• On Got Focus/On Lost Focus
• After Update
• On Delete, On Exit, On Enter.
Programare VBA

Proiectantul stabileşte răspunsul la un eveniment:


•modul Design - activarea proprietăţilor
(Properties)
Properties
•Submeniul Event - alegerea evenimentului la care
va reacţiona obiectul.

Există 3 modalităţi de creare a răspunsului


(Choose Builder):
• Expression Builder - introducerea unei funcţii
• Macro Builder - ataşarea unei macrocomenzi
• Code Builder - scrierea unui cod program.
Programare VBA

Pentru crearea procedurilor-eveniment se


parcurge secvenţa următoare:
•Se deschide formularul pe care se află
obiectul în modul Design;
Design
•Se selectează obiectul şi se accesează
proprietăţile acestuia Properties;
Properties
•Dintre proprietăţi se alege grupul Event
Properties;
Properties
•Se alege evenimentul şi prin Choose Builder -
Code Builder se ajunge la editorul VBE;
•Se scrie procedura-eveniment.
procedura-eveniment
Programare VBA

I. Formularul

Evenimente ale formularului (grupul Event):


• On Open, On Close – deschidere şi
închidere formular
• On Resize – schimbarea dimensiunii
• On Click, DblClick – activare şi dublă-
activare cu mouse.
Obiecte ACCESS

Declararea si atribuirea variabilei-obiect


buton prin program VBA unui control din
Formular: Cmd_test
Dim buton as CommandButton
Set buton= Formular ! Cmd_test
Obiecte ACCESS

Declararea si atribuirea variabilei-obiect


caseta_text prin program VBA unui
control din Formular: TextBox_2
Dim caseta_text as TextBox
Set caseta_text= Formular ! TextBox_2
caseta_text.Text=“Afisare text”
Obiecte ACCESS
Modificarea mai multor proprietati ale unui
obiect se poate simplifica cu ajutorul
secventei:
With nume_obiect
……………….. ‘ proprietati modificate
End With
Exemplu pentru TextBox:
With caseta_text
.Enabled=True
.FontSize=14
. Text=“Operatii multiple”
End With
Programare VBA

Private Sub Form_Click()


Label2.Caption = "Modificata de click cu mouse“
End Sub

Private Sub Form_Resize()


Label2.Visible = True
Label2.Caption = "Modificata de redimensionare"
End Sub
Programare VBA
Programare VBA

II. Buton de comandă


• Este controlul cel mai frecvent utilizat în
programele VBA.
• Evenimentele unui astfel de buton sunt:
- activarea cu mouse-ul (Click sau DblClick),
- activarea prin tastatură (KeyPress),
- focalizarea (On Got Focus)
- pierderea focalizării (On Lost Focus).
Programare VBA

II. Buton de comandă


Acţiunile executate frecvent:
- deschiderea altui formular sau a unui raport,
- căutarea unei înregistrări într-o tabelă,
- declanşarea unei proceduri de validare a unui
câmp sau un import/export de fişier.

Cu ajutorul Command Button Wizard se poate


ataşa una dintre operaţiile predefinite, din cele 6
categorii descrise la Formular de dirijare.
Programare VBA

Sintaxa apelării unui buton de comandă:


DoCmd.nume_operaţie arg1,arg2,arg3, arg4,
arg5

• Argumentele sunt stabilite în funcţie de


operaţia selectată.
Programare VBA

DoCmd.OpenForm n_form, mod_afiş, n_filtru,


condiţie, m_date, m_fereastra
• n_form – nume formular
• mod_afiş – deschiderea formularului în Form View,

Design View, Print Preview


Exemplu: acDesign, acNormal default, acPreview
• n_filtru – ataşarea unui filtru operaţiei pentru
selectarea anumitor date; numele unei interogari;
• condiţie – formulare condiţie de selectare
înregistrări;
Programare VBA
• m_date – poate lua valorile Add (adăugare date),
Edit (modificare) sau ReadOnly (citire);
Exemplu: acFormAdd, acFormEdit, default
acFormReadOnly
• m_fereastra – deschiderea ferestrei în mod
Normal, Icon, Hidden, Modal.
Exemplu: acIcon, acWindowNormal
Singura proprietate din Data a butonului este:
• Enabled – accesibilitatea butonului.

Submeniul Other din Properties:


• Name - schimbarea numelui butonului, care
implicit era Command0, Command1 etc.
Exemplu de folosire a unui buton, cu proprietatea
Name=b_citeste şi care deschide formularul
„Produse”.
Private Sub b_citeste_Click()
Dim nume_form As String
On Error GoTo mes_eroare
nume_form = “Produse"
‘Deschide formular Produse
DoCmd.OpenForm nume_form, acNormal

' iesire normala din procedura


Exit Sub
mes_eroare: MsgBox (Err.Description) ' mesaj
eroare
Programare VBA
III. Caseta de dialog MsgBox
Sintaxa acestei comenzi este următoarea:
MsgBox (mesaj [,butoane][,titlu][,help][,context])
Funcţia afişează într-o fereastră mesajul şi aşteaptă
activarea unui buton de către utilizator, după care
dă controlul secvenţei următoare din program.
Mesajul - şir de caractere încadrat între ghilimele;
Butoanele - sunt valori predefinite ale tipului de
răspuns, care stabilesc şi simbolul grafic ataşat;
Titlul - un şir de caractere care apare în bara de titlu a
ferestrei de mesaj.
Programare VBA - MsgBox
Help - identifică fişierul de explicaţii ataşat mesajului.
Context - expresie numerică ce reprezintă un număr
asignat fişierului Help.

Buton Explicaţii
vbOKOnly răspuns OK
vbOKCancel Răspunsuri OK şi Cancel
vbAbortRetryIgnore Răspunsuri Abort, Retry şi Ignore
vbYesNoCancel Răspunsuri Yes, No, Cancel
vbYesNo Răspunsuri Yes, No
vbCritical Buton de atenţionare, răspuns Ok
vbInformation Buton de informare, răspuns Ok
Programare VBA
Funcţia MsgBox returnează o valoare care indică butonul
activat de utilizator şi în funcţie de care programul
poate lua o decizie:

Constantă Buton selectat


vbOK OK
vbCancel Cancel
vbAbort Abort
vbRetry Retry
vbIgnore Ignore
vbYes Yes
vbNo No
Programare VBA

Exemplu : Pe formular se plasează un buton de


comandă, la activarea lui se deschide o casetă
de dialog cu 2 răspunsuri posibile (vbYesNo).

Răspunsul=Yes  procedura-eveniment deschide


un alt formular, numit „Produse”,
Răspunsul=No  afişează un text în eticheta
Label1.
Programare VBA

Private Sub Command2_Click()

rasp=MsgBox("Deschide formular?",vbYesNo,
"Fereastra_mesaj")
If rasp = vbYes Then ‘Raspuns
Yes
DoCmd.OpenForm “Produse"
Else
Label1.Caption = "Raspuns NU!“ 'Raspuns No
End If

End Sub
Programare VBA
Programare VBA
IV. Eticheta (Label)
Este un control simplu care poate funcţiona ataşat altui
control sau independent. Se identifică prin Aa.
Proprietăţile cele mai importante sunt :
a) Meniul Format – conţine proprietăţi ale modului de
prezentare a etichetei:
• Visible - Yes (eticheta este vizibilă) ;
• Caption – textul conţinut de etichetă, eventual
=Date() – data calculatorului ;
• Fore Color, Font Name, Font Size – proprietăţi ale
fonturilor;
• Back Color, Back Style – proprietăţi ale
fundalului;
Programare VBA - Eticheta (Label)
b) Meniul Other :
• Name - identifică obiectul în cadrul
programelor.
• ControlTipText - este textul care apare dacă
se reţine mouse-ul pe obiect (Screen Tip)
c) Meniul Event – evenimentele ataşate obiectului:
• On Click/ On Dbl Click,
• On Mouse Up/Down,
• On Mouse Move.
Programare VBA
Ataşarea etichetei (Label) la un alt obiect grafic se
face:
- Se selectează eticheta
- Se activează meniul contextual (click dreapta)
- Se alege comanda Cut
- Se poziţionează eticheta pe obiect
- Se dă comanda Paste.
 O activare cu mouse-ul a ertichetei ataşate unui
obiect este echivalentă cu activarea obiectului.
OBS. Etichetele nu se pot lega de câmpuri din
tabele, nu au un control de tip RecordSource.
Programare VBA
V. Cutie de tip text (TextBox)
- Permite afişarea şi citirea datelor la/de la
utilizator.
Proprietăţile cele mai importante sunt :
a) Meniul Format – proprietăţi legate de modul de
prezentare a informatiilor în caseta-text
(numere de diferite tipuri, text, data);
• Visible : Yes (caseta este vizibilă) ;
• Fore Color, Font Name, Font Size – proprietăţi
ale fonturilor casetei;
• Back Color, Back Style – proprietăţi ale
fundalului casetei;
Programare VBA - TextBox
b) Meniul Data
• ControlSource – defineşte obiectul de care este
legat controlul:
• un câmp dintr-o tabelă,
• necompletată – Unbound – care permite intrări
de date, in timpul executiei;
• Input Mask : modul de introducere a datelor în
casetă (Password, Long Date, Short Date, Phone
Number);
• Validation Rule, Validation Text – validare date şi
textul afişat când regula de validare nu este
îndeplinită ;
Programare VBA - TextBox

b) Meniul Data
• Default Value – valoarea care apare în casetă la
deschiderea formularului,
• Enabled şi Locked – controlează dacă caseta
poate fi accesibilă şi dacă modificarea
conţinutului ei este posibil ;
• RunningSum – este o proprietate pe care o au
numai casetele dintr-un raport şi poate avea
valorile OverAll sau OverGroup; se foloseşte la
numerotarea liniilor rapoartelor.
Programare VBA - TextBox

b) Meniul Data

OBS. Evenimente frecvent folosite în lucrul cu


TextBox sunt:
• Before_Update, After_Update,
• Change,
• On GotFocus, On LostFocus,
• On Click, On Dbl Click.
Programare VBA

Exemplu - Evenimentul tratat este introducerea


unei parole, procedura-eveniment este
prezentată în continuare:

Private Sub Caseta_parola_AfterUpdate()


If Caseta_parola.Text = "abcdef" Then
DoCmd.OpenForm "Form1"
Else:
label_parola.Visible = True
label_parola.Caption = "Retastati parola"
Caseta_parola.SetFocus
End If
End Sub
Programare VBA
OBS 1. Este necesară setarea opţiunii
Data - InputMask – Password
pentru ca parola să nu fie vizibila la tastare.
Programare VBA

OBS 2. O serie de proprietăţi ale obiectelor nu


sunt valabile decât în timpul execuţiei
aplicaţiei. În cazul casetei-text, proprietatea
Text preia valoarea tastată de utilizator sau
afişează o valoare calculată prin program.

Exemplu:
If Caseta_parola.Text = "abcdef”
………………………………….
Programare VBA

OBS 3. Obiectele Access au ataşate şi o serie de


metode, pe care le putem numi şi acţiuni
executate de obiect.

Exemplu: Metoda SetFocus permite mutarea


controlului pe un obiect specificat.

Text0.Setfocus ‘focalizează controlul pe


caseta-text Text0
CURS 10

 Controale VBA:
Caseta de listare (ListBox)
Caseta de tip Combo (ComboBox)
 Partajarea datelor cu alte aplicaţii
Programare VBA

IX. Controlul ComboBox (listă combinată)


 Este o combinaţie dintre controlul de tip listă (ListBox
( ) şi
cel de tip casetă-text (TextBox
( ).
 ComboBox permite afişarea mai multor elemente sub
formă de listă şi selectarea unuia dintre ele, care va fi
introdus în caseta-text.
 O altă opţiune posibilă este introducerea unui şir de
caractere de la tastatură, prin intermediul cutiei de text.
 Se poate genera cu ajutorul Wizard-ului sau prin
transformarea unui control TextBox în ComboBox: clic-
dreapta şi Change To.
Programare VBA

Proprietăţile cele mai importante ale controlului ComboBox


sunt identice cu ale ListBox şi TextBox:
 ListCount – permite citirea într-o variabilă de tip
Integer a numărului de elemente ale listei;
 ListIndex – aflarea indicelui elementului selectat din
listă; dacă nu este nici un element selectat, valoarea
indicelui este -1;
 Text – citirea elementului selectat din listă sau a
datelor introduse de la tastatură.
Programare VBA
Programare VBA

Metodele frecvent folosite sunt:


 AddItem – adăugarea unui element în listă;
 RemoveItem – ştergerea unui element din listă.
Evenimente mai importante sunt:
 Change – se declanşează când utilizatorul modifică
informaţia din caseta-text sau dacă se modifică prin
program valoarea proprietăţii Text; este evenimentul
implicit al controlului ComboBox;
 DropDown – are loc la activarea butonului de
derulare a listei, plasat lângă caseta-text;
 LostFocus – pierderea focalizării;
 Click – selectarea controlului cu mouse-ul.
Programare VBA

Exemplu: Să se creeze casete de tip ComboBox pe


cîmpurile id_student şi id_materie din tabela Note,
care să permită utilizatorului să selecteze valori din
tabelele Studenţi şi Materii.
 Pentru rezolvarea problemei se deschide un formular
nou, în modul Design View, se crează un control
ComboBox cu Wizard, care se conectează la tabela
Studenţi, câmpurile id_student şi nume, cu memorarea
valorii Studenti.id_student în note.id_student.
 Similar şi pentru câmpul id_materie, preluat din tabela
materii.id_materie.
 Câmpul nota se aduce din tabelă, folosind proprietatea
Field List.
Programare VBA
Programare VBA

X. Module de program
 Am precizat în paragraful anterior că se pot scrie în VBA
module de program care să nu fie ataşate unui
eveniment şi să existe posibilitatea apelării lor din orice
punct al aplicaţiei, cu comanda:
Call nume_procedura sau nume_procedura.
Exemplu: Validarea CNP-ului prin funcţia Validare_CNP:
 Argument wCNP – variabilă de tip Text13
 Returnează valoarea 1 dacă CNP-ul este corect sau 0, în
caz contrar.
Programare VBA

 Descompunem CNP-ul în 13 cifre şi folosim combinaţia


de cifre 2 7 9 1 4 6 3 5 8 2 7 9
 Algoritmul de calcul este următorul:
 Var_calcul=c1*2+c2*7+c3*9+c4*1+c5*4+c6*6+c7*3+c8*5
+c9*8+c10*2+c11*7+c12*9
 Se realizează operaţia mod(restul împărţirii) între
Var_calcul şi numărul prim 11, iar rezultatul se compară
cu cifra a 13-a a CNP-ului.
Programare VBA
Public Function Validare_CNP(wCNP As String) As Byte
Dim Var_Calcul As Long, Cifra_calc As Byte, Cifra_prel As
Byte, corect As Byte
Var_Calcul = 2 * Val(Mid(wCNP, 1, 1)) +
7 * Val(Mid(wCNP, 2, 1)) +
9 * Val(Mid(wCNP, 3, 1)) +
1 * Val(Mid(wCNP, 4, 1)) +
4 * Val(Mid(wCNP, 5, 1)) +
6 * Val(Mid(wCNP, 6, 1)) +
3 * Val(Mid(wCNP, 7, 1)) +
5 * Val(Mid(wCNP, 8, 1)) +
8 * Val(Mid(wCNP, 9, 1)) +
2 * Val(Mid(wCNP, 10, 1)) +
7 * Val(Mid(wCNP, 11, 1)) +
9 * Val(Mid(wCNP, 12, 1))
Programare VBA

Cifra_calc = Var_Calcul Mod 11


Cifra_prel = Val(Mid(wCNP, 13, 1))

If Cifra_calc = 10 Then ‘ operatia Mod -> 10


Cifra_calc = 1
End If

If Cifra_prel <> Cifra_calc Then


Validare_CNP = 1
Else
Validare_CNP = 0
End If
End Function
VĂ MULŢUMESC PENTRU ATENŢIE!

ÎNTREBĂRI ?

S-ar putea să vă placă și