Un obiect Access.Form, care lucrează cu formularele Access cu VBA, deschizând un formular Access, lucrează cu controale pe un formular Access
Unul dintre cele mai importante elemente ale accesului, folosit pe scară largă în aplicații, este formularele. Formularele de acces sunt concepute pentru aceleași lucruri ca și formele VBA convenționale, în primul rând, containerele pentru comenzi grafice. Dar dispozitivul Formularelor de acces, funcționalitatea, metodele de lucru cu ele și chiar seturile de controale care pot fi plasate pe ele sunt foarte diferite de formele VBA obișnuite pe care le puteți utiliza în Word și Excel.
Formularele de acces sunt utilizate:
- Pentru a edita intrările în tabelele bazei de date Access și sursele de date externe. Pentru a crea astfel de formulare, nu aveți nevoie de nici o programare - creați doar o formă în modul Design sau utilizați Expertul de creare a formelor. Puteți să vă conectați la o sursă de date externă (de exemplu, o bază de date SQL Server sau Oracle) utilizând fișierul File -> External Data -> Links to tables din Access.
- Ca panoul de control al aplicației. Foarte des, o aplicație bazată pe Access creează o formă inițială care se deschide când această aplicație este lansată. Acest formular oferă butoane și alte controale pentru a apela alte formulare, rapoarte, macrocomenzi, ieșirea din aplicație și pentru a efectua alte operații. După închiderea celorlalte forme de control se transferă din nou la forma inițială.
- Doar pentru a oferi utilizatorului posibilitatea de a efectua orice acțiune. De exemplu, formularul poate fi utilizat pentru a selecta parametrii raportului de către utilizator, pentru a încărca datele într-o aplicație externă (de exemplu, Excel) și așa mai departe.
Cum se lucrează cu formularele de acces de la VBA?
Dim oA Ca AccessObject
Pentru fiecare oA În CurrentProject.AllForms
Dacă accesați formularele din colecția AllForms după index, rețineți că numerotarea formularelor din această colecție începe cu 0. De asemenea, puteți accesa elemente din această colecție după nume:
O proprietate specială a lui IsLoaded determină dacă acest formular este deschis (adică este încărcat în RAM).
În mod programatic, formele pot fi găsite într-un alt mod. Toate formele de acces deschise sunt plasate automat în colecția Application.Forms și sunt reprezentate ca un obiect Form. Acesta este deja un obiect obișnuit ale cărui proprietăți corespund proprietăților formei, accesibile printr-o interfață grafică. De exemplu, dacă formularul Form1 este deschis, puteți obține informații despre lățimea sa după cum urmează:
Debug.Print Application.Forms ("Formularul 1"). Lățime
Această proprietate poate fi, de asemenea, utilizată pentru a modifica lățimea formularului, dar în acest scop este recomandată utilizarea metodei DoCmd.MoveSize (), care modifică dimensiunea obiectului activ (de exemplu, forma noastră dacă este activă):
DoCmd.MoveSize Lățime: = 10000
O altă posibilitate: dacă lucrați cu codul formularului însuși sau al controalelor acestuia (de exemplu, evenimentul Click al unui buton aflat pe formular), atunci puteți accesa simplu obiectul din formular. Pentru a face acest lucru, utilizați formularul de cuvânt cheie.
Cum pot deschide formularul?
Primul lucru de spus este că, dacă aveți nevoie să deschideți un program programat în Word sau Excel, în Access nu este necesar. Puteți deschide manual formularul din fereastra bazei de date (a se vedea Figura 12.1). Aceeași fereastră creează de obicei forme noi sau modificări existente.
Fig. 12.1 Fereastra de formular din Access
O altă metodă frecvent utilizată este pur și simplu rularea formularului atunci când deschideți baza de date Access. Pentru a face acest lucru, din meniul Instrumente, faceți clic pe Opțiuni de pornire și selectați formularul dorit din formularul de ieșire / lista de pagini. Dacă debifați toate celelalte căsuțe de validare, aplicația poate arăta așa cum este prezentată în Fig. 12.2:
Fig. 12.2 Toate funcțiile suplimentare de acces sunt ascunse de utilizator
Fereastra bazei de date va fi ascunsă de utilizator, ceea ce înseamnă că utilizatorul nu va putea obține informații despre tabelele din baza noastră de date sau despre alte forme sau despre module - toate elementele de serviciu ale bazei de date vor fi ascunse de acesta. În principiu, un utilizator poate ocoli această protecție ținând butonul apăsat în timp ce rulează accesul
Dacă totuși trebuie să deschideți formularul programabil (de exemplu, dintr-un alt formular), puteți utiliza metoda DoCmd.OpenForm () în acest scop. În forma cea mai simplă, această metodă are pur și simplu un parametru cu numele formei:
Dacă formularul este deja deschis, atunci această metodă, desigur, nu deschide din nou forma, ci o activează pur și simplu. Metoda DoCmd.OpenForm () acceptă, de asemenea, câțiva parametri opționali, prin care puteți configura filtrul pentru a afișa înregistrările într-o formă, un mod deschis (de exemplu modalitate) și așa mai departe. Formularul este închis folosind metoda DoCmd.Close (). Dacă trebuie să ascundeți formularul pentru a stoca valorile introduse de utilizator și a le afișa pe următorul afișaj, puteți face pur și simplu formularul invizibil setând proprietatea Visible la False.
Forma de care avem nevoie de obicei nu este în sine, ci ca un container pentru controlul asupra ei. În mod normal, nu este nevoie să creați elemente de comandă programabil - este mult mai ușor și mai convenabil să le plasați pe un formular în modul de proiectare pentru formular. Într-un set de controale pentru forma cu condiția ca controale familiare - câmpuri de text, etichete, butoane, casetele de selectare și butoane radio, precum și elemente noi - un cadru obiect liber și legat, pauze de pagini, formulare subordonate / rapoarte, etc. În colțul din dreapta sus al casetei de instrumente, în formularul Access Designer, există un buton Special Wizard. În cazul în care este apăsat, adăugând la forma comenzilor uzuale (de exemplu, butoane) va duce la apariția expertului, care va încerca să vă ajute pentru a genera automat codul VBA necesare pentru acest control (vezi. Fig. 12.3)
Fig. 12.3 Expertul de creare a butoanelor
Puteți utiliza codul generat de expert ca înlocuitor al înregistratorului macro (care nu este în Access) pentru a înțelege cum puteți efectua anumite acțiuni.
Pentru ce sunt folosite non-standard (în raport cu formele obișnuite de VBA) controale:
De exemplu, să presupunem că în baza noastră de date Access există un tabel cu trei coloane, așa cum se arată în Fig. 12.4.
Fig. 12.4 Tabel pentru stocarea șabloanelor Word
În coloana Fișier avem șabloanele Word care sunt folosite pentru a genera rapoarte. Am pus controlul asupra formularului din formular. Un cadru atașat al obiectului numit WordTemplate. După aceea, avem deja tot ce avem nevoie pentru a crea un fișier Word bazat pe șablonul din baza de date. Pentru buton, făcând clic pe care se va genera raportul, puteți folosi următorul cod:
"Obținem referința oFrame la obiectul cadrului atașat pe formular
Dim oframe ca BoundObjectFrame
Setați oFrame = oForm.Controls ("WordTemplate")
"Folosind metoda DLookup (), încărcăm în ea valoarea coloanei File din tabel
'Șabloane, unde numărul liniei (valoarea coloanei Num) este 1
oFrame = Application.DLookup ("[File]", "Șabloane", "[Num] = 1")
'Deschideți obiectul într-o fereastră separată a aplicației - adică, creați
'Document Word bazat pe șablonul încărcat în cadrul obiectului din formular
'Activați obiectul aplicației
"Avem o referință la Word în variabila oWord
Dim oWord ca Word.Application
Setați oWord = GetObject ("Word.Application")
"Avem o legătură cu documentul pe care l-am creat
Dim oDoc ca Word.Document
Setați oDoc = oWord.ActiveDocument
"Apoi, lucrăm cu unelte Word, de exemplu, introduceți textul necesar
"în locurile marcate cu marcaje
Desigur, va fi mai corect să faceți acest cadru atașat al obiectului pe formularul inițial invizibil - astfel încât utilizatorul să nu poată activa acest obiect din proprie inițiativă.
- Comanda de întrerupere a paginii determină începutul ecranului nou format.
- Formular / raport subordonat - folosit pentru a plasa sub formă de forme, tabele sau rapoarte subordonate.
După cum sa menționat deja, controalele programatice sub formă de Acces trebuie să fie create rareori. Dacă aveți nevoie de un set variabil de comenzi asupra formularului, va fi mai corect să creați toate controalele necesare încă de la început și, dacă este necesar, să le faceți vizibile sau invizibile. Cu toate acestea, este posibilă și crearea unor controale asupra formularului în mod programatic. Această operație este efectuată utilizând metoda Application.CreateControl (), care ia un număr de parametri - numele formei pe care este creat controlul, tipul de control, locația acestuia pe formular etc.
Accesul la valorile controalelor din formular se face prin intermediul colecției Controls, care poate funcționa cu numele comenzilor: