De ce introducem datele prin formular, nu 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.
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.
Expertul de formulare — primii pasi
Ai deja in baza de date tabelul Clienti, cu campurile ClientID, NumeFirma, Telefon. Pasii pentru un formular pe acest singur tabel:
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.
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.
Aspectul (layout) formularului
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.
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.
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).
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.
Controalele formularului si aranjarea lor
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).
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).
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.
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.
Formular cu subformular — date legate
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.
| ClientID | NumeFirma | Telefon |
|---|---|---|
| 1 | Atelier Metal SRL | 0745 123 456 |
| 2 | ConstruMax SRL | 0755 222 333 |
| ComandaID | ClientID | Produs | Cantitate | PretUnitar |
|---|---|---|---|---|
| 101 | 1 | Profil metalic 40x40 | 20 | 15,50 |
| 102 | 1 | Electrod sudura | 5 | 8,00 |
| 103 | 2 | Caramida | 500 | 0,95 |
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.
Cum construiesti formularul cu subformular
1. Tab-ul Create → grupul Forms → Form 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.
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.
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.
Recapitulare si conexiuni
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
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.
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.