Folosirea obiectului DoCmd pentru a executa comenzile din Access

Obiectul DoCmd vă permite să executați comenzi Access normale, ar fi Găsire sau Redenumire (Find sau Rename), în codul VBA.

Pentru a executa o comandă, utilizați una dintre metodele obiectului DoCmd. Tabelul de mai jos enumeră cele 66 de metode DoCmd disponibile în Access 2016 și explică pe scurt ce fac ele.

Următoarele secțiuni includ exemple care arată cum se utilizează unele dintre metodele descrise în tabel.

Utilizarea metodei OpenForm pentru a deschide un formular

Pentru a deschide un formular, utilizați metoda OpenForm a obiectului DoCmd. Sintaxa este următoarea:

expression.OpenForm(FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs)

Iată componentele sintaxei:

  • expression este o expresie necesară care returnează un obiect DoCmd. În multe cazuri, este mai ușor să utilizați obiectul DoCmd în sine.
  • FormName este un argument necesar de tip Variant care specifică numele formularului pe care doriți să îl deschideți. Formularul trebuie să fie în baza de date curentă.
  • View este un argument opțional care specifică vizualizarea care se va utiliza: acNormal (implicit), acDesign, acFormDS, acFormPivotChart, acFormPivotTable sau acPreview.
  • FilterName este un argument opțional de tip Variant care se poate utiliza pentru a specifica numele unei interogări. Interogarea trebuie stocată în baza de date curentă.
  • WhereCondition este un argument opțional de tip Variant care se poate utiliza pentru a specifica o clauză SQL WHERE. Omiteți cuvântul WHERE din clauză.
  • DataMode este un argument opțional pentru specificarea modului în care se deschide formularul: acFormPropertySettings, acFormAdd, acFormEdit sau acFormReadOnly. acForm PropertySettings este setarea implicită și deschide formularul utilizând modul setat în formular.
  • WindowMode este un argument opțional pentru specificarea modului de deschidere a formularului. Valoarea implicită este acWindowNormal, o fereastră normală. De asemenea, puteți deschide formularul ca o casetă de dialog (acDialog) sau ca pictogramă (acIcon) sau o puteți păstra ascunsă (acHidden).
  • OpenArgs este un argument opțional de tip Variant care se poate utiliza pentru a specifica argumente pentru deschiderea formularului - de exemplu, pentru a muta focalizarea într-o anumită înregistrare.

Următorul exemplu utilizează obiectul DoCmd pentru a deschide un formular în baza de date eșantion Northwind (trebuie să aveți această bază de date deschisă în Access pentru ca aceasta să funcționeze). Apăsați Alt+F11 pentru a deschide Editorul VBA Access, apoi tastați acest cod. Când executați codul apăsând tasta F5, Access afișează prima înregistrare pentru care câmpul Employee se potrivește cu Jan Kotas:

Sub test ()
  DoCmd.OpenForm FormName:="Formular analiză vânzări", View:=acNormal, _
    WhereCondition:="Angajat ='Jan Kotas'"
End Sub

Utilizarea metodei PrintOut pentru imprimarea unui obiect

Pentru a imprima un obiect, utilizați metoda PrintOut. Sintaxa este următoarea:

expression.PrintOut(PrintRange, PageFrom, PageTo, PrintQuality, Copies, CollateCopies)

Aici sunt componentele sintaxei:

  • expression este o expresie necesară care returnează un obiect DoCmd.
  • PrintRange este un argument opțional care specifică ce să imprimați: toate obiectele (acPrintAll, implicit), anumite pagini (acPages), sau selecția (acSelection).
  • PageFrom și PageTo sunt argumente opționale de tip Variant pe care le utilizați cu PrintRange: = acPages pentru a specifica numerele de pagină de început și de sfârșit ale intervalului de imprimare.
  • PrintQuality este un argument opțional pe care îl puteți utiliza pentru a specifica calitatea imprimării. Setarea implicită este acHigh, dar puteți specifica, de asemenea, acLow, acMedium sau acDraft (calitate slabă, pentru a economisi cerneală și timp).
  • Copies este un argument opțional de tip Variant pe care îl puteți utiliza pentru a specifica câte copii să fie imprimate. Valoarea implicită este 1.
  • CollateCopies este un argument opțional de tip Variant pe care îl puteți seta la True (pentru a colaționa/asambla copiile) sau la False. Setarea implicită este True.

Următorul exemplu imprimă o copie (implicită) a primei pagini din obiectul activ la o calitate completă, fără a asambla copiile:

DoCmd.PrintOut PrintRange:=acPages, _
   PageFrom:=1, PageTo:=1, CollateCopies:=False

Asigurați-vă că blocați acest cod pentru o eroare în cazul în care ați solicitat o imprimare a ceva ce nu există, cum ar fi un interval de pagini de la 1 la 4 pentru un formular cu o singură pagină. De fapt, o idee bună este să prevedeți în cod erorile care ar putea să apară la lucrul cu perifericele – imprimante sau hard disk. Ce se întâmplă dacă imprimanta nu este pornită sau hard diskul este plin? Codul dumneavoastră ar trebui să anticipeze și să gestioneze situații de acest fel.

Utilizarea metodei RunMacro pentru executarea unei macrocomenzi în stil Access

Pentru a executa o macrocomandă în stil Access, utilizați metoda RunMacro. Sintaxa este următoarea:

expression.RunMacro(MacroName, RepeatCount, RepeatExpression)

Iată componentele sintaxei:

  • expression este o expresie necesară care returnează un obiect DoCmd.
  • MacroName este un argument necesar de tip Variant care specifică numele macrocomenzii.
  • RepeatCount este un argument opțional de tip Variant care se poate utiliza pentru a specifica o expresie pentru a controla de câte ori ar trebui să se execute macrocomanda. Valoarea implicită este 1.
  • RepeatExpression este un argument opțional de tip Variant care conține o expresie numerică care urmează să fie evaluată de fiecare dată când se execută macrocomanda. Macrocomanda se oprește când această expresie se evaluează la 0 (False).

În următorul exemplu se execută o macrocomandă în stil Access denumită RemoveDuplicates:

DoCmd.RunMacro "RemoveDuplicates"