Tabelul de lucru si adaugarea unei inregistrari noi
Presupunem un tabel Piese_Stoc, folosit intr-un atelier electromecanic auto, cu campurile: id_piesa (cheie primara, numar generat automat), denumire (text), furnizor (text), pret_achizitie (numar cu 2 zecimale, in lei), stoc (numar intreg, bucati).
Are deja 5 inregistrari: Bujie NGK — Auto-Prest — 18,90 lei — stoc 40; Filtru ulei OE12 — Auto-Prest — 24,50 lei — stoc 18; Placute frana fata BF220 — MotoTehnic — 145,00 lei — stoc 6; Curea distributie CT1015 — Auto-Prest — 210,00 lei — stoc 3; Amortizor spate AM330 — MotoTehnic — 320,00 lei — stoc 2.
In Access, in vederea de tip grilaj (foaie de date) a tabelului, ultimul rand este mereu gol si marcat cu un asterisc (*) in stanga — acela este locul unde apare urmatoarea inregistrare. Dai clic pe primul camp de completat (sau apesi butonul de "inregistrare noua" din partea de jos a ferestrei) si tastezi valorile, mutandu-te de la un camp la altul cu tasta Tab (in Access, Enter face de obicei acelasi lucru — trece la campul urmator — dar Tab e obisnuinta recomandata, valabila si in alte aplicatii unde Enter poate insemna altceva, de exemplu confirmarea unui formular).
Daca id_piesa este numar generat automat, nu il tastezi tu — Access il completeaza singur de indata ce incepi sa scrii pe rand. Cand treci pe alt rand, inregistrarea se salveaza automat, deci nu esti obligat sa apesi un buton de "Salveaza" pentru fiecare rand — desi Access are si o comanda dedicata pentru asta (Pornire → Inregistrari → Salvare inregistrare, scurtatura Shift+Enter), utila cand vrei sa salvezi randul curent fara sa te muti de pe el.
Primesti o piesa noua de la furnizorul Auto-Prest: Senzor ABS spate, cod intern generat automat, pret 95,00 lei, stoc initial 8 bucati. Mergi pe randul cu asterisc, tastezi "Senzor ABS spate" in camp denumire, Tab, "Auto-Prest" in furnizor, Tab, "95.00" in pret_achizitie, Tab, "8" in stoc, apoi treci pe alt rand — inregistrarea e salvata, cu id_piesa generat automat, de exemplu 6.
Modificarea si stergerea inregistrarilor
Dai dublu-clic pe celula gresita, stergi valoarea veche si tastezi cea corecta, apoi te muti pe alt camp (Tab) sau alt rand pentru ca modificarea sa se salveze. Cat timp esti inca pe acelasi camp si nu ai apasat Tab sau Enter, poti apasa Esc ca sa anulezi modificarea si sa revii la valoarea veche. Dupa ce te-ai mutat de pe camp, poti anula doar ultima modificare cu Ctrl+Z — daca ai facut deja alta modificare intre timp, prima nu mai poate fi anulata.
Daca furnizorul "MotoTehnic" si-a schimbat numele in "MotoTehnic SRL" si apare in 40 de inregistrari, nu editezi manual fiecare rand. Inainte sa deschizi fereastra, dai clic intr-o celula din coloana furnizor — asta conteaza, pentru ca in Access campul "Cauta in" (Look In) este implicit setat pe Camp curent, nu pe tot tabelul. Apoi deschizi fereastra de cautare cu Ctrl+H, scrii "MotoTehnic" la Cauta si "MotoTehnic SRL" la Inlocuieste cu, schimbi "Cauta in" pe Tabel curent daca vrei sa acoperi si alte coloane, apoi alegi Inlocuieste tot — abia asa toate cele 40 de inregistrari se corecteaza dintr-o data. Daca sari peste pozitionarea cursorului sau lasi Look In pe Camp curent intr-o coloana gresita, Access raporteaza ca nu a gasit nimic de inlocuit.
Dai clic pe selectorul de inregistrare (bara subtire din stanga randului, nu pe o celula anume) ca sa selectezi tot randul, apoi apesi tasta Delete sau alegi optiunea de stergere din meniul de clic-dreapta. Aplicatia afiseaza o fereastra de avertizare de tipul "Urmeaza sa stergi 1 inregistrare — continui?" — abia dupa ce confirmi cu Da, randul dispare definitiv.
Ai filtrat sau sortat tabelul, iar randurile nu mai sunt in ordinea obisnuita. Selectezi din reflex "al treilea rand" crezand ca e piesa X, dar dupa filtrare acolo e alta piesa — si o stergi din greseala. Cum recunosti problema: verifica intotdeauna valoarea din campul cheie primara (id_piesa) sau denumirea afisata pe rand, chiar in fereastra de avertizare, inainte sa confirmi stergerea — nu te bazezi doar pe pozitia randului pe ecran.
Sortarea datelor
Dai clic pe capul de coloana al campului dupa care vrei sa sortezi (de exemplu pret_achizitie), apoi alegi butonul de sortare crescatoare sau descrescatoare de pe bara de instrumente, chiar deasupra tabelului, sau optiunea echivalenta din meniul de clic-dreapta pe capul de coloana. Sortarea se aplica imediat, pe tot tabelul.
Pornim de la cele 5 inregistrari din Piese_Stoc, in ordinea in care au fost introduse: Bujie NGK (18,90 lei), Filtru ulei OE12 (24,50 lei), Placute frana fata BF220 (145,00 lei), Curea distributie CT1015 (210,00 lei), Amortizor spate AM330 (320,00 lei).
Dupa sortare crescatoare dupa pret_achizitie, ordinea pe ecran devine: 1. Bujie NGK — 18,90 lei; 2. Filtru ulei OE12 — 24,50 lei; 3. Placute frana fata BF220 — 145,00 lei; 4. Curea distributie CT1015 — 210,00 lei; 5. Amortizor spate AM330 — 320,00 lei. Tabelul are aceleasi 5 inregistrari, doar ordinea s-a schimbat.
Daca vrei intai dupa furnizor, si in cadrul aceluiasi furnizor dupa pret crescator, foloseste fereastra avansata de sortare/filtrare a aplicatiei, unde poti adauga mai multe campuri de sortare, in ordinea prioritatii — primul camp adaugat conteaza primul, al doilea decide doar cand primele valori sunt egale.
Filtrarea datelor
In Access, dai clic-dreapta pe o valoare dintr-o celula (de exemplu pe "Auto-Prest" din campul furnizor) si alegi din meniul care apare optiunea "egal cu aceasta valoare" — tabelul ramane sa afiseze doar inregistrarile cu furnizorul Auto-Prest.
Pentru "stoc mai mic de 5", deschizi comanda Filtrare dupa formular (Advanced → Filter By Form) — Access inlocuieste temporar foaia de date cu o vedere separata, cu un singur rand gol, in care scrii conditia. Tastezi in campul stoc conditia <5, apoi aplici filtrul, ceea ce te intoarce la foaia de date obisnuita, filtrata. Din cele 5 inregistrari de baza, raman vizibile doar 2: Curea distributie CT1015 (stoc 3) si Amortizor spate AM330 (stoc 2) — restul sunt ascunse, nu sterse.
Butonul de comutare a filtrului (activeaza/dezactiveaza filtrul curent) de pe bara de instrumente readuce instant toate cele 5 inregistrari la vedere, fara sa fi pierdut nimic — filtrul poate fi reactivat oricand din acelasi buton, pentru ca doar este dezactivat, nu sters. Daca inchizi tabelul si il redeschizi, Access iti poate cere sa confirmi daca vrei sa pastrezi conditia de filtrare, asa ca nu te baza pe inchiderea tabelului ca metoda de a scapa definitiv de un filtru — elimina-l explicit din bara de instrumente.
Comanda de la telefon — "piesele de la Auto-Prest cu stoc sub 5" — se rezolva cu doua criterii combinate: furnizor = Auto-Prest si stoc < 5. Din Piese_Stoc, singura piesa care indeplineste ambele conditii este Curea distributie CT1015 (Auto-Prest, stoc 3).
Formularul de introducere a datelor
In Access, selectezi tabelul Piese_Stoc din panoul de navigare, apoi din fila Creare (Create) → grupul Formulare (Forms) alegi butonul Formular — genereaza automat un formular pornind de la tabelul selectat. Access construieste singur un formular cu cate un camp pe rand — id_piesa, denumire, furnizor, pret_achizitie, stoc — fiecare cu propria eticheta si propria caseta de completare. Formularul poate fi apoi rearanjat (mutat, marit) in vederea de proiectare (Design View) daca e nevoie.
Deschizi formularul, apesi butonul de inregistrare noua (aceeasi idee ca asteriscul din tabel), completezi fiecare caseta cu Tab intre ele, apoi treci la inregistrarea urmatoare — formularul afiseaza automat o pagina noua, goala, pentru urmatoarea piesa. Datele introduse prin formular ajung exact in acelasi tabel Piese_Stoc, ca si cum ai fi tastat direct in grilaj.
Validari care impiedica erorile de tastare
Setat pe campul furnizor, obliga completarea lui — daca ramane gol, Access refuza sa treaca pe alt rand. Util pentru campuri fara de care inregistrarea nu are sens (o piesa fara furnizor cunoscut e greu de reaprovizionat). O completare utila este Default Value (valoarea implicita): daca majoritatea pieselor noi vin de la Auto-Prest, poti preseta "Auto-Prest" ca valoare implicita pe camp — economisesti tastare si reduci sansa sa uiti campul gol.
Camp obligatoriu si regula de validare nu impiedica o greseala de tastare la campul furnizor — daca cineva scrie "Moto Tehnic" sau "mototehnic" in loc de "MotoTehnic", regula de "camp completat" e respectata, dar valoarea e inconsistenta (exact problema din Atomul 2, unde 40 de randuri au trebuit corectate cu Ctrl+H). Solutia reala e sa transformi campul furnizor intr-o caseta de cautare (Lookup): in vederea de proiectare, la tipul de date alegi asistentul de cautare (Lookup Wizard) si dai o lista fixa de furnizori (Auto-Prest, MotoTehnic...). De atunci, utilizatorul alege furnizorul dintr-o lista derulanta, nu il mai tasteaza liber — greseala de tastare devine imposibila pentru acel camp.
Pe campul pret_achizitie poti pune regula >0 — orice valoare zero sau negativa este respinsa, cu un text de eroare de genul "Pretul trebuie sa fie mai mare decat 0".
Pe campul stoc poti pune regula >=0 And <=2000 — impiedica atat un stoc negativ (imposibil in realitate), cat si o greseala de tastare de tipul un zero in plus (de exemplu 800 tastat gresit ca 8000: 8000 depaseste limita de 2000, deci regula respinge valoarea si te obliga sa verifici — daca ai fi pus limita la 9999, aceeasi greseala ar fi trecut nedetectata, pentru ca 8000 <= 9999).
Daca adaugi un camp telefon_furnizor pentru un numar romanesc in formatul 0722 123 456, in proprietatea Input Mask a campului scrii sirul 0000\ 000\ 000;0;_ — cele trei grupe de 0 cer exact 4, apoi 3, apoi 3 cifre obligatorii, iar \ insereaza un spatiu fix intre grupe (al doilea "0" din sir spune Access sa retina si spatiile ca parte din valoarea salvata, iar "_" e caracterul afisat in locurile necompletate). Cu masca activa, utilizatorul nu mai poate tasta litere sau mai putine cifre din greseala, pentru ca masca respinge orice nu se potriveste cu tiparul cerut.
Atentie la substituenti: 0 cere o cifra obligatorie in acea pozitie (ca mai sus), in timp ce 9 accepta o cifra SAU nimic (pozitie optionala) — o masca facuta din 9 in loc de 0 "respinge mai putine cifre" doar in aparenta, pentru ca in realitate lasa pozitiile goale sa treaca, deci protejeaza mai slab decat una din 0.
Regulile de mai sus se seteaza pe campul din tabel, deci se aplica oriunde introduci date — direct in grilaj sau prin formular. In plus, un formular poate avea si propria lui proprietate Validation Rule (in foaia de proprietati a formularului, nu a campului), utila cand vrei sa compari doua campuri intre ele — de exemplu, sa refuzi salvarea daca stoc introdus e mai mare decat o limita rezonabila pentru acel furnizor anume, o conditie care depinde de doua campuri deodata si nu poate sta doar in regula unui singur camp.
Pui o regula de validare, dar uiti sa completezi textul de eroare (mesajul care explica utilizatorului ce a gresit). Rezultatul: cand cineva tasteaza o valoare gresita, primeste un mesaj tehnic, generic, care nu spune nimic util — si nu stie cum sa corecteze. Cum recunosti problema: daca la testarea regulii primesti un mesaj neclar in loc de o explicatie in limba ta, inseamna ca ai lasat necompletat textul de eroare — intoarce-te in proprietatile campului si adauga-l.
Recapitulare si conexiuni
Adaugare — rand nou (*), Tab intre campuri, salvare automata la schimbarea randului
Modificare — editare celula, Esc inainte de a te muta, Ctrl+Z doar pentru ultima modificare, Ctrl+H pentru corectii repetate
Stergere — selectezi randul, Delete, confirmi — dupa confirmare NU se mai poate anula
Sortare — reordoneaza toate randurile, nu ascunde nimic
Filtrare — ascunde temporar randurile care nu se potrivesc criteriului, fara sa le stearga
Formular + validari — introducere mai sigura, cu conditii care resping datele gresite inainte de salvare
Ai lucrat cu un tabel deja populat, cu 5-6 inregistrari introduse pe rand. In lectia urmatoare veti invata cum incarcati zeci sau sute de inregistrari deodata — introducere manuala prin formular pentru volume mici, import dintr-o foaie de calcul pentru volume mari, si cum curatati duplicatele si formatele gresite inainte sa strice tabelul.
Camp = coloana; inregistrare = rand; cheia primara nu se repeta niciodata.
Stergerea confirmata este definitiva — verifica intotdeauna randul inainte de confirmare.
Sortarea schimba ordinea; filtrarea ascunde temporar — niciuna nu sterge date.
Regula de validare fara text de eroare lasa utilizatorul fara explicatie — completeaza-l mereu.