De ce introduci date printr-un formular, nu direct in tabel
Cand inregistrezi o interventie noua direct in tabelul Interventii, cu 8-10 coloane vizibile pe ecran, e usor sa aluneci cu o celula si sa scrii kilometrajul in coloana de pret. Intr-un formular, vezi un singur camp "Kilometraj" si un singur camp "Pret", clar etichetate, unul sub altul — greu de confundat.
Tabel direct — bun pentru a vedea multe randuri deodata, a sorta, a filtra, a corecta rapid o singura valoare gresita.
Formular — bun pentru introducerea de inregistrari noi, una cate una, mai ales cand campurile sunt multe sau cand persoana care introduce datele (un coleg de la receptie, nu neaparat cel care a construit baza) nu cunoaste structura tabelului pe de rost.
Cum creezi un formular pornind de la un tabel existent
1. In panoul din stanga (Navigation Pane), da clic pe tabelul Piese_Stoc, ca sa fie selectat.
2. Deschide tab-ul Create din panglica de sus.
3. Apasa butonul Form. Access genereaza automat un formular cu toate campurile tabelului, fiecare pe randul lui, cu eticheta in stanga si spatiul de completat in dreapta.
4. Formularul se deschide direct in modul Layout View — poti trage marginile campurilor mai late sau mai inguste daca un text nu incape.
5. Salveaza formularul cu Ctrl+S si da-i un nume clar, de exemplu Formular_Piese_Stoc.
Deschide formularul (dublu-clic pe el in Navigation Pane). La baza ferestrei, in bara de navigare intre inregistrari, apasa butonul cu sageata si asterisc (New (blank) record). Formularul se goleste, gata pentru o inregistrare noua. Completezi fiecare camp, apoi treci la campul urmator cu tasta Tab. Cand ai completat ultimul camp si apesi Tab din nou (sau muti la alta inregistrare), Access salveaza automat randul — nu exista un buton separat de "Salveaza".
Importul dintr-o foaie de calcul Excel existenta
Catalogul de la furnizor are si o coloana in plus fata de Piese_Stoc: propriul lor cod de produs (de exemplu "007", "010"). Ca sa il pastrezi, deschizi tabelul Piese_Stoc in Design View si adaugi manual un camp nou, cod_furnizor, cu tipul de date Short Text — ales acum, apasat de tine, nu ceva ce mai alegi mai tarziu in expert. (id_piesa, cheia primara, ramane AutoNumber si nu vine din Excel — Access il genereaza singur pentru fiecare rand nou.)
1. Deschide tab-ul External Data din panglica.
2. In grupul Import & Link, apasa Excel (sau New Data Source > From File > Excel, in functie de versiune).
3. La File name, apasa Browse si alege fisierul .xlsx.
4. Alege una dintre cele trei optiuni: Import the source data into a new table (creeaza un tabel nou), Append a copy of the records to the table (adauga la un tabel care exista deja — alegi Piese_Stoc din lista) sau Link to the data source (doar conecteaza, fara sa copieze). Pentru situatia noastra — completarea tabelului Piese_Stoc existent — alegi Append si selectezi Piese_Stoc.
5. Apasa OK, apoi alege foaia de calcul (daca fisierul are mai multe sheet-uri) si bifeaza First Row Contains Column Headings daca primul rand din Excel are denumirile campurilor (cod_furnizor, denumire etc.).
6. Access iti arata o previzualizare, dar pe traseul Append nu exista un ecran de mapare coloana-camp si niciun control de tip de date: potrivirea se face strict dupa numele de pe primul rand din Excel, comparat cu numele campurilor din tabel. Daca un nume din Excel nu se potriveste cu niciun camp, acea coloana pur si simplu nu se importa (sau, in unele versiuni, expertul respinge tot importul cu eroare) — nu ai unde sa o corectezi manual in acest ecran.
7. Apasa Finish. Access iti confirma cate randuri au fost adaugate.
Optiunea Append functioneaza corect doar daca denumirile coloanelor din Excel corespund exact cu numele campurilor din tabelul Access. Daca in Excel scrie "Cod furnizor" cu spatiu si in Access campul se numeste "cod_furnizor" cu underline, redenumesti antetul in Excel, inainte de a lansa expertul — pe traseul Append nu exista un ecran unde sa corectezi potrivirea dupa aceea.
Remove Duplicates (Atomul 5) curata doar duplicatele din interiorul fisierului Excel — nu spune nimic despre cele 180 de randuri fata de piesele deja existente in Piese_Stoc. Mecanismul care te apara aici este indexul unic pe cod_furnizor: in Design View, pe randul campului cod_furnizor, proprietatea Indexed o setezi pe Yes (No Duplicates) — aceeasi proprietate invatata in lectia trecuta, acolo folosita pentru cautari rapide pe Cod_Auto (Duplicates OK); aici o folosesti in varianta ei stricta, ca sa respingi valorile repetate, fara ca cod_furnizor sa devina cheie primara (id_piesa ramane cheia primara).
Cu indexul activ, cand rulezi Append si un rand din Excel are un cod_furnizor care exista deja in tabel, Access respinge doar acel rand — restul randurilor valide se importa normal — si iti arata un mesaj cu numarul de randuri care nu au putut fi adaugate, punandu-le intr-un tabel nou creat automat, Paste Errors. Il deschizi ca sa vezi exact ce randuri au fost respinse si de ce.
Daca nu esti sigur ca indexul e deja pus, verifici (sau cauti duplicate ramase din alt import) cu Create > Query Wizard > Find Duplicates Query Wizard: alegi tabelul Piese_Stoc, campul cod_furnizor, iar Access construieste o interogare care iti arata toate randurile cu cod_furnizor repetat.
Cum pregatesti Excelul inainte sa il importi
Un singur rand de antet — primul rand contine denumirile coloanelor (ideal, identice cu numele campurilor din tabelul Access), fara randuri goale sau titluri suplimentare deasupra.
Fara celule combinate (merged cells) — daca ai combinat celule pentru un titlu de sectiune, Access nu stie cui apartine acea valoare. Selectezi zona, apoi Home > Merge & Center (ca sa dezactivezi combinarea, daca era activa).
O singura foaie relevanta — daca fisierul are mai multe sheet-uri, stii exact care contine datele de importat.
Fara randuri sau coloane goale in mijlocul datelor — un rand gol intrerupe uneori intervalul pe care Access il citeste.
O coloana = un tip de informatie — nu amesteca in aceeasi coloana, la randuri diferite, si text si numere cu sens diferit (de exemplu "in stoc" scris uneori ca numar, alteori ca text "da/nu").
Inainte: Excelul are pe randul 1 un titlu combinat "Lista piese Aprilie 2026", pe randul 2 gol, iar antetul de coloane abia pe randul 3.
Dupa: stergi randul 1 si randul 2, astfel incat antetul de coloane (cod_furnizor, denumire, furnizor, pret_achizitie, stoc) ajunge chiar pe primul rand al foii. Abia acum lansezi importul.
Gasirea si eliminarea duplicatelor
In Excel ai urmatoarele randuri (cod_furnizor, denumire, pret):
1. F001, Filtru ulei, 35
2. F002, Filtru aer, 28
3. F001, Filtru ulei, 35 (identic cu randul 1)
4. B010, Bujie, 12
5. C005, Curea distributie, 95
6. F002, Filtru aer, 28 (identic cu randul 2)
7. P020, Placute frana, 180
8. A033, Amortizor spate, 220
Selectezi tot intervalul (inclusiv antetul), deschizi tab-ul Data si apesi Remove Duplicates. In fereastra care apare, verifici mai intai casuta My data has headers — trebuie sa fie bifata, altfel Excel trateaza si randul de antet ca pe un rand de date, il numara la "unice", si raspunsul iti iese cu 1 in plus (7, nu 6). Cu ea bifata, lasi bifate toate coloanele (ca sa compare randul intreg) si apesi OK. Excel iti raporteaza: "2 duplicate values found and removed; 6 unique values remain." Raman exact randurile 1, 2, 4, 5, 7, 8 — 8 − 2 = 6 randuri unice.
Remove Duplicates sterge direct, fara sa iti arate ce a sters. Ca sa vezi intai ce va fi marcat drept duplicat, selectezi coloana cod_furnizor, apoi Home > Conditional Formatting > Highlight Cells Rules > Duplicate Values. Excel coloreaza toate valorile care se repeta, ca sa le poti verifica cu ochiul liber inainte sa decizi ce stergi.
Formate gresite frecvente si cum le repari
In Excel, tipul unei valori se tine per celula, nu per coloana: daca in coloana pret_achizitie doar celula A5 e scrisa cu un spatiu la final ("35 "), doar acea celula devine text — restul coloanei ramane numar, iar SUM/AVERAGE in Excel continua sa functioneze corect pe celelalte celule (le ignora doar pe cele text, nu strica tot calculul).
Problema reala apare la importul in Access: expertul de import ghiceste tipul fiecarui camp uitandu-se doar la primele randuri de date din coloana respectiva. Daca celula "murdara" e printre acele primele randuri, Access poate decide ca tot campul nou e Text, si atunci iti importa ca text si valorile care in Excel erau numere curate.
Cum recunosti celula murdara inainte de import: valorile numerice sunt aliniate automat la dreapta celulei; o celula aliniata la stanga, intr-o coloana altfel aliniata la dreapta, e text, nu numar — te uiti celula cu celula, nu la coloana intreaga dintr-o privire. Se repara cu formula =VALUE(TRIM(A2)) intr-o coloana ajutatoare, care intai elimina spatiile (TRIM) si apoi converteste textul curat in numar (VALUE); copiezi formula pe tot intervalul, apoi copiezi rezultatele si le lipesti peste coloana originala cu Paste Special > Values.
Cum se recunoaste: codurile de la furnizor scrise "007", "010", "025" in Excel apar dupa import in Piese_Stoc ca "7", "10", "25" — fara zerourile din fata. Cauza: campul cod_furnizor din tabelul Access a fost creat cu tip de date Number in loc de Short Text, iar pentru un numar, zero-ul din fata nu inseamna nimic (007 = 7 ca valoare — nu e o taiere de cifre, e faptul ca numarul nu are cum sa retina un zero care nu schimba valoarea).
De ce nu se poate intampla pe traseul de Append din aceasta lectie, daca faci totul corect: la Append, tipul fiecarui camp e fix — cel din tabelul destinatie, ales de tine cand ai adaugat campul (vezi Atomul 3), nu ceva ce se mai alege in expert. Expertul de Append nu are un ecran de "Field Options" cu tip de date — acela apare doar cand imporți intr-un tabel NOU. Daca ai creat cod_furnizor de la inceput ca Short Text, zerourile nu se pot pierde niciodata la un Append ulterior.
Cand chiar apare greseala: fie la un import intr-un tabel nou (acolo expertul iti arata la pasul de previzualizare fiecare coloana cu tipul ei de date deasupra — dai clic pe antetul coloanei si alegi Text inainte de Finish), fie cand campul a fost deja adaugat gresit ca Number intr-un tabel existent.
Cum se repara in acest al doilea caz: deschizi tabelul in Design View, schimbi tipul campului cod_furnizor din Number in Short Text, salvezi, apoi corectezi manual codurile care si-au pierdut zeroul (sau stergi randurile gresite si reimporti).
Daca in aceeasi coloana apar si "12.03.2026", si "12-03-2026", si "12/03/2026", scrise de persoane diferite, Excel nu le recunoaste pe toate ca fiind acelasi tip de data, iar sortarea cronologica iese gresit. Se repara selectand coloana si folosind Data > Text to Columns > Next > Next, apoi la pasul 3 alegi formatul coloanei Date: DMY (zi-luna-an) si apesi Finish — Excel converteste tot in acelasi format real de data, pe care Access il va importa corect ca Date/Time.
Recapitulare si conexiuni
1. Pregatesti Excelul (antet curat, cu numele identic cu al campurilor, fara celule combinate, fara randuri goale)
2. Daca Excelul are o coloana noua (ex. cod_furnizor), adaugi campul in tabel in Design View, cu tipul de date corect (Short Text pentru coduri) — se alege acum, nu la import
3. Pui un index unic (Indexed = Yes, No Duplicates) pe cod_furnizor, ca sa respinga la Append randurile care dubleaza o piesa deja existenta
4. Cauti si elimini duplicatele din interiorul Excelului (Remove Duplicates, cu "My data has headers" bifat, verificat vizual cu Conditional Formatting)
5. Repari formatele gresite (TRIM+VALUE pentru numere, Text to Columns pentru date)
6. Importi cu expertul din Access (Append la tabelul Piese_Stoc existent) — randurile cu cod_furnizor deja existent sunt respinse automat si apar in tabelul Paste Errors, restul se adauga
7. Verifici Paste Errors si, daca vrei o verificare suplimentara, rulezi Find Duplicates Query pe Piese_Stoc
8. Pentru completari punctuale ulterioare, folosesti formularul, nu tabelul direct
Acum ca tabelul Piese_Stoc (sau orice alt tabel al atelierului) are date reale si curate, in lectia urmatoare inveti sa pui intrebari bazei — interogari cu criterii, ca sa gasesti rapid "toate piesele sub 50 lei" sau "toti clientii care au venit luna trecuta", fara sa cauti manual printre sute de randuri.
Formular = introducere sigura, o inregistrare o data.
Import Excel = External Data > Excel > Append la tabelul existent — tipul fiecarui camp e cel din tabel, nu se mai alege in expert.
Duplicate impotriva tabelului deja existent = index unic (Indexed = Yes, No Duplicates) pe campul cod, nu Remove Duplicates (acela curata doar Excelul).
Remove Duplicates = Data tab, cu "My data has headers" bifat; verifici intai cu Conditional Formatting.
Coduri cu zero la inceput = camp creat de la bun inceput cu tip Text (Short Text), niciodata Number.
=TRIM() elimina spatiile; =VALUE() converteste text curat in numar.