MS Access: Câmpurile multi-valoare


Ca în cazul contestatelor câmpuri calculate, vom vedea astăzi o şmecherie ce poate fi foarte utilă dar care nu va fi pe placul celor foarte riguroşi, care vor să respecte standardele tradiţionale ale bazelor de date. Dacă vă întrebaţi care sunt acele standarde atunci foarte probabil că nu vă pasă să le încălcaţi 😉 . Vom vedea deci astăzi cum putem într-un câmp să nu memorăm o singură valoare, ci mai multe. Huh! Ne folosim de deja clasica noastră bază de date unde avem o tabelă Persoane şi una Produse. Ce ar fi să adăugăm un câmp de cumpărături la persoane, cu produsele cumpărate?

imagine

Pentru a adăuga un câmp multi-valoare avem două căi, după cum adăugăm câmpul din Design View sau din Datasheet View. Oricare ar fi modul – vezi captura de mai sus – vom vedea un vrăjitor care în primul pas ne oferă două opţiuni, iar noi vom merge pe prima: I want the lookup field to get the values from another table or query (adică vreau ca acest câmp să îşi ia valorile din altă tabelă – adică la noi din tabela Produse).

imagine

Rămâne să spunem care tabelă (sau interogare). În cazul nostru alegem tabela Produse.

imagine

Am spus tabela, evident vine de indicat câmpul. În cazul nostru Produs (automat, dar nici nu trebuie să vă bateţi capul, va fi luat şi câmpul ID, pentru a putea identifica exact produsul).

imagine

E recomandabil ca în pasul următor să alegem sortarea ascendentă după Produs (ca să regăsim mai uşor produsele).

imagine

Ni se oferă acum o previzualizare a câmpului, cu valorile lui (vedeţi, e şi câmpul cheie, adică ID la noi, dar nu ne interesează; de aceea MS îl şi ascunde).

imagine

Şi am ajuns la ultimul pas: dăm un nume câmpului, în cazul nostru Cumparaturi, şi neapărat (!!!) bifăm câmpul Allow Multiple Values. Apoi click pe Finish şi am terminat.

imagine

Vedem mai jos: în modul Datasheet View, noul câmp admite – doar aşa îi spune numele – valori multiple! Putem să indicăm astfel mai multe produse cumpărate de o anumită persoană.

imagine

Iar simpla editare a câmpurilor multi-valoare se menţine şi în formulare. Vedeţi mai jos un formular construit automat de MS Access pentru tabela Persoane, iar la câmpul Cumparaturi avem acelaşi sistem de editare ca în modul Datasheet View ilustrat mai sus.

imagine

Şi pentru cei care se întreabă cum şi de ce permite MS Access un câmp să aibă mai multe valori, citez de aici: “Probabil că vă întrebați de ce Office Access 2007/2010 vă permite să stocați mai multe valori într-un câmp, în timp ce majoritatea sistemelor de gestionare a bazelor de date asociate interzic acest lucru. Răspunsul este că motorul bazei de date din Office Access 2007/2010 nu stochează de fapt valorile într-un singur câmp. Cu toate că vedeți și lucrați cu un câmp care pare unic, valorile sunt stocate de fapt independent și sunt gestionate în tabele de sistem ascunse. Motorul bazei de date Access manevrează acest lucru pentru dvs, separând automat datele și îmbinându-le din nou, pentru a acoperi valorile într-un singur câmp. Tehnic vorbind, un câmp multi-valoare Access modelează o relație multiformă în ambele sensuri. De exemplu, gândiți-vă la un tabel de evenimente în care atribuiți responsabilitatea fiecărui eveniment unuia sau mai multor angajați. Să presupunem că realizați un câmp multi-valoare denumit ‘AtribuitLui’ pentru a atribui evenimente angajaților. Relația dintre evenimente și angajați este multiformă în ambele sensuri. Mai exact, aveți posibilitatea să atribuiți mai multor angajați un singur eveniment sau să atribuiți unui singur angajat mai multe evenimente.”

Ca o ultimă observaţie: când doriţi ştergerea unui câmp multi-valoare veţi da de un mesaj de eroare. Trebuie să ştergeţi mai întâi relaţia creată între tabele, şi abia apoi veţi putea şterge câmpul. Cum ştergeţi relaţia (ce sunt relaţiile? o să aflăm poate într-un articol)? Mergeţi în tabul Table şi daţi click pe Relationships. Apoi click pe linia dintre tabele (devine mai groasă) şi apăsaţi butonul Delete.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (2 evaluări, media: 5,00 din 5)
Loading...Loading...

0 comentarii


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *