Într-o bază de date se memorează informaţii despre cărţile existente într-o bibliotecă. Entitatea corespunzătoare este:
a) Construiţi tabela corespunzătoare şi populaţi cu înregistrări relevante pentru cerinţele următoare:
b) Afişaţi într-o singură coloană denumită Biblioteca mea , pentru fiecare carte, informaţii de forma: Cartea cu codul.................... are titlul.........................., este scrisă de...................şi a apărut la data de.............................
c) Afişaţi codul, titlul, preţul şi data apariţiei fiecărei cărţi. Pentru cărţile ce nu au completată data apariţiei, afişaţi mesajul Data apariţiei necunoscută. Afişarea cărţilor se va face în ordine alfabetică după titlu.
d) Afişaţi titlul fiecărei cărţi, apoi în coloana denumită vechime zile vechimea fiecărei cărţi exprimată în număr de zile, în coloana denumită vechime luni vechimea fiecarei cărţi exprimată în număr de luni, în coloana denumită vechime ani vechimea fiecărei cărţi exprimată în număr de ani. Numărul de zile, luni, ani vor fi numere întregi.
Rezolvare
a) Construiţi tabela corespunzătoare şi populaţi cu înregistrări relevante pentru cerinţele următoare:
Structura tabelului CARTE pentru fiecare câmp:
- cod - cheie primară, Data Type: AutoNumber
- titlu - Data Type: Text
proprietăţi modificate
Field Size: 50
Required: Yes
- autor - Data Type: Text
proprietăţi modificate
Field Size: 50
Required: Yes
- pret - Data Type: Number
proprietăţi modificate
Field Size: Single
Decimal Places: 2
Required: Yes
- data_aparitiei - Data Type: Date/Time
proprietăţi modificate
Field Size: Short Date
Required: No - vezi cerinţa c
- observatii - Data Type: Text sau Memo - am ales Text, presupunând că sunt suficiente 255 caractere
proprietăţi modificate
Field Size: 255
Required: No
Se introduc câteva înregistrări în tabel.
b) Afişaţi într-o singură coloană denumită Biblioteca mea , pentru fiecare carte, informaţii de forma: Cartea cu codul.................... are titlul.........................., este scrisă de...................şi a apărut la data de.............................
Ca şi la subiectul 6, se creează o interogare care preia date din tabelul CARTE - Create - Query Wizard - Simple Query Wizard.
Interogarea va prelua informaţii din patru câmpuri ale tabelului: cod, titlu, autor şi data_aparitiei. Informaţiile vor fi afişate într-o singură coloană, iar între informaţiile preluate va fi intercalat şi textul din cerinţă (pentru concatenare text şi informaţii se foloseşte caracterul special " & ").
În singura coloană din interogare se va trece titlul coloanei şi conţinutul acesteia, astfel:
Biblioteca mea: "Cartea cu codul " & [Carte].[cod] & " are titlul " & [Carte].[titlu] & ", este scrisa de " & [Carte].[autor] & " si a aparut la data de " & [Carte].[data_aparitiei] & "."
c) Afişaţi codul, titlul, preţul şi data apariţiei fiecărei cărţi. Pentru cărţile ce nu au completată data apariţiei, afişaţi mesajul Data apariţiei necunoscută. Afişarea cărţilor se va face în ordine alfabetică după titlu.
Se creează o interogare care preia date din tabelul CARTE - Create - Query Wizard - Simple Query Wizard.
În câmpul în care va fi afişată data apariţiei, se va folosi funcţia IIF - dacă data nu este completată, să fie afişat mesajul "Data aparitiei necunoscuta":
Data aparitiei: IIf(IsNull([data_aparitiei]),"Data aparitiei necunoscuta",Format([data_aparitiei],"Short Date"))
Pentru câmpul titlu, se alege ordonare (sortare) crescătoare (Ascending).
d) Afişaţi titlul fiecărei cărţi, apoi în coloana denumită vechime zile vechimea fiecărei cărţi exprimată în număr de zile, în coloana denumită vechime luni vechimea fiecarei cărţi exprimată în număr de luni, în coloana denumită vechime ani vechimea fiecărei cărţi exprimată în număr de ani. Numărul de zile, luni, ani vor fi numere întregi.
Se creează o interogare care preia date din tabelul CARTE - Create - Query Wizard - Simple Query Wizard.
În acest caz se foloseşte funcţia DateDiff, care calculează diferenţa dintre două date - aici va calcula diferenţa dintre valoarea din câmpul data_aparitiei şi data curentă din calculator (funcţia Now()).
Sintaxa funcţiei DateDiff este
DateDiff(interval, dată1, dată2 [, primazidinsăptămână] [,primasăptămânădinan] )
unde argumentul interval poate avea mai multe valori. În acest caz, ne interesează doar argumentele:
-- "d" - pentru a calcula diferenţa în zile
-- "m" - pentru calculul diferenţei în luni
-- "yyyy" - pentru a calcula diferenţa în zile.
În coloanele corespunzătoare vechimei în zile, luni şi ani se scriu:
Vechime zile: DateDiff("d",[Carte]![data_aparitiei],Now())
Vechime luni: DateDiff("m",[Carte]![data_aparitiei],Now())
Vechime ani: DateDiff("yyyy",[Carte]![data_aparitiei],Now())
Am ataşat şi fişierul rezolvat în format .mdb.