Invatare Atomica

Formulare pentru introducerea datelor

Cum construiesti in Access un formular usor de completat, cu Expertul de formulare, si cum legi un subformular pentru datele dintr-un tabel inrudit.

Progres lectie:
0%
🎯

Obiectivul lectiei

Vei intelege de ce datele intr-o baza de date se introduc printr-un formular si nu direct in tabel, vei folosi Expertul de formulare (Form Wizard) din Access ca sa creezi un formular pornind de la un tabel, vei aranja si alinia controalele unui formular in vizualizarea de aspect, si vei construi un formular cu subformular care afiseaza, pentru fiecare client, doar comenzile lui.

Dupa aceasta lectie vei putea:

  • Sa explici de ce introducerea datelor printr-un formular reduce erorile fata de scrisul direct in tabel
  • Sa creezi un formular simplu, pe un singur tabel, cu Expertul de formulare (Form Wizard)
  • Sa alegi aspectul potrivit al formularului: Columnar, Tabular, Foaie de date sau Justificat
  • Sa recunosti principalele tipuri de controale (Casuta text, Eticheta, Caseta combinata, Caseta de validare) si sa le aranjezi in vizualizarea de aspect (Layout View)
  • Sa explici ce este un formular cu subformular si cand se foloseste, pentru date legate printr-o relatie unu-la-multe
  • Sa creezi, cu Expertul de formulare, un formular cu subformular pornind de la doua tabele inrudite

Incearca singur!

Provocare — inainte sa citesti:

Lucrezi la o firma mica si ai deschis in Access tabelul Comenzi, direct in vizualizarea de tip foaie de date (coloane si randuri, ca in Excel): ComandaID | ClientID | Produs | Cantitate | PretUnitar. Seful iti da o lista pe hartie cu 15 comenzi noi si iti cere sa le introduci direct in acest tabel, rand cu rand, coloana cu coloana. Tabelul din exemplu are 5 coloane, dar imagineaza-ti un tabel real de comenzi, cu 12 coloane (adauga, de exemplu, DataComenzii, AdresaLivrare, MetodaPlata, Observatii). Scrie mai jos ce probleme crezi ca pot aparea daca lucrezi asa, direct in tabel, mai ales cu 12 coloane si 15 randuri de completat la rand.

💡 Ai nevoie de un indiciu?

Ganditi-va la o fisa de comanda tiparita, cu casute clar etichetate ("Nume client", "Produs", "Cantitate"), pe care o completeaza un singur muncitor din atelier. Comparati asta cu un tabel Excel imens deschis pe tot ecranul, unde e usor sa scrii "20" in coloana gresita sau sa sari peste o coloana obligatorie fara sa observi.

Subiectul lectiei de azi — formularele — rezolva exact aceasta problema.

1

De ce introducem datele prin formular, nu direct in tabel

Un formular (Form) este un obiect din Access care afiseaza campurile unei singure inregistrari, aranjate intr-un aspect clar, cu etichete si eventual liste de alegere — in loc sa afiseze zeci de randuri si coloane ca un tabel deschis in vizualizarea de tip foaie de date (Datasheet View).
Ce se poate strica atunci cand introduci date direct in tabel:

Intr-un tabel cu 12 coloane, deschis pe ecran lat, este usor sa treci cu ochiul peste o coloana si sa scrii valoarea in coloana urmatoare, decalat. La fel de usor este sa uiti sa completezi un camp obligatoriu (de exemplu ClientID) pentru ca nu observi ca acea celula a ramas goala, in mijlocul unui tabel plin de cifre.

Ce castigi cu un formular bine facut:

O singura inregistrare pe ecran — nu te ratacesti printre randuri.
Etichete clare pentru fiecare camp (ex. "Nume client", nu doar numele coloanei din tabel).
Liste de alegere (caseta combinata) pentru campuri care au un set fix de valori — nu mai poti scrie din greseala "Bucureti" (fara un "s") sau "Bucuresti " (cu un spatiu in plus la sfarsit, invizibil pe ecran, dar care sparge orice cautare exacta dupa oras), pentru ca alegi direct din lista, fara sa mai tastezi.
Control asupra a ce se vede — poti ascunde intr-un formular campurile tehnice (ex. ID-uri interne) pe care persoana care introduce date nu are nevoie sa le vada sau sa le modifice.

2

Expertul de formulare — primii pasi

Expertul de formulare (Form Wizard) este un instrument din Access care iti pune cateva intrebari simple si construieste formularul pentru tine, pas cu pas, fara sa fie nevoie sa desenezi manual fiecare casuta.
Exemplu: formular simplu pentru tabelul Clienti

Ai deja in baza de date tabelul Clienti, cu campurile ClientID, NumeFirma, Telefon. Pasii pentru un formular pe acest singur tabel:

Pasii concreti:

1. Deschide tabelul Clienti sau doar selecteaza-l in panoul din stanga (Navigation Pane), fara sa il deschizi.
2. Mergi in panglica la tab-ul Create, grupul Forms, si apasa Form Wizard.
3. In fereastra care apare, la Tables/Queries este deja selectat Table: Clienti. In lista Available Fields apar toate campurile tabelului.
4. Apasa butonul >> ca sa muti toate campurile in lista Selected Fields (sau selecteaza campurile unul cate unul si apasa >). Apasa Next.
5. La pasul urmator alegi aspectul (layout) formularului — vezi urmatorul atom. Apasa Next.
6. La ultimul pas, scrie un titlu pentru formular (ex. "Formular Clienti") si lasa bifata optiunea Open the form to view or enter information. Apasa Finish.

Rezultat:

Formularul se deschide direct, gata de folosit: un singur client pe ecran, cu campurile etichetate ClientID, NumeFirma, Telefon, si sagetile de navigare intre inregistrari in partea de jos a ferestrei.

3

Aspectul (layout) formularului

La pasul de aspect din Expertul de formulare, Access iti ofera patru moduri de asezare a campurilor pe ecran. Alegerea depinde de cate inregistrari vrei sa vezi deodata.
Columnar (coloana)

Fiecare camp apare pe randul lui, cu eticheta in stanga si valoarea in dreapta, o singura inregistrare pe ecran. Cel mai potrivit pentru introducerea de date noi, cand vrei sa te concentrezi pe o singura comanda sau un singur client odata.

Tabular

Etichetele apar o singura data, sus, ca un antet de tabel, iar dedesubt fiecare inregistrare ocupa un rand — ca o lista. Bun pentru a vedea mai multe inregistrari deodata, dar cu formatarea unui formular (fonturi, culori) pastrata.

Datasheet (Foaie de date)

Arata exact ca un tabel deschis normal — randuri si coloane simple, fara formatare speciala. Se foloseste rar ca formular principal; apare insa des ca aspect pentru subformulare (vezi mai jos, la formularul cu subformular).

Justified (justificat)

Campurile unei inregistrari sunt asezate pe mai multe randuri, lipite unele de altele pe latimea ecranului, ca un text aliniat in bloc. Foloseste spatiul mai eficient cand ai multe campuri scurte, dar e mai putin folosit decat Columnar.

4

Controalele formularului si aranjarea lor

Fiecare camp dintr-un formular este afisat printr-un control — un element grafic pe care il poti muta, redimensiona sau schimba. Expertul alege automat controlul potrivit dupa tipul campului din tabel, dar il poti schimba ulterior.
Cele mai folosite tipuri de controale:

Eticheta (Label) — text fix, doar de afisare (ex. "Nume client:").
Caseta text (Text Box) — pentru text liber sau numere (ex. numele firmei, cantitatea).
Caseta combinata (Combo Box) — lista derulanta cu valori dintr-un set fix sau dintr-un alt tabel (ex. alegerea unui client dintr-o lista de clienti existenti).
Caseta de validare (Check Box) — pentru campuri de tip Da/Nu.
Buton de comanda (Command Button) — declanseaza o actiune (ex. inchide formularul, salveaza inregistrarea).

Unde se deschide formularul dupa Expert — si ce e Design View

La ultimul pas al Expertului alegi intre doua optiuni, si niciuna nu deschide direct Layout View: Open the form to view or enter information deschide formularul in Form View (vizualizarea normala de rulare, gata de folosit — exact ce ai vazut la Atomul 2, cu sagetile de navigare jos); Modify the form's design il deschide in Design View (vizualizarea de proiectare — schela formularului, cu grila punctata, sectiunile Header/Detail/Footer si toate controalele, dar fara date reale, ca la o schema tehnica in loc de o poza).

Comuti oricand intre vizualizari din tab-ul Home, butonul View (sau clic-dreapta pe eticheta formularului, in Navigation Pane): Form View (rulare, cu date), Layout View (aspect, tot cu date reale, dar cu controalele editabile — aici se face de obicei aranjarea rapida) si Design View (proiectare completa, fara date, pentru setari fine ca Tab Order sau Link Master/Child Fields).

Control layout — de ce controalele nu se misca libere din prima

Controalele generate de Expert nu stau libere pe formular: sunt prinse automat intr-un control layout (o grila invizibila care le tine aliniate unele fata de altele), de tip Stacked (stivuit, pe verticala — la aspectul Columnar) sau Tabular (pe orizontala, ca un tabel — la aspectul Tabular). Cat timp un control face parte din acest layout, nu il poti trage liber cu mouse-ul in orice pozitie — intreg randul sau intreaga coloana se misca odata cu el — si o parte din butoanele grupului Sizing & Ordering (inclusiv Align) raman inactive.

Pasii concreti pentru a rearanja controalele — tab-ul Arrange

1. Deschide formularul in Layout View (Home → View → Layout View); apare automat tab-ul contextual Arrange in panglica.
2. Selecteaza un control (clic pe el) sau mai multe deodata (tine Shift apasat si da clic pe fiecare).
3. Pentru a schimba doar ordinea campurilor in interiorul grilei, trage controlul selectat langa altul — layout-ul il repozitioneaza automat, restul se aliniaza singur.
4. Pentru a scoate un control complet din grila si a-l pozitiona liber oriunde pe formular, foloseste tab-ul Arrange, grupul Table, butonul Remove Layout. Abia dupa aceea controlul poate fi tras liber cu mouse-ul, iar butoanele Align (Stanga/Dreapta/Sus/Jos) devin active pentru controalele ramase intr-un alt layout.
5. Pentru spatiere fina intre controale, foloseste Control Padding si Control Margins din tab-ul Arrange, in loc sa muti fiecare control manual; pentru un camp nou in grila, foloseste Insert Above/Below/Left/Right (adauga un rand sau o coloana in layout).
6. Ordinea in care tasta Tab trece de la un camp la altul se seteaza separat, in Design View, cu butonul Tab Order din tab-ul Design.

5

Formular cu subformular — date legate

Cand doua tabele sunt legate printr-o relatie unu-la-multe (un client poate avea mai multe comenzi, dar o comanda apartine unui singur client), Access poate construi un formular cu subformular: formularul principal arata inregistrarea din partea "unu" (clientul), iar subformularul, integrat in interiorul lui, arata automat doar inregistrarile din partea "multe" (comenzile) care apartin acelui client.
Exemplu — firma de piese metalice:

Tabelul Clienti (ClientID, NumeFirma, Telefon) si tabelul Comenzi (ComandaID, ClientID, Produs, Cantitate, PretUnitar) sunt legate prin campul comun ClientID: fiecare comanda "stie" carui client apartine.

ClientIDNumeFirmaTelefon
1Atelier Metal SRL0745 123 456
2ConstruMax SRL0755 222 333
ComandaIDClientIDProdusCantitatePretUnitar
1011Profil metalic 40x402015,50
1021Electrod sudura58,00
1032Caramida5000,95
Ce se vede in formular:

Cand formularul principal afiseaza clientul 1 — Atelier Metal SRL, subformularul arata automat doar comenzile 101 si 102 (cele cu ClientID = 1) — nu si comanda 103, care apartine celuilalt client. Navighezi la clientul 2 si subformularul se schimba singur, aratand doar comanda 103.

6

Cum construiesti formularul cu subformular

Expertul de formulare poate crea singur formularul cu subformular, daca ii dai campuri din ambele tabele si relatia dintre ele exista deja (stabilita in fereastra Relationships din tab-ul Database Tools).
Pasii concreti, pornind de la tabelele Clienti si Comenzi:

1. Tab-ul Create → grupul FormsForm Wizard.
2. La Tables/Queries, alege Table: Clienti, apasa >> ca sa muti toate campurile lui in Selected Fields.
3. Din acelasi meniu Tables/Queries, schimba pe Table: Comenzi si muta campurile Produs, Cantitate, PretUnitar (nu si ClientID, ca sa nu aiba doua campuri identice pe ecran — legatura se face automat, in fundal, de catre Access). Apasa Next.
4. La pasul "How do you want to view your data?", in lista din stanga alege by Clienti; dedesubtul listei, tot in stanga, verifica sa fie bifata optiunea Form with subform(s) (e bifata implicit cand exista relatia) — in dreapta vezi doar un panou de previzualizare, nu optiuni de bifat. Apasa Next.
5. La aspectul subformularului, alege Tabular sau Datasheet (arata mai multe comenzi deodata — vezi Atomul 3). Apasa Next.
6. Scrie titlurile pentru formular si subformular (ex. "Clienti" si "Comenzi Subformular") si apasa Finish.

Legatura din spate — Link Master/Child Fields

Daca deschizi subformularul in Design View si ii verifici proprietatile (clic pe chenarul subformularului, apoi Property Sheet, tab-ul Data), gasesti doua proprietati: Link Master Fields (campul din formularul principal — ClientID) si Link Child Fields (campul corespunzator din subformular — tot ClientID). Expertul le completeaza automat, pe baza relatiei dintre tabele — vezi mai jos ce se intampla cand aceste campuri raman goale.

Greseala tipica

Daca intre Clienti si Comenzi nu a fost stabilita relatia (in fereastra Relationships), Expertul de formulare nu creaza in tacere un subformular nefiltrat: cand alegi campuri din ambele tabele fara relatie intre ele, afiseaza direct eroarea "You have chosen fields from record sources which the wizard can't connect..." si refuza sa continue, pana stabilesti relatia sau alegi campuri dintr-un singur tabel.

Campurile Link Master Fields / Link Child Fields goale, cu subformularul aratand toate comenzile pentru orice client, apar pe alt drum: cand cineva insereaza manual, in Design View, un control SubForm/Subreport peste un formular deja existent (sau trage un formular gata facut peste altul), fara sa foloseasca Expertul — Access nu completeaza automat campurile de legatura. Repari asa: deschizi subformularul in Design View, Property Sheet, tab Data, si completezi manual ClientID la ambele proprietati.

7

Recapitulare si conexiuni

Formularul este fata prietenoasa a bazei de date: ascunde complexitatea tabelului si iti pune la indemana doar campurile potrivite, in aspectul potrivit. Cand doua tabele sunt legate, formularul cu subformular arata dintr-o privire atat inregistrarea principala, cat si toate inregistrarile ei "copil".
Rezumat vizual al pasilor:

Tabel(e) cu date
  ↓ Create → Forms → Form Wizard
Alegere campuri (dintr-un tabel sau din doua tabele legate)
  ↓ alegere aspect (Columnar / Tabular / Datasheet / Justified)
Formular (cu subformular, daca sunt doua tabele legate)
  ↓ Layout View / Design View + tab Arrange
Controale aranjate, aliniate, in ordinea potrivita a tastei Tab

Conexiune cu lectia urmatoare:

Ati invatat sa introduceti si sa vedeti date prin formular. In lectia urmatoare veti invata sa intrebati baza de date — cum construiti interogari (queries) care extrag exact randurile de care aveti nevoie, si cum filtrati rapid datele direct dintr-un tabel sau formular.

De retinut pentru activitatile practice:

Formular = o inregistrare pe ecran, clar etichetata — reduce erorile fata de scrisul direct in tabel.
Create → Forms → Form Wizard = drumul standard de creare.
Aspect: Columnar (o inregistrare), Tabular/Datasheet (mai multe), Justified (bloc).
Controale: Text Box, Label, Combo Box, Check Box, Command Button.
Subformular = tabelul "cu multe", filtrat automat prin Link Master/Child Fields dupa cheia comuna.

Exercitii practice

Exercitiul 1 (Nivel minim) — Ce control folosesti?

Ai un formular pentru tabelul Piese, cu campurile: DenumirePiesa (text liber), EsteStocEpuizat (Da/Nu), Categorie (una din doar 4 valori posibile: "Suruburi", "Profile", "Electrozi", "Altele"), PretUnitar (numar). Pentru fiecare camp, alege cel mai potrivit tip de control (Caseta text, Caseta de validare, Caseta combinata) si scrie o propozitie care justifica alegerea.

Vezi rezolvarea

DenumirePiesa — Caseta text (Text Box): e text liber, fara valori fixe, deci nu se poate alege dintr-o lista.

EsteStocEpuizat — Caseta de validare (Check Box): campul e de tip Da/Nu, iar Check Box e controlul facut special pentru a bifa o valoare Da/Nu.

Categorie — Caseta combinata (Combo Box): exista doar 4 valori posibile fixe, deci o lista derulanta evita greselile de scriere si e mai rapida decat tastarea.

PretUnitar — Caseta text (Text Box): e un numar introdus liber, iar Access nu are un control special doar pentru numere — Text Box afiseaza si accepta si valori numerice.

Exercitiul 2 (Nivel standard) — Aranjarea controalelor

Ai creat cu Expertul un formular Columnar pe tabelul Piese: campurile DenumirePiesa, Categorie, PretUnitar au iesit stivuite (Stacked layout), unul sub altul, si vrei sa muti campul PretUnitar mai jos, langa marginea din dreapta a formularului, separat de celelalte doua. (a) Explica de ce nu poti pur si simplu sa il tragi acolo cu mouse-ul cat timp cele trei controale sunt inca in acelasi control layout. (b) Descrie, pas cu pas (tab-uri, butoane), ce trebuie sa faci in Layout View ca sa il pozitionezi liber, incepand de la selectarea controlului.

Vezi rezolvarea

a) Cat timp DenumirePiesa, Categorie si PretUnitar sunt in acelasi control layout (Stacked), Access le trateaza ca pe un singur bloc: tragerea unui control individual muta tot blocul sau nu produce efectul dorit, pentru ca layout-ul controleaza pozitia relativa a tuturor controalelor din el.

b) Pasii, in Layout View:

  1. Dai clic pe controlul PretUnitar ca sa il selectezi.
  2. Mergi in tab-ul Arrange (Aranjare), grupul Table (sau Rows & Columns), si apesi Remove (Elimina) — scoti PretUnitar din control layout-ul comun.
  3. Acum controlul e liber; il tragi cu mouse-ul in pozitia dorita, langa marginea din dreapta a formularului.

Exercitiul 3 (Nivel standard) — Formular cu subformular pentru Furnizori

Ai doua tabele legate printr-o relatie unu-la-multe: Furnizori (FurnizorID, NumeFirma, Telefon) si Piese (PieseID, FurnizorID, DenumirePiesa, PretAchizitie). Descrie, pas cu pas, cum construiesti cu Expertul de formulare un formular principal pe Furnizori cu subformular pe Piese. Precizeaza si care doua campuri trebuie sa apara la proprietatile Link Master Fields si Link Child Fields ale subformularului, si de ce trebuie sa fie acelasi camp.

Vezi rezolvarea

Pasii cu Expertul de formulare:

  1. Tab-ul Create → grupul Forms → Form Wizard.
  2. La Tables/Queries alegi Table: Furnizori si apesi >> ca sa muti toate campurile lui in Selected Fields.
  3. Schimbi pe Table: Piese si muti doar DenumirePiesa si PretAchizitie (nu si FurnizorID, ca sa nu apara de doua ori). Apesi Next.
  4. La „How do you want to view your data?” alegi by Furnizori, cu optiunea Form with subform(s) bifata (apare automat pentru ca relatia exista). Apesi Next, alegi aspectul subformularului (Datasheet), apoi Next si Finish.

La proprietatile subformularului, Link Master Fields = FurnizorID si Link Child Fields = FurnizorID — trebuie sa fie acelasi camp, altfel Access nu stie dupa ce valoare sa filtreze piesele fiecarui furnizor curent.

Exercitiul 4 (Nivel performanta) — Calcul si diagnosticare

Foloseste datele din Atomul 5: clientul 2 — ConstruMax SRL are o singura comanda inregistrata, 103, cu Produs = "Caramida", Cantitate = 500, PretUnitar = 0,95 lei. (a) Calculeaza valoarea totala a acestei comenzi (Cantitate × PretUnitar) si scrie rezultatul in lei. (b) Un coleg a construit formularul altfel decat la Exercitiul 3: in loc sa foloseasca Expertul, a deschis formularul Clienti in Design View si a tras manual un control SubForm/Subreport, legandu-l la formularul Comenzi deja existent. Cand navigheaza la clientul 2, subformularul arata toate cele 3 comenzi (101, 102 si 103), nu doar comanda 103. Explica, folosind ce ai invatat despre Link Master/Child Fields, care este cea mai probabila cauza a acestei probleme si ce ar trebui sa verifice si sa completeze colegul, in Property Sheet, ca sa o repare.

Vezi rezolvarea

a) Valoarea comenzii = 500 × 0,95 = 475 lei.

b) Cauza cea mai probabila: controlul SubForm/Subreport a fost tras manual, iar proprietatile Link Master Fields si Link Child Fields au ramas goale sau completate gresit — fara aceasta legatura, subformularul nu stie sa filtreze dupa clientul curent si arata toate inregistrarile din Comenzi.

Colegul trebuie sa selecteze controlul subformular in Design View, sa deschida Property Sheet (F4), fila Data, si sa completeze Link Master Fields = ClientID si Link Child Fields = ClientID — exact campul comun dintre formularul principal si subformular.

Ce ai invatat astazi

  • Formularul reduce erorile de introducere a datelor fata de scrisul direct in tabel: o inregistrare pe ecran, etichetata clar
  • Expertul de formulare: Create → Forms → Form Wizard → alegere campuri → alegere aspect → titlu → Finish
  • Aspecte disponibile: Columnar (o inregistrare), Tabular si Datasheet (mai multe deodata), Justified (bloc)
  • Controale principale: Label, Text Box, Combo Box, Check Box, Command Button — fiecare potrivit unui tip de camp
  • Controalele Expertului ies grupate intr-un control layout (Stacked/Tabular); pentru pozitionare libera: Arrange → Remove Layout
  • Layout View = aranjare cu date reale vizibile; tab-ul Arrange = Align si Size/Space pentru aliniere; Tab Order = ordinea tastei Tab, setata in Design View
  • Formular cu subformular = pentru date legate unu-la-multe; subformularul se filtreaza automat prin Link Master Fields / Link Child Fields
  • Fara relatie stabilita intre tabele, Expertul refuza sa creeze formularul cu subformular (eroare); Link Master/Child Fields goale apar cand un SubForm e inserat manual, in Design View — se repara completandu-le manual

Vrei mai mult?

Provocare: Pe formularul tau Clienti-Comenzi, deschide Design View si adauga sub subformular un buton nou (Buton de comanda). Foloseste Expertul de butoane (apare automat cand desenezi butonul, daca e bifat Control Wizards) si alege categoria Record Navigation -> Go to Next Record. Testeaza-l: navigheaza intre clienti apasand butonul tau, nu sagetile din josul ferestrei, si verifica ca subformularul se actualizeaza corect la fiecare client.

  • De ce crezi: Butonul tau nou face exact ce faceau si sagetile de navigare implicite din partea de jos a formularului. De ce crezi ca Access ofera doua cai diferite catre acelasi rezultat — controale implicite plus Expert de butoane — in loc sa lase doar una?
  • Deschidere: Butoanele construite cu Expertul de butoane genereaza in fundal cod VBA (Visual Basic for Applications), acelasi limbaj folosit si de macro-urile din Excel. Orice aplicatie de gestiune facuta la comanda pentru o firma mica (magazin, service auto, cabinet medical) e, in esenta, un formular Access cu astfel de butoane care leaga ecranele intre ele.

Urmatoarea lectie

Continua cu Interogari si filtre — cum construiesti interogari care extrag exact datele de care ai nevoie dintr-un tabel sau din mai multe tabele legate, si cum filtrezi rapid direct din tabel sau formular.

Continua →