Creeaza.com - informatii profesionale despre


Evidentiem nevoile sociale din educatie - Referate profesionale unice
Acasa » referate » informatica » access
Programarea dirijata pe evenimente in Access 2000

Programarea dirijata pe evenimente in Access 2000


Programarea dirijata pe evenimente in Access 2000

Se poate vorbi de programare orientata pe evenimente in Access 2000 in contextul formularelor, rapoartelor si controalelor de pe un formular/raport sau sectiunile acestora. Evenimentele in Access 2000 pot fi de exemplu deschiderea unui formular / raport, inchiderea unui formular/raport, scrierea unei inregistrari intr-o tabela, stergerea unei inregistrari dintr-o tabela, dublu click pe mouse, activarea unui buton de comanda, o eroare etc. Tututor evenimentelor din Access 2000 li se pot atasa proceduri, macrouri, expresii. Astfel de exemplu, la evenimentul de deschidere a unui formular, se poate atasa o procedura / functie care sa testeze daca un anumit utilizator are drepturi de utilizare a acestuia sau inainte de salvarea unei inregistrari intr-o tabela se pot atasa o procedura care sa verifice respectarea anumitor corelatii dintre date etc.

In continuare vom trata evenimentele cel mai des folosite (necesare) in experienta de programatori VBA, in cadrul formularelor/rapoartelor si controalelor de pe acestea. De asemenea vom atasa evenimentelor numai proceduri/expresii, macrourile fiind un pic mai greoaie (de programat). Oricum incepand cu versiunea Access 2.0 macrourile au inceput sa cedeze teren in fata VBA -ului, in prezent majoritatea programatorilor preferand VBA.

Lista cu evenimente ce se pot trata in cadrul formularelor/rapoartelor si controalelor se poate obtine din fereastra cu proprietati, sectiunea Event (Fig. 1). Programatorul isi alege evenimentul dorit dupa care se trece la elaborarea procedurii ce se doreste a fi atasata acestuia.

 ~ fig. 1 ~



Pentru a atasa o procedura unui eveniment se activeaza , alegandu-se [Event Procedure] dupa care se activeaza .

Pentru a atasa o procedura unui eveniment, se poate apasa si  mai intai, dupa care din fereastra Choose Builder (Fig. 2) se alege Code Builder.
~ fig. 2 ~

Pentru a atasa o functie se alege Expression Builder, apoi din sectiunea Functions, se alege categoria de functii (Built-In Functions - functii Access 2000, Nume Baza de date - functii definite de utilizator). Daca sunt functii definite de utilizator se alege mai intai modul in care acestea au fost definite.

 

Procedurile atasate evenimentelor formularelor/rapoartelor sunt memorate in module care sunt atasate formularelor/rapoartelor. Acestea sunt vizibile in sectiunea Module a bazei de date. Fiecare formular/raport are atasat un singur modul. Din acest modul se poate referi formularul/raportul curent Me, asa cum se va vedea in paragrafele urmatoare. Toate obiectele de pe un formular/raport sunt "vizibile" in modulul atasat acestuia, din care toate procedurile (ca si cum ar fi variabile declarate cu Private).

Procedurile atasate evenimentelor controalelor de pe un formular/raport sunt memorate in aceleasi module in care sunt memorate procedurile atasate formularelor/rapoartelor. Acestea nu trebuie apelate excplicit de catre programator nicaieri, deoarece se apeleaza automat la declansarea evenimentului.

Un eveniment odata declansat avem posibilitatea sa il ignoram (sa nu ii atasam o procedura de tratare), sa ii atasam o procedura de tratare, sau il putem abandona eventual, cu ajutorul unui parametru pus la dispozitie de procedura de tratare a evenimentului.

Evenimente atasate  formularelor

Pentru a obtine lista cu proprietati a unui formular se selecteaza mai intai formularul (Select Form din meniul Edit sau se activeaza  din partea de sus - stanga a formularului), dupa care se activeaza butonul  sau din meniul View optiunea Properties. Pentru a afisa lista cu evenimente care se pot intercepta, se alege sectiunea Event. Evenimentele pot fi emise de catre Access 2000, sau pot fi fortate sa apara. Programatorul poate abandona un eveniment sau toate evenimentele produse.

NOTA: Tratarea evenimentelor unui formular nu afecteaza evenimentele unui subformular atasat acestuia.

Evenimentele OnOpen, OnClose,OnLoad,OnUnload

OnOpen se produce la deschiderea formularului, inainte ca o inregistrare din tabela sau interogarea atasata formularului (in proprietaea Record Source) sa fie atasata pe ecran.

OnClose se produce la inchiderea si stergerea de pe ecran a formularului. Acest eveniment nu se poate abandona

OnLoad se produce la deschiderea formularului, in momentul in care o inregistrare din tabela sau interogarea atasata formularului (in prorpietatea Record Source) este afisata pe ecran. Acest eveniment nu se poate abandona.

OnUnLoad se produce la inchiderea formularului, dar inainte de stergere sa de pe ecran.

Procedura atasata evenimentului OnOpen are urmatorul antet:

Private Sub Form_Open(Cancel As Integer)

Parametrul Cancel determina daca formularul va fi deschis sau nu (pentru a nu deschide formularul trebuie setat cu valuarea True).

Procedura atasata evenimentului OnClose are urmatorul antet:

Private Sub Form_Close()

Procedura atasata evenimentului OnLoad are urmatorul antet:

Private Sub Form_Load()

Procedura atasata evenimentului OnUnload are urmatorul antet:

Private Sub Form_Unload(Cancel As Integer)

Parametrul Cancel determina daca formularul va fi deschis sau nu (pentru a nu deschide formularul trebuie setat cu valuarea True).

Ordinea de declansare a evenimentelor la deschiderea unui formular este:

OnOpen -> OnLoad

Ordinea de declansare a evenimentelor la inchiderea unui formular este:

OnUnlload -> OnClose

Exemplu de tratare a cellor patru evenimente pe formularul de introducere a furnizorilor. Pe evenimentul OnOpen se va cere tastarea unei parole de autorizare a folosirii formularului. Acesta se poate face fie printr-un InputBox, fie printr-un alt formular sau poate fi setata din componenta de securitate oferita de Access. In varianta cu InputBox sau fomular daca utilizatorul nu site parola atunci nu se va deschide formularul (punem Cancel = True adica abandonam evenimentul care urma sa se produca). De asemenea se va introduce o secventa pentru afisarea unui Toolbar si o secventa pentru curatirea barei de stare de eventualele mesaje ramase acolo (de obicei, dupa o eroare netratata, daca in acel moment nu era afisat un mesaj de catre programator in bara de stare, acesta ramane acolo pana la afisarea altui mesaj). Pe evenimentul OnLoad vom afisa data si ora curenta in bara de titlu a ferestrei. La evenimentul OnUnload o sa testam daca utilizatorul este sigur ca doreste inchiderea formularului (daca nu este de acord punem Cancel - True adica abandonam evenimentul care urma sa se produca). La inchiderea efectiva a formularului vom anula toate mesajele din bara destare si vom dezactiva de pe ecran Toolbarul afisat in evenimentul OnOpen (vezi fig. 4)

~ fig. 4 ~

Continutul din fig. 4 sub forma de text:

Private Sub Form_Close()

' Sterg Toolbarul de pe ecran

DoCmd.ShowToolbar 'AlteButoane', acToolbarNo

' Sterg bara de stare

SysCmd acSysCmdClearStatus

End Sub

Private Sub Form_Load()

'Setez bara de titlu a formularului

Me.Caption = 'Furnizori, Data: ' & Date & ' , ora : ' & Time

End Sub

Private Sub Form_Open(Cancel As Integer)

' Cer o parola cu Inputbox

If InputBox('Tasteaza parola: ', 'Atentie') <> 'cuvparola' Then

    Cancel = True

    Else

        'Afisez toolbar

        DoCmd.ShowToolbar 'AlteButoane', acToolbarYes

        'Sterg bara de stare

        SysCmd acSysCmdClearStatus

End If

End Sub

Private Sub Form_Unload(Cancel As Integer)

' Testez daca utilizatorul este sigur de inchiderea formularului

If MsgBox('Sunteti sigur? ', vbQuestion + vbYesNo, 'Atentie') = vbNo Then

    'Abandonez inchiderea formularului (evenimentul)

    Cancel = True

End If

End Sub





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.