Vous êtes sur la page 1sur 23

Microsoft Access Macrocomenzi

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

Microsoft Access Macrocomenzi

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.

Crearea unei macrocomenzi


Pentru a crea o macrocomanda se executa urmatoarele operatii: 1. In fereastra Database, a bazei de date in care se va crea macrocomanda, se executa clic pe butonul Macros pentru a se afisa sectiunea Macros a ferestrei Database. 2. Se executa clic pe butonul New din fereastra Database. Pe ecran se va afisa fereastra Macro (vezi figura 1). 3. Se executa clic in prima celula a coloanei Action si apoi se executa clic pe butonul cu sageata pentru a afisa lista actiunilor. 4. In lista de actiuni se selecteaza actiunea ce va fi utilizata. In tabelul 1.sunt prezentate pe scurt cele mai importante actiuni ce pot fi utilizate intr-o macrocomanda. Datorita numarului mare de actiuni, o descriere completa a acestor actiuni va fi prezentata intr-o lectie separata. 5. In coloana Comment, tastati un comentariu pentru actiunea selectata. comentariile sunt optionale, dar este indicat sa le folositi pentru a usura intelegerea si intretinerea macrocomenzii. 6. In sectiunea inferioara a ferestrei Macro, numita Action Arguments, se specifica argumentele actiunii, daca sunt necesare. Continutul sectiunii Action Arguments se modifica in functie de actiunea aleasa; fiecare actiune avand propriile argumente. Exista si actiuni fara argumente. 7. Pentru a adauga mai multe actiuni macrocomenzii, se trece la urmatoarea linie de actiune libera si se repeta operatiile de la punctele 3 la 6. Microsoft Access executa actiunile in ordinea in care ele sunt incluse in macrocomanda. 8. Cand s-au adaugat toate actiunile necesare, se salveaza macrocmanda ca orice alt obiect al bazei de date Microsoft Access. Numele macrocomenzilor trebuie sa respecte regulile Microsoft Access de denumire a obiectelor. 9. Se inchide fereastra Macro. In figura 2 este prezentata o macrocomanda formata din doua actiuni: prima actiune inchide formularul specificat, iar a doua afiseaza pe ecran raportul indicat pentru a fi previzualizat.

Figura 2. Macrocomanda cu doua actiuni.

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.

Microsoft Access Macrocomenzi


ApplyFilter

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

Filter Name: numele interogarii sau a filtrului salvat

ca interogare
Where Condition: clauza Where sau expresia care

ShowAllRecords Requery Maximize Minimize MoveSize

restrictioneaza inregistrarilor formularului, tabelei sau raportului Nu are argumente


Control Name: numele controlului

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

indeplineste conditia specificata

cauta (se pot utiliza si caracterele * si ?)


Match: specifica unde se gasesc datele in camp (Whole

Field, Any Part of Field sau Begin of Field)


Match Case: se tine (Yes) sau nu (No) cont de diferenta

dintre literele mari si mici


Search: stabileste directia de cautare (All, Up sau

Down)
Search As Formatted: specifica daca datele vor fi (Yes)

FindNext

Efectueaza o noua cautare pe baza argumentelor celei mai recente actiuni


FindRecord

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

Determina deplasarea la inregistrarea specificata

Object Type: tipul obiectului ce contine setul de

inregistrari
Object Name: numele obiectului Record: specifica inregistrare la care se face deplasarea

(First, Previous, Next, Last, Go To sau New)


Offset: expresie ce returneaza intreg. Indica 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

Options: determina daca se vor salva sau nu

Microsoft Access Macrocomenzi


RunCode

RunSQL

Lanseaza in executie o functie sau procedura definita de utilizator Executa o instructiune SQL de tip actiune

RnMacro

Executa macrocomanda specificata

RunApp

Lanseaza in executie o alta aplicatie

RunCommand StopMacro StopAllMacros

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

Echo On: stabileste daca sunt afisate (Yes) sau nu (No)

modificarile provocate de executarea macrocomenzii


Status Bar Text: contine textul care se va afisa in bara

de stare cand este inhibata actualizarea ecranului.


Warnings On: activeaza (Yes) sau inhiba (No) afisarea

mesajelor Microsoft Access.


Message: textul mesajului Beep: indica emiterea (Yes) sau nu (No) a semnal

sonor la afisarea mesajului.


Type: stabileste pitograma afisata in caseta (None,

Crticlal, Warnig!, Warning? sau Information)


Title: textul din bara de titlu a casetei de mesaje

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

Microsoft Access Macrocomenzi


indica numarul comenzii in meniul selectat
Subcommand Index: numar intreg incepand cu 0 care

indica numarul subcomenzii in submeniu selectat


Flag: stabileste noua stare a elementului: Gray

(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

Microsoft Access Macrocomenzi


Template File: calea si numele fisierului ce se va folosi

ca sablon pentru fisierul .html

Sugestii pentru setarea argumentelor actiunilor intr-o macrocomanda


Dupa adaugarea unei actiuni intr-o macrocmanda, de cele mai multe ori este necesar sa se seteze argumentele actiunii in sectiunea inferiaoara a ferestrei Macro. Aceste argumente asigura lui Microsoft Access informatiile suplimentare necesare pentru a executa actiunea respectiva. In continuare sunt prezentate cateva sugestii pentru setarea argumentelor actiunilor: O valoare poate fi tastata in caseta argumentului sau in cele mai multe cazuri ea poate fi selectata dintr-o lista de valori. In general, este indicat ca argumentele unei actiuni sa fie setate in ordinea in care ele sunt afisate, deoarece este posibil ca optiunile unui argument sa determine optiunile argumentelor care urmeaza. Daca in macrocomanda adaugati o actiune prin tragerea unui obiect al bazei de date din fereastra Database, Microsoft Access stabileste in mod automat argumentele pentru actiunea respectiva. Daca o actiune are un argument care apeleaza la numele unui obiect al bazei de date, puteti seta argumentul respectiv si tipul corespunzator de obiect prin tragerea obiectului din fereastra Database in caseta argumentului. Puteti utiliza o expresie precedata de semnul egal (=) pentru a seta oricare dintre argumentele actiunii. Nu puteti folosi o expresie pentru urmatoarele argumente:
Argument Object Type Source Object Type Database Type Spreadsheet Type Specification Name Toolbar Name Output Format Toate argumentele Actiune Close, DeleteObject, GoToRecord, OutputTo, Rename, Save, RepaintObject, SelectObject, SendObject, TransferDatabase
CopyObject TransferDatabase TransferSpreadsheet TransferText ShowToolbar OutputTo, SendObject RunCommand

Introducerea unei expresii in argumentul actiunii unei macrocomenzi


Pentru a introduce o expresie in argumentul unei actiuni dintr-o macrocomanda se tasteaza semnul egal (=) urmat de expresia dorita. De exemplu, sa presupunem ca pe un formular exista un control numit SelectareFurnizor. Pentru a seta argumentul actiunii la valoarea acestui control se va utiliza expresia:
=[SelectareFurnizor]

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..

Crearea unui grup de macrocomenzi


Daca vreti sa grupati cateva macrocomenzi corelate intr-un singur loc in loc sa le urmariti separat, le puteti organiza ca un grup de macrocomenzi. Pentru a crea un grup de macrocomenzi se procedeaza astfel: 1. In fereastra Database, se executa clic pe butonul Macros din panoul Objects.

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.

Microsoft Access Macrocomenzi

Figura 3. Grup de macrocomenzi.

Deschiderea unei macrocomenzi


Pe timpul proiectarii bazelor de date vor exista destul de multe sitauatii cand va trebui sa modificati o macrocomanda exostenta. Pentru a modifica o macrocomanda existenta se executa urmatoarele operatii: 1. In fereastra Database, se executa clic pe butonul Macros pentru a afisa sectiunea Macros a ferestrei Database. 2. Se selecteaza macrocomanda ce va fi modificata. 3. Se executa clic pe butonul Design ( ) din bara instrumentelor ferestrei Database. 4. Macrocomanda selectata va fi deschisa in fereastra Macro. Efectuati modificarile necesare (adaugati actiuni, modificati actiunile sau argumentele actiunilor existente, adaugati sau modificati o conditie etc.). 5. Salvati macrocomanda si apoi inchideti fereastra Macro.

Utilizarea conditiilor in actiunile macrocomenzilor


In unele cazuri, este posibil sa vreti sa ca o actiune sa un grup de actiuni dintr-o macrocomanda sa se execute numai daca o anumita conditie este adevarata. De exemplu, daca utilizati o macrocomanda pentru validarea datelor dintr-un formular, este posibil sa vreti afisarea unor mesaje diferite pentru diferite seturi de valori. In asemenea cazuri puteti utiliza conditii pentru a controla fluxul. In figura 4 este prezentata o macrocomanda care executa actiunea StopMacro cand nu exista o valoare in campul Judet (cand valoarea este Null). Macrocomanda executa perechi diferite de actiuni MsgBox si CancelEvent daca lungimea valorii CodPostal nu este corespunzatoare pentru valoarea din campul Judet.

Figura 4. Exemple de actiuni conditionate.

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.

Realizarea unei macrocomenzi care sa ruleze in conditiile specificate


Pentru a include intr-o macrocomanda actiuni care sa se execute numai daca conditia este adevarata se procedeaza astfel: 1. In fereastra Macro a noi macrcomenzi sau a uneia existente, se executa clic pe butonul Conditions in bara instrumentelor Macro Design sau se deschide meniul View si se selecteaza comanda Conditions. In fereastra Macro se va afisa coloana Conditions. 2. In coloana Condition, tastati o expresie conditionala in linia in care vreti sa setati conditia. In Tabelul 2 sunt prezentate cateva exemple de expresii conditionale ce pot fi utilizate in macrocomenzi. Observatii: Pentru a folosi Expression Builder la crearea unei expresii, se executa clicdreapta in celula Condition si din meniul contextual afisat se selecteaza comanda Build. Sau avand cursorul in celula Condition, se executa clic pe butonul Build ( ) din bara instrumentelor Macro Design. In coloana Condition a unei macrocomenzi nu puteti folosi o expresie SQL. 3. In coloana Action, introduceti actiunea ce va fi executata de Microsoft Access cand conditia este adevrata. 4. Daca se doreste ca Microsoft Access sa execute mai multe actiuni cand conditia este adevarata, actiunile respective vor adaugate pe liniile imediat urmatoare celei in care sa introdus conditia de verificat si vor avea in coloana Condition puncte de suspensie (...). Cand executa o macrocomanda si intalneste o expresie conditionala, Microsoft Access evaluaza mai intai expresia conditionala. Daca conditia este adevarata, Microsoft Access executa actiunea din linia respectiva si actiunile care urmeaza imediat si sunt precedate de puncte de suspensie (...) in coloana Condition. Apoi, Microsoft Access executa toate actiunile aditionale din macrocomanda care au goala celula Condition pana cand intalneste o alta expresie conditionala, un nume de macrocomanda sau sfarsitul macrocomenzii. Daca conditia este falsa, Microsoft Access ignora actiunea din acea linie si din liniile imediat urmatoare care sunt precedate de puncte de suspensie in coloana Condition si trece la prima linie de actiune ce contine o alta conditie sau nu are nimic in celula Condition. Sa consideram macrocomanda din figura 5. Ea va executa actiunile MsgBox si StopMacro numai daca campul CodFurnizor este gol (are valoarea Null).

Figura 5. Macrocomanda cu o expresie conditionala.

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:

Figura 6. Diagrama fluxului macrocomenzii.

Tabelul 2. Exemple de conditii pentru macrocomenzi


Expresie [Localitate]="Brasov" DCount("[CodFact]", "Facturi") > 35 DCount("*", "Linii Factura", "[CodFact]=Forms![Facturi]![CodFact]") > 3 [DataLivrare] Between #2-Feb-2005# And #2-Mar-2005# Forms![Produse]![Stoc] < 5 IsNull([Nume]) Executa actiunea daca Brasov este valoarea din campul Localitate de pe formularul din care a fost lansata macrocomanda. Exista mai mult de 35 de linii in campul CodFact a tabelei Facturi. Exista mai mult de trei intrari in tabela Linii Factura pentru care campul CodFact din tabela este egal cu campul CodFact din formularul Facturi. Data din campul DataLivrare de pe formularul de unde s-a lansat macrocomanda este cuprinsa intre datele specificate. Valoarea campului Stoc din formularul Produse este mai mica decat 5. Valoarea campului Nume de pe formularul din care s-a lansat macrocomanda este Null (nu are valoare). Expresia este echivalenta cu: [Nume] Is Null Valoarea campului Tara de pe formularul de unde s-a lansat macrocomanda este RO si valoarea din campul TotalComenzi de pe formularul TotVanzari este mai mare ca 100. Valoarea campului Tara de pe formularul de unde s-a lansat macrocomanda este Franta, Italia sau Spania si codul postal nu are 5 caractere. Executati clic pe butonul OK al casetei de mesaje care a fost afisata. Daca executati clic pe Cancel, Microsoft Access ignora actiunea.

[Tara]="RO" And Forms![TotVanzari]![TotalComenzi] > 100 [Tara] In ("Franta", "Italia", "Spania") And Len([CodPostal]) <> 5 MsgBox("Confirmati modificarile?",1) = 1

12

Microsoft Access Macrocomenzi

Lansarea in executie a unei macrocomenzi


Cand rulati o macrocomanda, Microsoft Access incepe cu prima actiune si executa toate actiunile pana cand intalneste fie un alt nume de macrocomanda (daca macrocomanda este de fapt un grup de macrcomenzi) fie sfarsitul macrocomenzii. Exista mai multe posibilitati de a lansa in executie o macrocomanda: Lansarea directa in executie. Pentru a rula o macrocomanda direct se executa una din urmatoarele: o Avand deschisa macrocomanda in fereastra Macro, se executa clic pe butonul Run ( ) din bara instrumentelor Macro Design. o In sectiunea Macros a fereastrei Database se executa dublu-clic pe pictograma macrocomenzii dorite. o In fereastra Database, se deschide meniul Tools, se indica Macros si se selecteaza comanda Runn Macro. In caseta de dialog Run Macro (vezi figura 7) se deschide caseta combinata Macro Name, se selecteaza macrocomanda dorita si apoi se executa clic pe butonul OK.

Figura 7. Caseta de dialog Run Macro.

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.

Figura 8. Pagina Event a dialogului Properties.

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.

Figura 9. Caseta de dialog Choose Builder.

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).

Figura 10. Pagina Commands a dialogului Customize.

4. In lista Categories, se executa una din urmatoarele operatii:


Pentru a adauga o ... comanda intrinseca butoane pentru navigarea paginilor HTML Se executa clic pe ... meniul corespunzator sau categoria de fereastra Web

15

Microsoft Access Macrocomenzi


butoane pentru lucrul cu SourceSafe comanda pentru crearea controalelor particulare comanda pentru afisarea unui formular, raport sau a altui obiect al bazei de date in fereastra sa implicita comanda pentru rularea unei macrocomenzi Source Code Control ActiveX Controls una din urmatoarele: All Tables, All Queries, All Forms, All Reports All Macros

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.

Figura 11. Grupul de macrocmenzi AutoKeys.

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.

Rularea unei macrocomenzi cand se deschide baza de date


Pentru ca o actiune sau un grup de actiuni sa se execute ori de cate ori se deschide baza de date se poate utiliza o macrocomanda speciala, numita AutoExec. Cand se deschide o baza de date, Microsoft Access cauta macrocomanda cu numele AutoExec si daca o gaseste, o executa automat. Pentru a crea o astfel de macrocomanda se procedeaza astfel: 1. Se creaza o macrocomanda care va contine toate actiunile ce vor fi executate la deschiderea bazei de date. 2. Se salveaza macrocomanda cu numele AutoExec. La urmatoarea deschidere a bazei de date, Microsoft Access ruleaza automat aceasta macrocomanda. Observatii: Daca nu vreti sa se execute macrocomanda AutoExec cand deschideti baza de date, tineti apasata tasta SHIFT cand se deschide baza de date. Modul in care se lanseaza o baza de date sau o aplicatei poate fi stabilit si utilizand caseta de dialog Startup (se selecteaza Startup din meniul Tools).

17

Microsoft Access Macrocomenzi

Setarea valorii controalelor sau proprietatilor


Macrocomenzile pot fi utilizate pentru a atribui noi valori controalelor si proprietatilor ca raspuns la evenimentele ce se produc pe un formular sau raport, facand astfel ca obiectele pe care le-ati creat sa lucreze impreuna astfel ca ele sa fie usor de utilizat. In continuare sunt prezentate unele dintre cele mai des intalnite situatii cand puteti seta valorile folosind o macrocomanda (sau o procedura eveniment): Setarea valorii unui control de pe un formular la valoarea unui control de pe un alt formular. De exemplu, pe formularul Facturi se poate plasa un buton de comanda care sa deschida formulaul DateFactura si sa-l completeze automat cu date din formularul Facturi.
Executarea unui clic pe acest buton de comanda va deschide formularul DateFactura si-l va completa cu unele date din formularul Facturi.

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

Microsoft Access Macrocomenzi

Setarea valorii unui control bazat pe valoarea unui alt control


Asignarea valorii unui control pe baza valorii unui alt control se realizeaza adaugand o actiune SetValue la o macrocomanda (sau cu instructiunea de atribuire intr-o procedura VBA). Pentru a exemplifica acest procedeu vom considera ca pe un formular exista o caseta de text, numita txtCNP, in care se va introduce codul numeric personal al unei persoane si o alta caseta de text, numita txtDataNastere, in care se va seta data de nastere a persoanei dupa ce s-a introdus codul numeric personal. Pentru a seta valoarea unui control pe baza valorii unui alt control folosind o macrocomanda se procedeaza astfel: 1. Se deschide fereastra Macro pentru a crea o noua macrocomanda. 2. Intr-o linie de actiune goala se selecteaza SetValue din lista de actiuni. 3. Se seteaza argumentul Item la identificatorul controlului a carei valoare va fi stabilita. Pentru exemplul nostru, argumentul Item are valoarea [Forms]![Setare valori]![txtDataNastere] 4. In argumentul Expression se tasteaza identificatorul controlului a carei valoare va fi atribuita primul control sau se construieste o expresie de prelucrare a valorii acestui control. Pentru exemplul nostru, argumentul Expression are valoarea: Mid([txtCNP],6,2)+"/"+Mid([txtCNP],4,2)+"/19"+Mid([txtCNP],2,2)

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.

Figura 14. Asignarea macrocomenzii unei proprietati eveniment.

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.

Setarea valorii unei proprietati ca raspuns la un eveniment


Exista posibilitatea de a asigna valoarea unei proprietati ca raspuns la producerea unui eveniment, cum ar fi executarea unui clic pe un buton de comanda sau selectarea unei optiuni dintr-o lista, prin adaugarea unei actiuni SetValue unei macrocomenzi (sau printr-o instructiune de atribuire intr-o procedura VBA). Pentru a exemplifica setarea valorii unei proprietati ca raspuns la producerea unui eveniment vom considera ca pe un formular, numit Clientela, folosit pentru introducerea clientilor, se vor afisa controale diferite pentru persoane fizice si persoane juridice. Tipul de persoana se selecteaza dintr-o caseta combinata. Formularul Clientela arata astfel la deschidere:

Figura 15. Formularul Clientela la lansare in executie.

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.

Figura 17. Grupul de macrocmenzi TipPersoana.

21

Microsoft Access Macrocomenzi

Afisarea si ascunderea mesajelor


Afisarea unei casete de mesaje
Cand este necesara afisarea unui mesaj scurt, cum ar fi o avertizare, se poate utiliza o caseta predefinita de dialog, numita caseta de mesaje. Caseta de mesaje poate fi afisata prin adaugarea unei actiuni MsgBox intr-o macrocomanda (sau adaugand functia MsgBox intr-o procedura VBA). Pentru a crea o macrocomanda care va afisa un mesaj utilizand caseta predefinita de mesaje, se procedeaza astfel: 1. In fereastra Macro se creaza o noua macrocmanda. 2. Intr-o linie de actiunea goala, se selecteaza MsgBox din lista de actiuni. 3. In argumentul Message, se tasteaza mesajul ce va fi afisat. Se pot tasta pana la 255 caractere sau se poate introduce o expresie (precedata de semnul egal) a carei evaluare va determina mesajul ce se va afisa. 4. In argumentul Beep, se selecteaza Yes (emiterea unui semnal sonor) sau No (nu se emite un semnal sonor). Valoarea implicita este Yes. 5. In argumentul Type, se selecteaza tipul de pictograma ce se va afisa in caseta de mesaje. Argumentul poate avea una din urmatoarele valori: None, Critical, Warning?, Warning! sau Information. Valoarea implicita a argumentului este None. In figura 18 sunt prezentate diferitele forme ale casetei de mesaje.

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.

Figura 19. Caseta de dialog Save As.

22

8. Pentru a testa macrocomanda, se executa clic pe butonul Run instrumentelor Macro Design.

Microsoft Access Macrocomenzi din bara

Afisarea sau ascunderea mesajelor de avertizare


Mesajele modale de avertizare afisate de catre Microsoft Access pe timpul rularii unei macrocomenzi (sau procedura VBA) pot fi inactivate temporar sau reactivate prin utilizarea unei actiuni SetWarnings intr-o macrocomanda (sau procedura VBA). Pentru a plasa o actiune SetWarnings intr-o macrocmanda se procedeaza astfel: 1. Se deschide o macrocomanda existenta in fereastra Macro. 2. Se executa clic in linia de actiune in care se va opri sau relua afisarea mesajelor modale de avertizare. Daca este necesara adaugarea unei noi linii, se va executa clic in linia de actiune deasupra careia se va adauga actiunea SetWarnings si se executa clic pe butonul Insert Rows ( ) din bara instrumentelor Macro Design, pentru a adauga o noua linie de actiune. 3. In lista de actiuni, se selecteaza actiunea SetWarnings. 4. Pentru oprirea temporara a afisarii mesajelor, se seteaza argumentul Warnings On pe valoarea No. Pentru a relua afisarea mesajelor modale de avertizare, se seteaza argumentul Warnings On pe valoarea Yes. 5. Se salveaza macrocmanda. 6. Pentru testarea macrocomenzii, se executa clic pe butonul Run ( ) din bara instrumentelor Macro Design. Observatie: Cand se termina executia unei macrcomenzi, afisarea mesajelor modale de avertizare se reia automat. Deci, nu este necesara setarea argumentului Warnings On pe valoarea Yes intr-o macrocmanda in care a fost oprita afisarea modala a mesajelor, decat daca in aceeasi macrocmanda se doreste reluarea afisarii.

23

Vous aimerez peut-être aussi