<<< Acasã / Home >>>

 SeminariiLaboratoare
 Sursa cunoaºterii si dezvoltãrii personale


 Nu exista probleme, exista doar rezolvari ...
Mai 04, 2024 - 04:36 PM  
Laboratoare - Seminarii

Suport Seminarii
· Toate Seminariile

· Formulare
· Seminar VBA
· Seminar Rapoarte

Documentaþie
· Site VECHI Seminarii

Accesãri Site
Azi: 24
Ieri: 24
Total: 112009 accesari
din 01.12.2003

Programarea dirijata pe evenimente in Access 2000
.: Data 14-Dec-2003 :: Accesãri: 2054 :: Tipãreþte pagina curentã :: Tipãreºte tot:.
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.

~ fig. 3 ~

Evenimentele OnOpen, o­nClose,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 -> o­nLoad
Ordinea de declansare a evenimentelor la inchiderea unui formular este:
OnUnlload -> o­nClose

Exemplu de tratare a cellor patru evenimente pe formularul de introducere a furnizorilor. Pe evenimentul o­nOpen 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 o­nLoad vom afisa data si ora curenta in bara de titlu a ferestrei. La evenimentul o­nUnload 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 o­nOpen (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

 

 

 

 

 

 

.: Înapoi la subiect Baze de date Ms Access
Click

Web site powered by PostNuke ADODB database libraryPHP Language

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest (c) 2003 by me
This web site was made with PostNuke, a web portal system written in PHP. PostNuke is Free Software released under the GNU/GPL license.
You can syndicate our news using the file backend.php

Fatal error: Call to a member function Execute() on a non-object in /home/hosting/seminarii/includes/pnSession.php on line 401