Académique Documents
Professionnel Documents
Culture Documents
Macrocomenzi
Notiuni generale
Macrocomanda (in engleza, macro) este un set de una sau mai multe actiuni care fiecare executa o anumita operatie, cum ar fi deschiderea unui formular sau tiparirea unui raport. Macrocomenzile va pot ajuta la automatizarea sarcinilor comune. De exemplu, puteti executa o macrocomanda care sa tipareasca un raport atunci cand ultilizatorul executa clic pe un buton de comanda.
In aceasta sectiune se tasteaza actiunile ce le va executa macrocomanda. In aceasta sectiune se specifica argumentele fiecarei actiuni, daca este necesar. Figura 1. Fereastra Macro.
Macrocomanda poate fi una compusa dintr-o secventa de actiuni sau poate fi un grup de macrocomenzi. De asemenea, puteti folosi o expresie conditionala pentru a determina daca in anumite cazuri o actiune va fi executata cand se ruleaza macrocomanda. Macrocomanda din figura alaturata este compusa dintr-o serie de actiuni. Microsoft Access va efectua aceste actiuni de fiecare data cand se executa macrocomanda. Pentru a executa aceasta macrocomanda, veti referi numele Afisare Produse a macrocomenzii. Daca aveti numeroase macrocomenzi, gruparea macrocomenzilor in grupuri corelate va poate ajuta la gestionarea mult mai usoara a bazei voastre de date. Pentru a afisa numele macrocomenzilor pentru un grup de macrocomenzi, in fereastra Macro se selecteaza comanda Macro Names din meniul View sau se executa clic pe butonul Macro Names ( ) din bara instrumentelor Macro Design. De exemplu, grupul de macrocomenzi, numit Butoane din figura alaturata, este realizat din trei macrocomenzi corelate: Angajati, Produse si ActualizareProduse. Fiecare macrocomanda efectueaza o actiune OpenForm, iar macrocomanda Produse efectueaza si o actiune MoveSize. Numele din coloana Macro Name identifica fiecare macrocomanda. Cand rulati un grup de macrocomenzi, Microsoft Access efectueaza actiunea din coloana Action si orice actiune ce urmeaza imediat si a caror coloana Macro Name este goala. Pentru a rula un grup de macrocomenzi, folositi numele grupului de macrocomenzi urmat de un punct si numele macrocomenzii. De exemplu, pentru a rula macrocomanda Angajati din exemplul de mai sus, va trebui sa tastati Butoane.Angajati. Pentru a utiliza o expresie conditionala care sa determine fluxul de executie al actiunilor este necesara prezenta coloanei Condition in fereastra Macro. Pentru a afisa coloana Condition, in fereastra Macro se deschide meniul View si se selecteaza Conditions sau se executa clic pe butonul Condition ( ) din bara instrumentelor Macro Design. Macrocomanda din figura alaturata axecuta actiunile MsgBox si StopMacro numai cand expresia din coloana Condition este adevarata (cand in campul CodProdus este o valoare Null). 1
Crearea macrocomenzilor
In Microsoft Access, foarte multe sarcini pot fi realizate cu ajutorul macromenzilor sau prin intermediul interfetei grafice. In multe alte programe de baze de date, multe dintre aceste sarcini necesita programare. Cand se va utiliza o macrocomanda si cand cod Visual Basic for Applications (pe scurt, VBA) depinde de cele mai multe ori de ceea ce vreti sa faceti. In continuare sunt prezentate cateva sugestii privind utilizarea macrocomenzilor si a codului VBA. Cand ar trebui utilizata o macrocomanda? Macrocomenzile reprezinta o metoda usoara de a avea grija de detaliile simple, cum ar fi deschiderea si inchiderea formularelor, afisarea si ascunderea barelor cu instrumente, rularea rapoartelor etc. Cu ajutorul lor puteti asigura usor si rapid o legatura intre obiectele bazei de date, deoarece sintaxa macrocomenzilor este simpla, iar argumentele pentru fiecare actiune sunt prezentate in sectiunea inferioara a ferestrei Macro. In plus, veti utiliza macrocomenzile in special pentru: Realizarea asignarilor globale de combinatii de taste. Efectuarea unei actiuni sau a unei serii de actiuni la deschiderea bazei de date. Totusi, puteti folosi caseta de dialog Startup pentru a determina ca anumite lucruri (cum ar fi afisarea unui formular) sa se produca la deschiderea unei baze de date. Cand ar trebui folosit Visual Basic for Applications? Codul VBA ar trebui folosit in locul macrocomenzilor pentru: O mai usoara intretinere a bazei de date. Deoarece macrocomenzile sunt obiecte separate fata de formularele si rapoartele care le utilizeaza, o baza de date continand multe macrocomenzi care raspund la evenimentele formularelor si rapoartelor poate fi dificil de intretinut. In timp ce, procedurile eveniment VBA sunt continute in definitia formularului sau raportului. Daca se muta un formular sau raport dintr-o baza de date in alta, procedurile eveniment interne formularului sau raportului sunt mutate si ele. A crea functii proprii. Microsoft Access include multe functii intrinseci, cum ar fi functia IPmt, care calculeaza dobanda unui imprumut. Aceste functii pot fi utilizate pentru a executa calculele fara a fi necesara crearea unor expresii complicate. Utilizand VBA, se poate crea functii pentru a executa fie calucule ce depasesc posibilitatile unei expresii sau pentru a inlocui expresiile complexe. In plus, functtile proprii pot fi utilizate in expresii pentru a aplica o operatie comuna la mai multe obiecte. A masca mesajele de eroare. Cand pe timpul folosirii bazei de date de catre un utilizator se produce ceva neprevazut si Microsoft Access afiseaza un mesaj de eroare, mesajul poate fi complet misterios pentru utilizator, in special daca utilizatorul nu este familiarizat cu Microsoft Access. Folosind VBA, se poate detecta producerea unei erori si fie se afiseaza un mesaj particularizat (facut pe intelesul utilizatorului) fie se executa o anumita actiune. A crea sau manipula obiecte. In majoritatea cazurilor, veti constata ca, crearea si modificarea unui obiect este multa mai usor in fereastra Design a obiectului. Totusi, in unele situatii este posibil sa fie nevoie de manipularea prin cod a definitiei unui obiect. Folosind VBA, se pot manipula toate obiectele din baza de date si insasi baza de date. A executa actiuni la nivel de sistem. Prin utilizarea intr-o macrocomanda a actiunii RunApp se poate lansa in executie o alta aplicatie Windows sau MS-DOS din aplicatia curenta, dar o macrocomanda nu poate face prea multe in afara lui Microsoft Access. Folosind VBA, puteti verifica existenta un fisier pe sistem, utiliza schimbul dinamic de date (Dynamic Data Exchange - DDE) pentru a comunica cu alta aplicatie Windows, cum ar fi Microsoft Excel si apela functii din bibliotecile de legaturi dinamice (DynamicLink Library - DLL) din Windows. A manipula pe rand inregistrarile. Codul VBA poate fi utilizat pentru a parcurge un set de inregistrari, inregistrare cu inregistrare, si a executa o operatie pe fiecare inregistrare; in timp ce, macrocomenzile lucreaza cu intregul set de inregistrari o data. 2
Microsoft Access Macrocomenzi A transmite argumente procedurilor VBA. Argumentele actiunilor unei macrocomenzi pot fi setate in fereastra Macro, dar nu pot fi schimbate pe timpul executiei. In timp ce, in VBA se pot cu transmite argumente codului vostru pe timpul executiei lui sau se pot utiliza variabile ca argumente ceva ce nu se poate face in macrocomenzi. Aceasta va asigura o mai mare flexibilitate in modul de executare a procedurilor VBA.
Sugestie: Pentru a crea rapid o macrocomanda care sa execute o actiune asupra unui anumit obiect din baza de date, se trage obiectul respectiv din fereastra Database in fereastra Macro. De exemplu, pentru a crea o macrocomanda care sa tipareasca un raport, se trage raportul respectiv intr-o linie de actiune. Pentru a face acest lucru, din meniul Windows se selecteaza comanda Tile Horizontally 3
Microsoft Access Macrocomenzi sau Tile Vertically pentru ca ferstrele Database si Macro sa fie ambele vizibile pe ecran. In fereastra Database se executa clic pe butonul corespunzator obiectului ce va fi utilizat. Din fereastra Database se trage in fereastra Macro obiectul dorit si se lasa intr-o linie de actiune. Tragerea unei macrocomenzi adauga o actiune care va rula macrocomanda, in timp ce tragerea celorlalte obiecte (tabele, interogari, formulare, rapoarte sau module) adauga o actiune care va deschide obiectul respectiv. Tabelul 1. Cele mai importante actiuni grupate dupa criteriul functionalitatii
Denumire Scop Argumente Actiuni pentru manipularea obiectelor bazei de date Deschide formularul indicat Form Name: numele formularului. OpenForm in modul specificat View: fereastra in care se deschide formularul (Form, Datasheet, Design sau Print Preview) Filter Name: numele unei interogari pentru filtrarea datelor afisate. Where Condition: clauza SQL pentru restrictionarea inregistrarilor afisate. Data Mode: modul de deschidere al formularului: Add adaugare de noi inregistrari; Edit editare; Read Only vizualizare. Window Mode: modul de deschidere a ferestrei Form (Normal, Hidden, Icon sau Dialog) Deschide interogarea Query Name: numele interogarii OpenQuery indicata in modul specificat View: fereastra in care se va deschide interogarea (Datasheet, Design sau Print Preview) Data Mode: modul de deschidere a interogarii (Add, Edit sau Print Preview) Deschide sau tipareste Report Name: numele raportului OpenReport raportul specificat View: fereastra in care se va deschide raportul (Print, Design sau Print Preview) Filter Name: numele interogarii pentru filtrarea datelor Where Condition: clauza SQL pentru restrictionarea inregistrarilor afisate sau tiparite Deschide tabela specificata table Name: numele tabelei OpenTable View: fereastra in care se va deschide tabela (Datasheet, Design sau Print Preview) Data Mode: modul de deschidere a interogarii (Add, Edit sau Print Preview) Inchide un obiect deschis al Object Type: tipul obiectului (Table, Query, Form, Close bazei de date Report, Macro, sau Module) Object Name: numele obiectului Save: specifica salvarea obiectului (Prompt, Yes sau No) Stabileste sau modifica Item: numele campului, controlului sau proprietatii SetValue valorile campurilor, Experssion: expresia utilizata pentru stabilirea noii controalelor sau valori. proprietatilor de pe un Actiunea nu se poate utiliza pentru a modifica formular sau raport valorile din controalele calculate dpe formular sau raport. Muta focus-ul pe controlul Control Name: numele campului sau controlului GoToControl sau campul specificat din care va receptiona focus-ul inregistrarea curenta a unui formular, tabela sau interogare.
Aplica un filtru, o interogare sau o clauza SQL Where unei tabele, formular sau raport Inlatura filtrele aplicate unui obiect al bazei de date Reactualizeaza datele afisate de un control Maximizeaza fereastra activa Minimizeaza fereastra activa Deplaseaza sau redimensioneaza fereastra activa Redenumeste obiectul specificat Elimina obiectul specificat
ca interogare
Where Condition: clauza Where sau expresia care
Nu are argumente Nu are argumente Right, Down: precizeaza noile coordonate ale ferestrei fata de coltul din stnga-sus a ecranului Height, Width: precizeaza inaltimea si respectiv latimea ferestrei Object Type: tipul obiectului Old Name: vechiul nume al obiectului New Name: noul nume al obiectului Object Type: tipul obiectului Object Name: numele obiectului
RenameObject
DeleteObject
Actiuni pentru navigarea inregistrarilor bazei de date Cauta inregistrarea care Find What: o expresie reprezentand datele ce se vor FindRecord
Down)
Search As Formatted: specifica daca datele vor fi (Yes)
FindNext
sau nu (No) cautate asa cum sunt ele formatate in campurile formatate Only Current Field: cautarea se realizeaza doar in campul curent (Yes) sau in toate campurile (No) Find First: cautarea incepe de la prima inregistrare (Yes) sau de la inregistrarea curenta (No) Nu are argumente
GoToRecord
inregistrari
Object Name: numele obiectului Record: specifica inregistrare la care se face deplasarea
cu numarul de inregistrari inainte sau inapoi daca in argumentul Record s-a selectat Previous sau Next, sau deplasarea la inregistrarea cu numarul specificat daca in argumentul Record s-a selectat Go To. Actiuni pentru controlul executiei aplicatiei Anuleaza evenimentul CancelEvent care a declansat executia macrocomenzii Inchide Microsoft Acces Quit Nu are argumente
RunSQL
Lanseaza in executie o functie sau procedura definita de utilizator Executa o instructiune SQL de tip actiune
RnMacro
RunApp
Echo
SetWarnings
MsgBox
Executa o comanda de meniu Microsoft Access Opreste macrocomanda ce contine actiunea Opreste toate macrocomenzile aflate in curs de executie Activeaza/inactiveaza actualizarea ecranului pe timpul executarii macrocomenzii Activeaza/inhiba afisarea mesajelor Access Afiseaza un mesaj
modificarile obiectelor inainte de inchidera aplicatiei (Prompt, Save sau Exit) Function Name: numele functiei sau procedurii. Eventualele argumente ale functiei se include intre paranteze. SQL Statement: instructiunea SQL de executat. Pot fi inserate instructiuni de tip Append, Update, Delete si de creare tabele Use Transaction: stabileste daca interogarea de actiune se executa (Yes) sau nu (No) intr-o tranzactie. Macro Name: numele macrocomenzii Repeat Count: indica numarul de executii repetate a macrocomenzii Repeat Expression: specifica expresia ce va determina repetarea macrocmenzii pana cand rezultatul expresiei devine fals. Command Line:linia de comanda necesara executiei aplicatiei. Se poate specifica si numele fisier ce va fi deschis in aplicatie. De exemplu comanda: excel c:\bazadate.xls va deschide fisierul bazadate.xls in Excel. Command: numele comenzii de meniu Microsoft Access ce se va executa. Nu are argumente Nu are argumente
Emite un semnal de Nu are argumente atentionare Actiuni pentru crearea/modificarea interfetei utilizatorului Adauga un nou meniu Menu Name: numele meniului derulant AddMenu pentru formular sau Menu Macro Name: numele grupului de macrocomenzi aplicatie care defineste comenzile meniului Status Bar Text: textul ce apare in bara de stare la selectarea meniului. Ascune/afiseaza bara cu Toolbar Name: numele barei cu instrumente ShowToolbar instrumente indicata Show: poate lua valorile: Yes bara este afisata, No bara este ascunsa sau Where Appropriate bara este afisata doar in conditiile in care este activa in mod normal in Access. Stabileste starea Menu Index: numar intreg incepand cu 0 care indica SetMenuItem (activa/inactiva) a unui numarul meniului in bara de meniu element de meniu Command Index: numar intreg incepand cu 0 care
Beep
(indisponibil), Ungray (disponibil), Check (bifat) sau Uncheck (nebifat). Actiuni pentru automatizarea iesirilor aplicatiei si comunicarea cu alte programe Permite importarea Transfer Type: precizeaza tipul transferului (Import, TransferDatabase sau exportarea Export sau Link legare) obiectelor bazei de Database Type: tipul bazei de date de unde se importa date din/in alte sau unde se exporta. baze de date Database Name: numele bazei de date implicata in transfer. Obiect Type: tipul obectuui implicat in transfer. Source: numele obiectului ce va fi importat sau exportat Destination: numele sub care obiectul va fi exportat sau importat. Structure Only: specifica daca se transfera numai structura (Yes) sau si datele (No). Transfer Type: precizeaza tipul transferului (Import, TransferSpreadsheet Exporta/importa date din fisiere Export sau Link legare) create cu programe Spreadsheet Type: indica formatul fisierului implicat in de calcul tabelar transfer Table Name: numele tabelei de unde se exporta sau unde se importa datele File Name: calea completa a fisierului de importat sau exportat Has Field Names: specifica daca prima linie contine (Yes) sau nu (No) denumirile campurilor Range: indica domeniul celulelor de importat sau exportat Tipareste obiectul Print Range: asigura tiparirea integrala a obiectului (All), PrintOut activ al bazei de a unei zone selectate (Selection) sau a unui date numar de pagini (Pages) Page From: numarul primei pagini de tiparit: obligatoriu daca s-a ales Pages in Print Range. Page To: numarul ultimei pagini de tiparit; obligatoriu daca s-a ales Pages in Print Range. Print Quality: calitatea tiparirii (High, Medium, Low si Draft) Copies: numarul de exemplare Collate Copies: specifica modul de tiparire a copiilor (Yes exemplarul se tipareste in mod repetat; No paginile exemplarului se tiparesc in mod repetat) Include obiectul Object Type: tipul obiectului SendObject activ intr-un mesaj Object Name: numele obiectului e-mail Output Format: modul in care obiectul va fi atasat mesajului (fisier HTML, xls, txt etc.) To: adresa e-mail a destinatarului Cc: adresa e-mail unde se trimite o copie a mesajului (optional) Bcc: numele destinatarilor mesajului ce vor apare in linia Bcc a mesajului electronic (optional) Subject: subiectul mesajului. Message Text: textul care va apare in mesaj in plus fata de obiect Edit Message: specifica daca mesajul poate fi sau nu editat inainte de transmiter
Exista doua exceptii de la aceasta regula: argumentul Expression al actiunii SetValue si argumentul Repeat Expression al actiunii RunMacro. Daca in aceste argumente precedati o expresie cu semnul egal (=), Microsoft Access evalueaza de doua ori expresia, ceea ce poate conduce la rezultate imprevizibile. Sugestie: Puteti executa clic pe butonul Build de langa caseta argumentului pentru a folosi Expression Builder, care va dirijeaza in procesul de crearea a unei expresii. Detalii despre Expression Builder, se gasesc la pagina Error! Bookmark not defined..
Microsoft Access Macrocomenzi . Pe 2. In bara instrumentelor ferestrei Database se executa clic pe butonul New ecran se afiseaza fereastra Macro. 3. In bara instrumentelor Macro Design, se executa clic pe butonul Macro Names , daca nu este deja apasat, sau se deschide maniul View si se selecteaza comanda Macro Names. 4. In coloana Macro Name (vezi figura 3), se tasteaza numele primei macrocomenzi din grupul de macrocomenzi. 5. In coloana Action, se stabileste prima actiune care va fi executata de macrocomanda. 6. Daca este necesar, se adauga si alte actiuni ce vor fi executate de macrocomanda, avand grija sa ramana goala coloana Macro Name a acestor actiuni. Toate actiunile ce urmeaza liniei in care s-a introdus numele macrocomenzii apartin acesteia daca nu au nimic in coloana Macro Name. 7. Se repeta operatiile de la punctele 4 la 6 pentru toate macrocomenzile care vor fi incluse in grupul de macrocomenzi. 8. Se salveaza grupul de macrocomenzi. Numele pe care-l specificati este numele grupului de macrocomenzi si el va fi afisat in sectiunea Macros din fereastra Database. 9. Se inchide fereastra Macro. In figura 3 este prezentat un grup de macrocomenzi. Dupa cum se poate constata, primele patru macrocomenzi asigura navigarea inregistrarilor sursei de date a formularului Clienti. Daca aceste macrocomenzi sunt asociate unor butoane de comanda, acestea ar putea sa le inlocuiasca pe cele din bara butoanelor de navigare ale formularului. Cand vreti sa raferiti o macrocomanda dintr-un grup de macrocomenzi, folositi sintaxa urmatoare:
macrogroupname.macroname
De exemplu, ButoaneNavigare.Primul refera macrocomanda Primul din grupul de macrocomenzi ButoaneNavigare. Intr-o lista de macrocomenzi, cum ar fi lista de argumente Macro Name a actiunii RunMacro, Microsoft Access afiseaza macrocomanda Primul sub forma ButoaneNavigare.Primul.
10
Microsoft Access Macrocomenzi O conditie este o expresie logica. Macrocomanda urmeaza cai diferite in functie de indeplinirea sau nu a conditiei. Conditiile se introduc in coloana Condition din fereastra Macro. Daca o conditie este adevarata, Microsoft Access executa actiunea din linia respectiva. Puteti indica ca Microsoft Access sa execute o serie de actiuni cand conditia este adevarata tastand puncte de suspensie (...) in coloana Condition a actiunilor ce urmeaza imediat dupa conditie.
11
Microsoft Access Macrocomenzi Pentru a intelege mai bine modul in care sunt executate actiunile intr-o macrocomanda care contine o expresie conditionala, vom prezenta fluxul macrocomnezii printr-o diagrama:
[Tara]="RO" And Forms![TotVanzari]![TotalComenzi] > 100 [Tara] In ("Franta", "Italia", "Spania") And Len([CodPostal]) <> 5 MsgBox("Confirmati modificarile?",1) = 1
12
Observatie: In mod normal, rularea directa a unei macrocomenzi se face numai pentru testarea ei. Dupa testarea macrocomenzii, o puteti atasa unui formular, raport sau control pentru a se executa ca raspuns la producerea unui eveniment sau puteti crea o comanda de meniu propriu pentru a rula macrocomanda respectiva. Rularea unei macrocomenzi dintr-un grup de macrocomenzi. Pentru a rula o macrocomanda dintr-un grup de macrocomenzi, se executa una din urmatoarele operatii: o Se specifica macrocomanda ca setare a unei proprietati eveniment a formularului sau raportului sau ca argument Macro Name al actiunii RunMacro. Referirea la macrocomanda se face respectand urmatoarea sintaxa:
macrogroupname.macroname
De exemplu, aceasta setare a proprietatii eveniment executa macrocomanda numite Primul din grupul de macrocomenzi numit ButoaneNavigare: ButoaneNavigare.Primul o Se deschide meniul Tools, se indica Macros si se selecteaza comanda Run Macro. Din caseta combinata Macro Name a casetei de dialog Run Macro, se selecteaza macrocomanda dorita. In lista casetei combinate Macro Name, Microsoft Access include o intrare pentru fiecare comanda din fiecare grup de comenzi. o In procedurile Visual Basic for Applications, o macrocomanda dintr-un grup de macrcomenzi se lanseaza in executie prin intermediul metodei RunMacro a obiectului DoCmd, utilizand sintaxa prezentata mai sus pentru referirea la o macrcomanda din grupul de macrocomenzi. Rularea unei macrocomenzi dintr-o alta macrocomanda sau dintr-o procedura Visual Basic. Pentru a executa o macrocomanda dintr-o alta macrocomanda sau dintr-o procedura VBA, se adauga o actiune RunMacro in respectiva macrocomanda sau procedura: 13
Microsoft Access Macrocomenzi o Pentru a adauga o actiune RunMacro la o macrocomanda, intr-o linie de actiuni goala se selecteaza RunMacro din lista de actiuni si se seteaza argumentul Macro Name la numele macrocomenzii ce va lansata in executie. o Pentru a adauga o actiune RunMacro intr-o procedura VBA, in procedura respectiva se adauga metoda RunMacro a obiectului DoCmd si se specifica numele macrocomenzii ce va fi lansata in executie. De exemplu, urmatoarea linie de cod va lansa in executie macrocomanda Listare Produse: DoCmd.RunMacro "Listare Produse" Rularea unei macrocomenzi ca raspuns la un eveniment. Microsoft Access raspunde la multe tipuri de evenimente pe formulare, rapoerte si controale, incluzand executarea de clicuri cu mouse-ul, modificarea datelor, deschiderea sau inchiderea formularelor sau rapoartelor etc. Pentru a rula o macrocomanda ca raspuns la un eveniment de pe un formular, raport sau control se procedeaza astfel: 1. Daca este necesar, se creaza macrocomanda ce se va atasa unui eveniment de pe formular, raport sau control. 2. In fereastra Database, se selecteaza formularul sau raportul in care se va atasa macrocomanda si se executa clic pe butonul Design din bara instrumentelor ferestrei Database. 3. Folosind fereastra Properties, setati proprietatea corespunzatoare a formularului, raportului sau controlului la numele macrocomanzii ce se va executa la producerea evenimentului respectiv. De exemplu, pentru a folosi o macrocomanda care sa afiseze un mesaj cand se executa clic pe un buton de comanda, se seteaza proprietatea OnClick a butonului de comanda la numele macrocomenzii care afiseaza mesajul. Rularea unei macrocomenzi printr-un buton de comanda. Pentru a crea un buton de comanda care sa ruleze o macrocomanda se executa urmatoarele operatii: 1. In fereastra Database, se selecteaza formularul in care se va crea butonul de comanda pentru rularea macrocomenzii si se deschide in fereastra Design. 2. Daca butonul Control Wizards ( ) din caseta Toolbox este apasat, se executa clic pe el pentru a inactiva exepertul. 3. In caseta Toolbox, se executa clic pe butonul Command Button ( ). 4. Pe formular, se executa clic acolo unde se va plasa butonul de comanda. 5. Cand butonul este inca selectat, executati clic pe butonul Properties ( ) din bara instrumentelor Form Design pentru a afisa foaia de proprietati a controlului, daca nu este deja afisata. 6. In caseta de dialog Properties, executati clic pe eticheta Event (vezi figura 8) pentru a afisa pagina cu proprietatile eveniment.
14
Microsoft Access Macrocomenzi 7. Daca macrocomanda este deja creata, se executa clic in caseta proprietatii OnClick si se tasteaza numele macrocomenzii sau se selecteaza din lista ce se deschide la executarea unui clic pe butonul cu sageata din caseta proprietatii. Daca macrocomanda necesara nu este creata, se executa clic pe butonul Build ( ) din dreapta casetei proprietatii si in caseta de dialog Choose Builder (vezi figura 9) se executa dublu-clic pe Macro Builder pentru a deschide fereastra Macro.
8. Daca doriti sa afisati text pe butonul de comanda, executati clic pe eticheta Format a casetei de dialog Properties si in caseta proprietatii Caption tastati titlul butonului de comanda. Pentru a afisa o imagine in loc de text, folositi proprietatea Picture a controlului. Sugestie: Daca macrocomanda ce se va atasa butonului de comanda este deja creata, cel mai simplu procedeu de a crea un buton de comanda care sa o ruleze este tragerea macrocomenzii pe formularul deschi in fereastra Design. Rularea unei macrocomenzi dintr-o comanda de meniu sau folosind un buton dintr-o bara cu instrumente. Pentru a adauga o comanda de meniu sau un buton care sa ruleze o macrocomanda se procedeaza astfel: 1. Se deschide meniul View, se indica optiunea Toolbars si se selecteaza comanda Customize. Pe ecran se va afisa caseta de dialog Customize. 2. Daca este necesar, se afiseaza bara de meniu, meniul contextual sau bara cu instrumente (in pagina Toolbars a casetei de dialog Customize se executa clic pe caseta de validare a elementului ce trebuie afisat) la care se va adauga o comanda. 3. In caseta de dialog Customize se activeaza pagina Commands (vezi figura 10).
15
5. In lista Commands se selecteaza comanda sau butonul necesar si se trage in bara de meniu, bara Shortcut Menus sau alte bare cu instrumente. Cand meniul afiseaza o lista a comenzilor de meniu (sau o caseta goala daca acesta este nou), indicati locul unde va apare comanda in meniu si apoi eliberati butonul mouse-ului. Observatii: Puteti adauga o comanda sau un buton care sa ruleze o functie VBA. Puteti afisa textul combinatiei de taste pentru comanda respectiva. Daca adaugati o comanda la un meniu (de exemplu, la meniul Edit), comanda respectiva apare in toate modurile de afisare in care exista acel meniu. Pentru a adauga rapid un buton care sa deschida un obiect al bazei de date, in fereastra Database se selecteaza obiectul dorit si se trage pe bara instrumentelor. Microsoft Access poate crea automat o bara cu instrumente care sa contina butoane pentru rularea macrocomenzilor existente. 6. Se inchide caseta de dialog Customize. Rularea unei macrocomenzi prin intermediul unei combinatii de taste. In Microsoft Access exista posibilitatea de a atribui o actiune sau un set de actiuni unei combinatii de taste prin crearea unui grup de macrocomenzi, numit AutoKeys. Cand, in baza de date respectiva, se va utiliza combinatia de taste, Microsoft Access va executa actiunea sau actiunile asociate acelei combinatii. Pentru a asocia unei combinatii de taste una sau mai multe actiuni se procedea astfel: 1. In fereastra Database, daca este necesar, se executa clic pe butonul Macros pentru a activa sectiunea Macros a ferestrei. 2. In bara instrumentelor ferestrei Database, se executa clic pe New ( ). 3. In fereastra Macro, se executa clic pe butonul Macro Names din bara instrumentelor Macro Design. 4. In coloana Macro Name, se tasteaza combinatia de taste careia i se va asigna actiunea sau actiunile dorite. Sintaxa pentru adaugarea combinatiei de taste este prezentata in Tabelul 3. Tabelul 3. Sintaxa pentru adaugarea combinatiilor de taste
Sintaxa ^litera sau ^cifra {Fi} ^{Fi} +{Fi} {INSERT} ^{INSERT} +{INSERT} {DELETE} sau {DEL} ^{DELETE} sau ^{DEL} +{DELETE} sau +{DEL} Combinatia de taste CTRL+orice litera sau cifra Orice tasta functionala CTRL+orice tasta functionala SHIFT+orice tasta functionala INS CTRL+INS SHIFT+INS DEL CTRL+DEL SHIFT+DEL Exemple ^A, ^8 F1, F6 ^F2, ^F11 +F1, +F7
In figura 11 se pot vedea doua combinatii de taste: ^F pentru Ctrl+F si +{F1} pentru Shift+F1. 5. Se adauga actiunea sau setul de actiuni care va executa cand se foloseste respectiva combinatie de taste. De exemplu, se poate adauga o actiune 16
Microsoft Access Macrocomenzi RunMacro (vezi figura 11) care sa ruleze macrocomanda Tiparire Factura cand utilizatorul foloseste combinatia de taste Ctrl+F.
6. Se repeta operatiile de la punctele 4 si 5 pentru toate combinatiile de taste necesare. 7. Se salveaza grupul de macrocomenzi cu numele AutoKeys. Noile asignari de combinatii de taste vor avea efect imediat dupa salvarea grupului si ori de cate ori se deschide respectiva baza de date. Observatie: Daca asociati o actiune sau un set de actiuni unei combinatii de taste care este deja folosita de Microsoft Access (de exemplu, Ctrl+P pentru comanda Print din meniul File), actiunile asignate inlocuiesc asignarea Microsoft Access a combinatiei de taste.
17
Figura 12. Stabilirea valorilor unui control de pe un formular pe baza valorilor unui control de pe un alt formular
Actualizarea valorii unui control care depinde de valoarea unui alt control. De exemplu, este posibil ca pe un formular sa existe un control, numit DataPlata a carei valoare implicita este data livrarii (valoarea dintr-un control numit DataLivrare). Se poate utiliza o macrocomanda (sau o procedura eveniment) pentru a reseta automat valoarea controlului DataPlata cand valoarea din controlul DataLivrare se modifica. Un exemplu concret este prezentat la pagina 19. Setarea proprietatii unui formular sau control ca raspuns al unei selectii sau a unui alt eveniment. O macrocomanda (sau o procedura eveniment) poate fi utilizata pentru a seta proprietatea unui formular sau control pentru: Ascunderea sau afisarea unor controale pe baza valorii unui alt control (vezi exemplul de la pagina 20. Blocarea accesului la un control pe baza valorii unui alt control. Afisarea diferitelor seturi de inregistrari in functie de selectai facuta. De exemplu, puteti controla ce inregistrari se vor afisa pe un formular Produse, in functie de optiunea selectata in grupul de optiuni Categorie Produse. Pentru aceasta, se poate seta proprietatea RecordSource a formularului pe interogarea corespunzatoare categoriei selectate (pentru fiecare optiune din grup se va realiza o interogare care va asigura setul de rezultate necesar).
18
Figura 13. Setarea valorii unui control pe baza valorii unui alt control.
5. Se salveaza macrocomanda (a fost salvata cu numele DataNastere) si apoi se inchide fereastra Macro. 6. Se deschide formularul care contine cele doua controale in fereastra Design. 7. Se selecteaza controlul txtCNP, se deschide foaia de proprietati a controlului si intr-o proprietate eveniment (de exemplu On Lost Focus), se selecteaza sau se tasteaza numele macrocomenzii.
8. Se salveaza si se inchide formularul. 9. Pentru testare, lansati in executie formularul, introduceti un cod numeric personal si apoi apasati tasta Tab. 19
Microsoft Access Macrocomenzi Observatie: In functie de context, este posibil sa fie necesara calificarea identificatorilor controalelor.
In functie de optiunea selectata in caseta combinata Persoana, formularul va avea afisate controale diferite, ca in figura 16.
Pentru persoane fizice Pentru persoane juridice Figura 16. Cele doua aspecte ale formularului Clientela.
Pentru a folosi o macrocomanda care sa stabileasca valoarea unei proprietati ca raspuns a producerii unui eveniment se executa urmatoarele operatii:: 1. Se deschide fereastra Macro pentru a crea o noua macrocomanda sau grup de macrocmenzi (pentru scenariul prezentat am creat un grup de macrcomenzi, numit TipPersoana, vezi figura 17). 2. Intr-o linie de actiune goala se selecteaza SetValue din lista de actiuni. 3. In argumentul Item se stabileste identificatorul pentru proprietatea a carei valoare se va seta. De exemplu pentru a seta valoarea proprietatii Visible a casetei de text NrBI se va folosi urmatoare expresie:
[Forms]![Clientela]![NrBI].[Visible]
4. In argumentul Expression se stabileste valoarea ce se va atribui proprietatii (se poate construi si o expresie a carei valoare va fi asginata proprietatii). De exemplu, pentru a ascunde caseta de text, argumentul Expression trebuie sa aiba valoarea False, iar pentru a o afisa, argumentul Expression va avea valoarea True. 5. Se salveaza macrocomanda sau grupul de macrocmenzi. 20
Microsoft Access Macrocomenzi 6. Se deschide formularul sau raportul in fereastra Design, se deschide foaia de proprietati a obiectului a carui eveniment va rula macrocmanda si se seteaza proprietatea eveniment pe numele macrocomenzii. De exemplu, in cazul scenariului prezentat, grupul de macrocomenzi a fost atribuit evenimentului On Click al casetei combinate Persoana.
21
None
Critical
Warning?
Warning!
6.
Information Figura 18. Diferite variante de casete de mesaje. In argumentul Title, se poate tasta textul ce se va afisa in bara de titlu a casetei de
mesaje. Este un argument optional. Daca acest argument este lasat gol, in bara de titlu a casetei de mesaje se va afisa Microsoft Access. 7. Se selecteaza comanda Save din meniul File sau se executa clic pe butonul Save din bara instrumenteleor pentru a salva macrocomanda. In caseta de dialog Save As (vezi figura 19) se tasteaza numele macrocomenzii si apoi se apasa tasta Enter.
22
8. Pentru a testa macrocomanda, se executa clic pe butonul Run instrumentelor Macro Design.
23