Crearea unei funcții pentru Access

Pot fi create funcții pentru Access la fel ca pentru orice altă aplicație Office 2016 care are VBA activat – se introduce doar cuvântul Function și i se adaugă un nume.

Însă Access nu are același istoric ca celelalte programe Office (care sunt mai asemănătoare între ele). Astfel, Access are adesea modalități speciale de programare și are mai multe aspecte unice pentru modelele obiectelor sale.

Access are un obiect de uz general numit DoCmd. Acest obiect nu are proprietăți, dar are o mulțime de metode care îndeplinesc sarcini comune precum lansarea altor aplicații, localizarea înregistrărilor și deschiderea rapoartelor și formularelor.

Înainte de a crea o macrocomandă pentru a ilustra modul de utilizare a obiectului DoCmd, este necesară o bază de date simplă cu care se poate experimenta. Access vine cu mai multe șabloane, așa că va fi folosit unul dintre ele. Etape de lucru:

  1. Se deschide aplicația Access.
  2. În Office 2016, diverse aplicații ca Word și Access afișează la deschidere un set de șabloane.
  3. Se face dublu clic pe Desktop Contacts pentru a deschide un șablon cu o bază de date. (Nu se alege șablonul Contacts, care include caracteristici online ce complică acest exemplu.)
  4. Dacă apare un mesaj de atenționare (o bandă galbenă sub Ribbon), clic pe butonul Enable Content.
  5. Clic pe butonul Create. Dacă apare o fereastră care propune vizualizarea unor filme de la Microsoft, clic pe butonul X din colțul dreapta sus pentru a închide acea fereastră.
  6. Se adaugă câteva date cu clic pe legătura (New) din coloana Open din partea stângă. Se deschide fereastra de dialog Contacts Details.
  7. Clic pe butonul Save And New din fereastra de dialog Contact Details de fiecare dată când se adaugă o înregistrare nouă. Se adaugă astfel 3 înregistrări.

Acum se poate folosi DoCmd pentru a localiza o anumită înregistrare după numărul ID. Se apasă combinația de taste Alt+F11 pentru a deschide Visual Basic Editor din Access; apoi clic dreapta pe numele bazei de date (cea scrisă cu litere îngroșate) din Project Explorer. Se alege Insert > Module din meniul contextual. În noul modul, se tastează următorul cod, care va muta punctul de inserare la o înregistrare nouă:

1. Function MutaLaNew()
2.
3. DoCmd.OpenForm "Contact List"
4. DoCmd.GoToRecord , , acNewRec
5.
6. End Function

Pentru a testa această macrocomandă, se poate închide formularul Contact List sau se face clic în formular undeva pe una dintre înregistrările existente, astfel încât cursorul de inserare intermitent să fie situat deasupra liniei pentru înregistrare nouă (New). Apoi se comută la Editorul VBA și se face clic pe funcția MutaLaNew pentru a plasa cursorul în macrocomandă. Se apasă tasta F5. Apoi se revine la Access și cursorul care clipește ar trebui să se afle pe o înregistrare nouă.

Iată cum funcționează codul:

  • Linia 3 deschide formularul sau se asigură că este deschis formularul Contact List. Deoarece s-a început lucrul cu baza de date Contacts și au fost completate câteva informații în formularul Contact List, formularul este deschis și activ. Cu toate acestea, este posibil ca ulterior să fie adăugate formulare suplimentare.

Se recomandă să se specifice formularul, tabelul sau obiectul cu care se va lucra, pentru că la un moment dat, o macrocomandă ar putea fi executată într-un anumit context. Cu alte cuvinte, dacă se omite linia 3, macrocomanda va acționa asupra oricărui formular deschis în acel moment în Access.

  • Linia 4 folosește metoda GoToRecord a obiectului DoCmd. Constanta acNewRec specifică o înregistrare nouă.