Documente Academic
Documente Profesional
Documente Cultură
Departamentul ID-IFR
Facultatea de Știinţe Economice
Specializarea Economia Comerţului, Turismului şi Serviciilor
Forma de învăţământ ID
Anul de studiu I
Semestrul 2
Valabil începând cu anul universitar 2009-2010
CUPRINS
3 și 4 Uniuni de tabele 29
Obiectivele Unităţii de învăţare Nr. 3 și 4 30
3.1. Tabel liber, tabel asociat 30
3.2. Chei primare, chei de legătură 30
3.3. Tabel primar, tabel relaţionat 30
3.4. Păstrarea integrităţii referenţiale 33
Lucrare de verificare Unitate de învăţare Nr. 3 și 4 34
5 Formulare (Forms) 36
Obiectivele Unităţii de învăţare Nr. 5 37
5.1. Afişarea paginată 37
5.2. Afişarea combinată 41
5.3. Afişarea tabelară 41
5.4. Șabloane 42
Lucrare de verificare Unitate de învăţare Nr. 5 42
BIBLIOGRAFIE 110
Stimate cursant,
încă de la început doresc să îţi urez bun venit în domeniul sistemelor informatice.
Acest curs se adresează atât cursanţilor cu un grad mai mare de familiarizare cu
universul calculatoarelor cât şi cursanţilor începători. Există totuşi anumite
cunoştinţe specifice necesare parcurgerii acestui curs şi anume:
Cunoaşterea modalităţii de organizare şi manipulare a informaţiei în format
electronic (sistem de fişiere, directoare, copierea, mutarea şi
deschiderea fişierelor).
Operaţii de bază utilizând sistemul de operare Microsoft Windows
(pornirea unei sesiuni de lucru, deschiderea unei aplicaţii, comutarea între
mai multe aplicaţii ce rulează simultan, noţiunea de desktop şi noţiunea de
shortcut, închiderea în mod corespunzător a sistemului),
Utilizarea tastaturii PC standard şi a mouse-ului (combinaţii de taste,
utilizarea tastelor speciale, right şi left click pentru mouse)
Bază de date
Cel mai important lucru de ştiut despre bazele de date este faptul că ele
sunt organizate în tabele. Programele de baze de date alcătuiesc, de fapt, un
sistem de gestiune a bazelor de date (sau SGBD). Baza de date este containerul
creat si manipulat prin intermediul SGBD. Din categoria programelor de tip
SGBD pot fi amintite: Microsoft Access, MySQL, Oracle, FoxPro, etc.
Tabel de date
Un tabel dintr-o bază de date are un nume care îl identifică (numele
respectiv este întotdeauna unic). Toate tabelele sunt alcătuite dintr-una sau mai
multe coloane, numite câmpuri (fields). Fiecare coloană a tabelului conţine un
anumit tip de informaţie. Într-un tabel cu informaţii despre clienţi, de exemplu, o
coloană conţine numărul clientului, alta include numele acestuia iar adresa,
oraşul, judeţul şi codul poştal sunt toate stocate în propriile lor coloane. La
fiecare coloană dintr-o bază de date este asociat un tip de date. Un tip de date
defineşte categoria de date pe care le poate conţine coloana. Astfel, în situaţia în
care coloana trebuie să conţină o valoare numerică (numărul articolelor dintr-o
comandă, de exemplu), tipul de date va fi unul numeric. În situaţia în care
coloana conţine date calendaristice, text, note, sume de bani etc., se va folosi tipul
de date corespunzător pentru specificarea acestor informaţii. Tipurile de date
limitează categoriile de date care pot fi stocate într-o anumită coloană (de
exemplu, pentru a preveni introducerea caracterelor alfabetice într-un câmp de
natură numerică). De asemenea, tipurile de date facilitează sortarea corectă a
datelor şi joacă un rol important în optimizarea utilizării suportului de stocare (în
majoritatea cazurilor hard discul). În consecinţă, la crearea tabelelor trebuie
acordată o atenţie specială selectării tipului de date corect.
Datele dintr-un tabel sunt stocate pe rânduri. Un rând (linie) dintr-un tabel
poartă numele de înregistrare (record). Fiecare înregistrare salvată este stocată în
propriul său rând. De exemplu, un tabel care conţine clienţi ar putea stoca pe
fiecare rând informaţiile referitoare la un anumit client. Numărul rândurilor dintr-
un tabel reprezintă numărul înregistrărilor pe care le conţine acesta.
Cheie primară
Fiecare rând dintr-un tabel trebuie să aibă o coloană (sau un set de
coloane) care îl identifică în mod unic - cheie primară (primary key). De
exemplu o cheie primară ar putea fi un cod numeric personal, o adresă de e-mail
sau un alt identificator unic (numele de persoane nu sunt alese, de obicei, drept
chei primare, deoarece duplicarea este cât se poate de posibilă). Cu alte cuvinte,
în cadrul unui tabel, valoarea unei chei primare nu poate fi duplicată pe parcursul
înregistrărilor pentru că este folosită pentru a face referire la un anumit rând. În
absenţa unei chei primare, actualizarea sau ştergerea anumitor rânduri dintr-un
tabel devine extrem de dificilă, deoarece nu există nici o modalitate sigură şi
garantată de a face referire numai la rândurile afectate.
Orice coloană dintr-un tabel poate fi desemnată cheie primară dacă:
Nu există două rânduri cu aceeaşi valoare a cheii primare;
Fiecare rând trebuie să aibă o valoare a cheii primare (coloanele
cheie primară nu pot include valori NULL);
De regulă, cheile primare sunt definite în cadrul unei singure coloane din
tabel. Dar acest lucru nu este obligatoriu, existând posibilitatea ca mai multe
coloane să fie utilizate, împreună, cu titlu de cheie primară. Când se utilizează
coloane multiple, regulile enumerate anterior trebuie să fie respectate astfel încât
să se obţină valori unice (coloanele individuale nu trebuie să conţină valori
unice).
Uniuni de tabele
În afara cheilor primare, cheile de legătură sau cheile externe (foreign
keys), care nu trebuie să fie unice, sunt folosite pentru a stabili relaţii între
tabelele de date. În cadrul bazelor de date se pot reuni mai multe tabele de date
(uniuni de tabele). De exemplu, unui tabel (Produse) i se poate asocia o cheie
primară, produs_id, fiecare articol din tabel fiind plasat în propriul său rând. Ca
informaţii stocate, pentru fiecare produs ar putea fi denumirea produsului, preţul
acestuia, informaţii despre producător (precum nume, adresă, informaţii de
contact). De regulă informaţiile legate de producător nu sunt stocate alături de
informaţiile despre produs, din mai multe motive:
Repetarea informaţiilor pentru fiecare produs este consumatoare de timp
şi de spaţiu de stocare.
Dacă informaţiile despre producător se modifică (de exemplu dacă acesta
îşi schimbă prefixul telefonic sau adresa), este necesară actualizarea
fiecărei apariţii a informaţiilor respective.
Când anumite date se repetă (cu alte cuvinte, informaţiile despre
producător sunt ataşate la fiecare articol), există o mare probabilitate ca
datele respective să nu fie introduse în exact acelaşi mod, de fiecare dată.
Datele inconsecvente sunt extrem de dificil de folosit în cadrul
rapoartelor.
Apariţiile multiple ale aceloraşi informaţii nu sunt niciodată benefice, şi
acesta este un principiu care stă la baza proiectării bazelor de date relaţionale. În
locul unor tabele lungi şi care conţin date care se repetă, se preferă tabele mai
scurte, relaţionale, conţinând informaţii pentru fiecare tip de date. Tabelele sunt
corelate între ele prin intermediul unor valori comune - chei (de aici noţiunile de
„relaţional” şi „baze de date relaţionale”).
În exemplul amintit se pot crea două tabele, unul cu informaţii despre
producător şi altul cu informaţii despre produs. Tabelul Producători conţine toate
informaţii despre producători, câte un rând din tabel pentru fiecare producător,
alături de un identificator unic (cheie) al fiecăruia (producător_id). Tabelul
Produse stochează numai informaţii despre produse şi nu conţine nici un fel de
date caracteristice producătorului, cu excepţia identificatorului acestuia
(producător_id) care permite găsirea detaliilor corespunzătoare în tabelul
Producători. Această cheie defineşte legătura dintre tabelul Producător şi tabelul
Produse, între cele două tabele stabilindu-se o relaţie unu la mai multe (one to
many). Datele organizate în această manieră, în tabele independente, pot fi
stocate eficient şi manipulate cu uşurinţă, ele sunt date relaţionale. Aplicaţia
software (de exemplu Microsoft Access) utilizată pentru a manipula datele se
numeşte, astfel, bază de date relaţională.
SQL
Limbajul SQL (Structured Query Language – limbajul structurat de
interogare) este cel mai frecvent utilizat limbaj, fiind folosit pentru manipularea şi
recuperarea informaţiilor stocate în baze de date relaţionale. Spre deosebire de alte
limbaje (de exemplu Java sau Visual Basic), SQL este alcătuit dintr-un număr
foarte redus de cuvinte. Acest fapt nu este întâmplător pentru că este un limbaj
proiectat pentru a face un singur lucru, dar eficient, constituind o modalitate
simplă şi eficace de a citi şi a scrie date într-o bază de date. Avantajele limbajului
SQL:
SQL nu este un limbaj „de firmă" folosit de anumiţi producători de
programe de baze de date. Aproape toate sistemele importante de
gestiune a bazelor de date recunosc limbajul SQL, deci cunoscând acest
unic limbaj se poate interacţiona cu aproape fiecare bază de date întâlnită.
SQL este uşor de învăţat. Toate instrucţiunile sunt alcătuite din cuvinte
descriptive, nu multe la număr, în limba engleză.
În ciuda aparentei sale simplităţi, SQL este de fapt un limbaj foarte
puternic, iar prin utilizarea inteligentă a elementelor sale se pot efectua
operaţii complexe şi sofisticate cu bazele de date.
Numeroşi producători de SGBD-uri şi-au extins suportul pentru SQL prin
adăugarea de instrucţiuni la limbajul respectiv. Rolul acestor extensii constă din a
furniza funcţionalităţi suplimentare şi modalităţi simplificate pentru efectuarea
anumitor operaţii. Deşi sunt deseori extrem de utile, aceste extensii prezintă
tendinţa de a fi specifice unui anumit SGBD şi sunt rareori acceptate de mai mulţi
producători. Limbajul SQL standard este controlat de comisia de standardizare
ANSI, drept pentru care se numeşte ANSI SQL. Toate sistemele importante de
gestiune a bazelor de date, chiar şi cele care îşi folosesc propriile extensii,
acceptă ANSI SQL. În majoritatea situaţiilor, limbajul SQL prezentat ca anexă la
VBA
În aplicaţiile Microsoft Office (Word, Excel, PowerPoint) este posibilă
automatizarea operaţiilor de rutină folosind limbajul VBA (Visual Basic for
Applications). Acest limbaj este de asemenea utilizabil în Access, permiţând
accesul la datele stocate în tabele. Astfel, resursele Access, SQL şi VBA se pot
folosi împreună.
Simbol Semnificaţie
Atenţie
↓ Exemplu_ Exemplu
Indicaţii, menţiuni
Aplicaţii
Fiecare denumire a coloanei reprezintă un
Nume tabel câmp (Field)
Fiecare linie reprezintă o
înregistrare
(Record)
Baza de date conţine, de obicei, mai multe tabele iar pentru controlul şi
valorificarea datelor din tabele se folosesc şi alte resurse:
Bază de date
Tabele
Table
Formulare Form
Lansarea Access-ului
.......
Apare, astfel, pagina Getting Started with Microsoft Office Access:
O nouă bază de date trebuie să conţină cel puţin un tabel de date, astfel
că trebuie parcurşi următorii paşi:
Start Access.
Apare pagina Getting Started with Microsoft Office Acces.
în Datasheet View :
(tab-ul Home):
Tipuri de date
Proprietăţile câmpurilor
Câmp Proprietate
Field Size Numărul maxim de caractere (până la 255) care pot fi introduse în
(Dimensiune câmp) câmp.
Format Precizează modul în care vor apărea datele din câmp pe ecran.
Input Mask (Mască de
Formatul sau şablonul în care trebuie introduse datele.
intrare)
Etichetă pentru câmp atunci când este folosit într-un formular. Dacă nu
Caption (Legendă) se stabileşte o legendă, programul Access foloseşte ca etichetă numele
câmpului.
Default Value (Valoare
Specifică o valoare introdusă automat de programul Access.
prestabilită)
Validation Rule Specifică o expresie care limitează valorile ce pot fi introduse în acest
(Regulă de validare) câmp.
Validation Text (Text Specifică un mesaj de eroare care este afişat pe ecran atunci când este
de validare) introdusă o valoare interzisă prin regula de validare.
Required (Necesar) Indică dacă este obligatorie introducerea datelor.
Alow Zero Length
(Permite lungime Specifică dacă acest câmp permite şiruri text de lungime zero.
zero)
Indexed (Indexat) Index al valorilor câmpului.
Unicode Compression Economisirea spaţiului de memorie pentru stocare, dacă sunt introduse
(Compresie Unicode) numai texte propriu-zise.
Formatarea câmpurilor
Caseta Format
Formatarea textelor
↓ Exemple_________________________________________________________________________________
Format Dată Afişare
< Constanta constanta
> Constanta CONSTANTA
&"Kg." 75 75Kg.
@@@@-@@@@@@ 0766202134 0766-202134
&\. Dl Dl.
&*! Felicitari Felicitari!!!!!!!
_________________________________________________________________________________Exemple ↑
Formatarea numerelor
↓ Exemple_________________________________________________________________________________
Format Dată Afişare
# 15,87 16
#,00 30,1 30,10
#, 25 25,
#.### 8876 8.876
$#,00 30,1 $30,10
#,00lei 30,1 30,10lei
#% 0,75 75%
_________________________________________________________________________________Exemple ↑
↓ Exemple_________________________________________________________________________________
Format Afişare
General Date 25.05.1970 17:35:19
Long Date 25 mai 1970
Short Date 25.05.1970
Medium Time 05:35
Short Time 17:35
_________________________________________________________________________________Exemple ↑
↓ Exemplu_________________________________________________________________________________
Se afişează tabelul în modul de vizualizare Design;
Clic pe caseta Input Mask:
Caseta Input Mask
Se poate defini o nouă mască de intrare (prin clic pe butonul Edit List):
_________________________________________________________________________________Exemplu ↑
Caseta Default Value
Caseta Required
1. Câmpul CNP (de tip Text) este obligatoriu (Required – Yes) şi are
asociată masca de intrare prestabilită Cod numeric personal.
2. Pentru câmpul Nume se va utiliza formatul de afişare cu litere mari.
3. Salariu este în valori monetare.
4. Câmpul Data nasterii este de tip Date/Time, Short Date.
5. Telefon este un câmp pentru care se va stabili masca de intrare
(0000)000000.
6. Câmpul Judet are valoarea prestabilită Constanta.
7. Adresa este de tip Memo.
Un tabel de date, inclus într-o bază de date poate fi, oricând, modificat
atât în conţinut (vizualizarea Datasheet) cât şi în structură (vizualizarea
Design). Pentru prelucrarea datelor stocate în tabele se apelează la procedee
specifice bazelor de date:
Poziţionări (Search, Find)
Ordonări (Sort)
Filtrări (Filter)
Interogări (Query)
Selectorul de linie Linia de navigare
Navigarea în tabel
Înregistrările din tabel pot fi parcurse utilizând butoanele din linia de
navigare: prima înregistrare, ultima înregistrare, înregistrarea
precedentă, înregistrarea următoare, înregistrarea curentă.
Adăugarea liniei Total
O linie – Total poate fi adăugată în Datasheet, dacă se acţionează butonul
(tab-ul Home, grupul Records). Se pot executa astfel, calcule pe
coloană: suma (Sum), media aritmetică (Average), maximul (Maximum),
minimul (Minimum):
↓ Exemplu_________________________________________________________________________________
Preţul mediu pentru articolele din tabelul anterior (Notebook) se
determină prin Average:
_________________________________________________________________________________Exemplu ↑
Poziţionări (Search)
Pe un număr de înregistrare: se tastează numărul înregistrării (aici
identic cu ID) în linia de navigare.
Pe o valoare din tabel: se tastează valoarea dorită în caseta Search:
De cele mai multe ori datele trebuie prelucrate într-o ordine diferită de
cea în care au fost introduse în tabelul de date. Procedeul de ordonare a
tabelelor de date (selecţia pe verticală), după diferite criterii se numeşte
sortare (Sort). Sortarea poate fi ascendentă sau descendentă.
Sortare (Sort)
Pentru câmpurile textuale ordinea ascendentă înseamnă afişarea
înregistrărilor în ordine alfabetică, pentru câmpurile de tip dată calendaristică
de la cele mai recente la cele mai vechi, pentru câmpurile numerice de la cele
mai mici la cele mai mari. În ordine descendentă, ordinea este inversată. De
asemenea, este posibilă sortarea înregistrărilor în funcţie de mai multe
câmpuri: această operaţie este numită sortare secundară (pentru valori egale
pe primul câmp, au efect valorile din cel de-al doilea câmp ş.a.m.d.).
↓ Exemplu_________________________________________________________________________________
O sortare descendentă pe câmpul Pret:
Filtrare (Filter)
Iniţierea unei filtrări determină apariţia, funcţie de tipul datelor din
câmpul activ – textual sau numeric, unui meniu vertical, din care pot fi
selectate mai multe opţiuni:
↓ Exemplu _________________________________________________________________________________
O filtrare pe câmpul Pret, pe opţiunea Between…:
_________________________________________________________________________________Exemplu ↑
realizată de butoanele și .
Fiecare tabel Acces poate exista în una din următoarele două stări: ca
tabel liber, neasociat cu alte tabele de date, sau ca tabel asociat, aflat în relaţii
cu alte tabele ale bazei de date. Tabelele asociate au unele proprietăţi
specifice, cum ar fi regulile la nivel de câmp şi de înregistrare şi relaţiile
permanente.
Un câmp comun, este un câmp care există în două sau mai multe tabele,
permiţând realizarea unei corespondenţe între înregistrările dintr-un tabel şi
înregistrările din alte tabele.
Un tabel asociat poate să conţină una sau mai multe chei primare. O
cheie primară (Primary Key) este un câmp folosit pentru a identifica unic
înregistrările tabelului de date. Cu alte cuvinte, în cadrul unui tabel, valoarea
unei chei primare nu poate fi duplicată pe parcursul înregistrărilor. De exemplu
o cheie primară ar putea fi un cod numeric personal, o adresă de e-mail sau un
alt identificator unic (numele de persoane nu sunt alese, de obicei, drept chei
primare, deoarece duplicarea este cât se poate de posibilă).
Definirea unei uniuni de tabele are ca scop afişarea unui tabel virtual şi
este necesar ca:
să fie iniţiată o interogare (cu butonul Query Design din tab-ul
Create;
să fie incluse în interogare tabelele reale ale bazei de date;
↓ Exemplu_________________________________________________________________________________
Se creează o bază de date cu numele Furnizor care include trei tabele
de date:
Tabelul Clienti – Primary Table (Codc, cheie primară,
format cu majuscule, Text, Field Size: 4):
_________________________________________________________________________________Exemplu ↑
↓ Exemplu_________________________________________________________________________________
În tab-ul Database Tools clic pe butonul Relationships.
Se includ toate cele trei tabele şi se stabilesc relaţiile dintre ele (se
trage, cu mouse-ul, cheia Codc din tabelul Clienti peste Codc din
Comenzi şi Codp din Produse peste Codp din Comenzi):
Crearea unui formular este iniţiată din tab-ul Create, grupul Forms:
↓ Exemplu_________________________________________________________________________________
↓ Exemplu_________________________________________________________________________________
se introduce pe formular un Text Box (control neasociat) – banda
Detail a fost dimensionată pe verticală cu mouse-ul:
_________________________________________________________________________________Exemplu ↑
↓ Exemple_________________________________________________________________________________
Afişarea combinată
Afişarea tabelară
Şabloane
clic pe săgeata din partea dreaptă a butonului ;
în Form Wizard se selectează câmpurile;
________________________________________________________________________________
Sisteme informaţionale și aplicaţii informaţionale în administrarea afacerilor 45
Listarea si exportarea datelor
Rapoarte (Reports)
Cea mai simplă modalitate de a lista un tabel de date este cea clasică:
clic pe butonul Office şi Print:
Butonul Office
↓ Exemplu_________________________________________________________________________________
Un tabel (aici Notebook) va apare listat sub forma următoare (a se
observa că apare numele tabelului şi data listării):
_________________________________________________________________________________Exemplu ↑
Secţiune Descriere
Report Header (Antet Textul care apare în partea de sus a primei pagini a unui raport,
de raport) cum ar fi un titlu, o siglă de firmă sau o introducere.
Page Header Textul care apare în partea de sus a fiecărei pagini a unui raport,
(Antet de pagină) cum ar fi numerele de pagină sau data raportului.
Group Header Textul care apare înainte de fiecare grup de înregistrări, cum ar fi
(Antet de grup) un nume de furnizor.
Detail Conţine partea principală a raportului, câmpurile care afişează
(Secţiune de detalii) valori.
Group Footer Textul care apare la sfârşitul unui grup de înregistrări, cum ar fi
(Subsol de grup) totalurile.
Page Footer Textul care apare în partea de jos a fiecărei pagini a unui raport,
(Subsol de pagină) cum ar fi numerele de pagină sau explicaţiile simbolurilor.
Report Footer Textul care apare la sfârşitul raportului, cum ar fi totalurile
(Subsol de raport) raportului sau alte informaţii rezumative.
↓ Exemplu_________________________________________________________________________________
Secţiunile raportului Notebook:
Au fost introduse în raport (de către editorul Access) două tipuri de controale:
1. Controale legate de datele din tabel:
eticheta (Label) Notebook din banda Report Header – denumirea
raportului;
etichetele ID, Denumire, Pret, Cantitate (din Page Header) cu
ajutorul cărora se constituie capul de tabel;
casetele de text (Text Box-uri) ID, Denumire, Pret, Cantitate care
preiau valori din tabel (în Detail).
2. Controale suplimentare, nelegate direct de datele stocate în tabel:
desen, imagine (Logo) – primul control din Report Header;
casete de text pentru afişarea datei şi orei curente (conţinut: =Date(),
=Time()) - în Report Header;
un Text Box, pentru afişarea numărului de pagină (conţinut: ="Page " &
[Page] & " of " & [Pages]) – în Page Footer);
un Text Box pentru afişarea numărului de linii din tabel, în Report
Footer.
_________________________________________________________________________________Exemplu ↑
↓ Exemplu_________________________________________________________________________________
_________________________________________________________________________________Exemplu ↑
Casetă de text
Imagine
Etichetă Linie
↓ Exemplu_________________________________________________________________________________
Pe raportul anterior se pot modifica caracteristicile controalelor existente
sau se pot crea controale proprii:
pentru eticheta asociată denumirii raportului se schimbă:
textul afişat - proprietatea Caption: Calculatoare Laptop
proprietatea Fore Color: Red (roşu)
în Page Header se mai introduc două etichete: Valoare şi TVA
(textul aliniat la dreapta – proprietatea Text Align: Right)
în banda Detail se creează două Text Box-uri, pentru calculul valorii
produsului şi a TVA-ului (proprietatea Format a acestora se fixează la
valoarea Currency, ca de altfel şi pentru caseta de text Pret, deja
existentă):
=Pret*Cantitate
=Pret*Cantitate*0,19
!
în sintaxă Access va apare : =[Pret]*[Cantitate] respectiv
=[Pret]*[Cantitate]*0,19 – denumirile de câmpuri sunt puse
între paranteze pătrate
se şterge, din Report Footer, Text Box-ul în care se afişează
numărul de linii ale tabelului (=Count(*))
în Report Footer se fac totalurile pe Valoare şi TVA, cu ajutorul a
două casete de text (Format : Currency):
=Sum(Pret*Cantitate)
=Sum(Pret*Cantitate*0,19)
!
în sintaxă Access va apare : =Sum([Pret]*[Cantitate])
respectiv =Sum([Pret]*[Cantitate]*0,19)
se trasează o linie la începutul ultimei benzi (Report Footer)
_________________________________________________________________________________Exemplu ↑
Exportarea datelor
Exportare în Excel
↓ Exemple_________________________________________________________________________________
Exportarea tabelului Notebook în Word.
Access
Word
Word
Excel
_________________________________________________________________________________Exemple ↑
textul etichetei Mfix se schimbă în Situaţia mijloacelor fixe
eticheta Diferenta (din Page Header) este aliniată la dreapta (Text Align:
Right)
caseta de text (din Detail) pentru calculul diferenţei are conţinutul
=Valamor-Valinv (Format: Currency)
calculul totalurilor este realizat în banda Report Footer, pe trei Text
Box-uri:
=Sum(Valinv)
=Sum(Valamor)
=Sum(Valamor-Valinv)
3. Să se exporte tabelul în Word (aici se vor calcula şi sumele valorilor de
inventar şi de amortizare):
se salvează fişierul Word
în Word se adaugă o linie la sfârşitul tabelului
se introduc relaţiile de calcul (=Sum(B2:B6) şi =Sum(C2:C6)) după
acţionarea butonului , din tab-ul Layout
Se închide fereastra Show Table care apare, iar din tab-ul Design se
selecţionează butonul SQL View. Textul instrucţiunii se editează în
vizualizarea SQL pe locul cuvântului Select (instrucţiunea cea mai
des utilizată în SQL):
Este recomandabil a se utiliza butonul drept al mouse-ului
pentru afişarea unor meniuri contextuale, relativ la obiectele
vizate (Table sau Query). În partea stângă a ecranului
(Navigation Pane) se poate vedea lista cu numele obiectelor, ele
putând fi afişate (View). Tabelele pot fi prezentate în
vizualizările Design View sau Datasheet View. Pentru scripturile
Tipuri de date
Cele mai comune tipuri de date folosite sunt cele din categoria şir.
Acestea stochează şiruri, ca de exemplu nume, adrese, numere de telefon şi
coduri poştale. În esenţă, există două categorii de tipuri de date care se pot
utiliza: şiruri de lungime fixă şi şiruri de lungime variabilă.
Şirurile de lungime fixă sunt tipuri de date care se definesc astfel încât să
accepte un număr fixat de caractere, număr care este specificat la crearea
tabelului. Şirurile de lungime variabilă stochează text (e de luat în considerare
lungimea maximă, de obicei 255). Sortarea şi manipularea coloanelor de
lungime fixă, se realizează mai rapid decât în cazul coloanelor de lungime
variabilă.
Indiferent de forma tipului de date şir folosit, valorile de tip şir
trebuie să fie întotdeauna delimitate între apostroafe.
S-ar putea crede că numerele de telefon şi codurile poştale
Spre deosebire de şiruri, valorile numerice nu trebuie niciodată
introduse între apostroafe.
Majoritatea programelor de tip SGBD acceptă un tip de date
numeric special, pentru stocarea valorilor monetare. Denumite
de obicei MONEY sau CURRENCY, aceste tipuri de date constituie,
în esenţă, tipuri DECIMAL, cu intervale bine determinate, care le
recomandă pentru stocarea valorilor de tip monetar.
Valorile de tip dată trebuie să fie întotdeauna delimitate între
două caractere # (exemplu: #13/01/1990#)
Tipurile de date binare sunt printre cele mai puţin compatibile, între
diverse implementări SQL (şi, din fericire, printre cele mai puţin folosite)
categorii de date. Spre deosebire de toate tipurile de date explicate anterior,
care au utilizări foarte bine determinate, tipurile de date binare pot conţine
orice fel de date, chiar şi informaţii binare, precum imagini grafice, multimedia
şi documente create cu programe de prelucrare a textelor.
Formatarea instrucţiunilor
Sintaxa:
CREATE TABLE nume
(
coloana tip [(lungime)] [NULL│NOT NULL] [PRIMARY KEY],
coloana tip [(lungime)] [NULL│NOT NULL],[PRIMARY KEY],
…
)
Cheile primare sunt coloane ale căror valori identifică în mod unic fiecare
rând dintr-un tabel. Numai coloanele care nu acceptă valori NULL pot fi
utilizate drept chei primare. Coloanele care permit utilizarea non-valorilor nu
pot fi utilizate ca identificatori unici.
↓ Exemplu__________________________________________________________________________
Crearea unui tabel cu numele Personal:
CREATE TABLE Personal
(
Nume TEXT,
Marca CHAR(4) NOT NULL PRIMARY KEY,
Functia TEXT,
Salariu MONEY,
Datanast DATETIME,
Sex BIT
)
_________________________________________________________________________________Exemplu ↑
Sintaxa:
CREATE INDEX index
ON nume (coloana)
index Identificatorul indexului care va fi creat.
nume Numele tabelului
coloana Coloana indexată.
↓ Exemplu_________________________________________________________________________________
Crearea, în tabelul Personal, unui index având identificatorul n:
CREATE INDEX n
ON Personal(Nume)
_________________________________________________________________________________Exemplu ↑
Cea mai simplă modalitate de a insera date într-un tabel constă din
utilizarea sintaxei elementare a instrucţiunii INSERT, care impune specificarea
numelui tabelului şi a valorilor care urmează a fi inserate în noul rând. Datele
care urmează a fi stocate în fiecare coloană a tabelului sunt specificate în
clauza VALUES, iar pentru fiecare coloană trebuie specificată o valoare. Dacă
într-o coloană nu se specifică nici o valoare se va considera valoarea NULL
(presupunând că tabelul permite inexistenţa unei valori în coloana respectivă).
Coloanele trebuie populate în ordinea în care apar în definiţia tabelului.
Sintaxa:
INSERT INTO nume
(coloana,…)
VALUES
(valoare, …)
nume Numele tabelului în care se face inserarea.
coloana Numele coloanei.
valoare Valoarea introdusă în coloană.
↓ Exemplu__________________________________________________________________________
Inserarea unui rând în tabelul Personal:
INSERT INTO Personal
(Nume, Marca, Functia, Salariu, Datanast, Sex)
VALUES
('Vasiliu Alina', '202', 'Secretara', 1200,
#13/01/1980#, NO)
________________________________________________________________________________Exemplu ↑
Sintaxa:
ALTER TABLE nume
(coloana,…)
ADD│ALTER COLUMN coloana tip│DROP COLUMN coloana
nume Numele tabelului actualizat.
coloana Numele coloanei.
tip Tipul datei din coloană.
ADD COLUMN Adaugă coloană.
ALTER COLUMN Modifica tipul datei din coloană.
DROP COLUMN Şterge coloana.
↓ Exemple_________________________________________________________________________________
- Adăugarea câmpului Telefon:
ALTER TABLE Personal
ADD COLUMN Telefon Text
Sintaxa:
UPDATE nume
SET valoare
WHERE condiţie
nume Numele tabelului actualizat.
SET Fixarea noii valori.
valoare Noua valoare.
WHERE Selectare.
condiţie Expresia booleană după care se face selectarea.
↓ Exemplu__________________________________________________________________________
O mărire de salariu cu 10% :
UPDATE Personal
SET Salariu = Salariu*1.1
WHERE Marca='202'
_________________________________________________________________________________Exemplu ↑
Instrucţiunea SQL cel mai frecvent folosită este SELECT. Pentru afişarea
conţinutului unui tabel de date această instrucţiune are următoarea sintaxă:
SELECT [coloana, …]│[*]
FROM nume
[WHERE condiţie]
↓ Exemple___________________________________________________________________________
- Afişarea întregului tabel:
SELECT * FROM Personal
- Selecţie pe orizontală:
SELECT * FROM Personal
WHERE Marca='202'
_________________________________________________________________________________Exemple ↑
Copierea tabelelor
Pentru a copia conţinutul unui tabel într-un alt tabel nou (creat
instantaneu), se poate folosi instrucţiunea SELECT INTO.
Sintaxa:
SELECT INTO *
INTO numenou
FROM nume
numenou Numele unui tabel nou.
nume Numele tabelului de copiat.
↓ Exemplu___________________________________________________________________________
Copia tabelului Personal în tabelul PersonalCopie:
SELECT *
INTO PersonalCopie
FROM Personal
_________________________________________________________________________________Exemplu ↑
Ştergerea rândurilor
Sintaxa:
DELETE FROM nume
[WHERE condiţie]
nume Numele tabelului.
WHERE Selectare (pe orizontală).
condiţie Expresia booleană după care se face selectarea.
↓ Exemplu___________________________________________________________________________
- Ştergere după condiţie:
DELETE FROM Personal
WHERE Marca='202'
- Ştergerea tuturor înregistrărilor:
DELETE FROM Personal
_________________________________________________________________________________Exemplu ↑
Ştergerea tabelelor
↓ Exemplu___________________________________________________________________________
DROP TABLE Personal
Această instrucţiune şterge tabelul Personal. (S-a creat anterior copia
acestui tabel). Nu se solicită nici o confirmare şi nici nu există posibilitatea de
anulare. Executarea acestei instrucţiuni are ca efect eliminarea definitivă a
tabelului.
_________________________________________________________________________________Exemplu ↑
Recomandări:
Nu este indicat a se utiliza o instrucţiune DELETE în absenţa unei
clauze WHERE decât dacă se doreşte într-adevăr ştergerea fiecărui
rând.
Este recomandabil ca fiecare tabel să aibă o cheie primară care să
fie folosită în clauza WHERE ori de câte ori este posibil.
Înainte de a putea folosi o clauză WHERE în cadrul unei instrucţiuni
UPDATE sau DELETE, este indicat un test cu o instrucţiune SELECT,
pentru verificarea unei filtrări corecte.
SQL nu are buton de anulare. Atenţie deci la UPDATE şi DELETE,
pentru a nu face greşeli regretabile.
.
SELECT
expresia AS câmp calculat [,]
[expresia AS câmp calculat ,]
…
FROM nume
[WHERE condiţie]
Funcţii agregat
AVG() Returnează media valorilor dintr‐o coloană
COUNT() Returnează numărul rândurilor dintr‐o coloană
MAX() Returnează valoarea maximă dintr‐o coloană
MIN() Returnează valoarea minimă dintr‐o coloană
SUM() Returnează suma valorilor incluse într‐o coloană
↓ Exemple___________________________________________________________________________
Se consideră următorul tabel:
- Impozitul pe salariu:
SELECT Nume, Salariu*0.16 AS Impozit
FROM Personal
_________________________________________________________________________________Exemple ↑
Funcţia FORMAT
Se utilizează, în special, pentru a specifica modul de afişare a numerelor:
FORMAT ( <expresie>, <strFormat>)
<expresie> poate fi o variabilă, o constantă sau o expresie formată din
acestea.
<strFormat> formatul de afişare definit sub forma unui şir de caractere.
Fiecare caracter # indică o cifră, iar 0 precizează dacă apar în completare
zerouri, la început sau la sfârşit.
↓ Exemplu_________________________________________________________________________________
SELECT FORMAT(10000,"###,### lei") AS Expr1
_________________________________________________________________________________Exemplu ↑
Funcţii matematice
Funcţiile matematice şi trigonometrice au ca argumente şi ca rezultate
valori numerice.
INT() Numărul întreg mai mic sau egal
FIX() Partea întreagă
ABS() Valoarea absolută
SGN() Semnul unei expresii
RND() Numere aleatoare subunitare
EXP() e la puterea x
LOG() Logaritmul natural (baza e)
SQR() Radical indice 2
ATN() Arctangentă
SIN() Sinus
COS() Cosinus
TAN() Tangentă
↓ Exemplu_________________________________________________________________________________
SELECT FORMAT(SQR(9)) AS Expr1
_________________________________________________________________________________Exemplu ↑
Funcţii financiare
Funcţiile financiare efectuează calcule obişnuite pentru afaceri, ca de
exemplu determinarea plăţii pentru un împrumut, valoarea viitoare sau
valoarea netă actualizată a unei investiţii şi valorile obligaţiunilor sau
cupoanelor.
Argumentele comune pentru funcţiile financiare includ:
Valoarea viitoare (fv) – valoarea investiţiei sau împrumutului după ce s‐au efectuat toate plăţile.
Numărul de perioade (nper) – numărul total de plăţi sau perioade ale unei investiţii.
Valoarea actualizată (pv) – valoarea unei investiţii sau a unui împrumut la începutul perioadei
de investiţie. De exemplu, valoarea actualizată a unui împrumut este capitalul de bază care este
împrumutat.
Rata (rate) – rata dobânzii sau rata de actualizare pentru un împrumut sau o investiţie.
Tip (type) – intervalul la care sunt efectuate plăţile în timpul perioadei de plată, ca de exemplu
la începutul unei luni sau la sfârşitul acesteia ( 0 sau 1, implicit 0).
Cele mai importante funcţii financiare sunt incluse în tabelul următor:
FV(rate, nper, pmt, pv, type) Calculează valoarea viitoare a unei investiţii bazate pe plăţi
periodice şi constante şi o rată a dobânzii constantă.
PV(rate, nper, pmt, fv, type) Întoarce valoarea actualizată a unei investiţii. Valoarea
actualizată este suma totală pe care o reprezintă în prezent o
serie de plăţi viitoare. De exemplu, pentru împrumut, suma
împrumutată este valoarea actualizată pentru creditor.
NPER(rate, pmt, pv, fv, type) Furnizează numărul de perioade pentru o investiţie bazată pe
plăţi periodice constante şi o rată constantă a dobânzii.
PMT(rate, nper, pv, fv, type) Calculează plata pentru un împrumut bazat pe plăţi constante
şi o rată constantă a dobânzii.
IPMT(rate, per, nper, pv, fv, type) Determină plata dobânzii pe o perioadă dată, pentru o
investiţie bazată pe plăţi periodice constante şi o rată
constantă a dobânzii.
Argumentele marcate bold sunt obligatorii, celelalte sunt opţionale.
↓ Exemple_________________________________________________________________________________
a) Pentru 13 depuneri lunare, a 100 unităţi monetare, cu dobândă
anuală 10%, soldul atins se poate calcula astfel:
SELECT FV(10 / 100 / 12, 13, -100) AS Expr1
_________________________________________________________________________________Exemple ↑
↓ Exemplu__________________________________________________________________________
Toate numele din tabelul Personal se vor scrie cu majuscule:
UPDATE Personal
SET Nume = UCASE(Nume)
_________________________________________________________________________________Exemplu ↑
↓ Exemplu__________________________________________________________________________
Persoanele din tabelul Personal cu vârsta > 40 ani:
SELECT * FROM Personal
WHERE YEAR(NOW())-YEAR(Datanast)>40
_________________________________________________________________________________Exemplu ↑
Concatenarea câmpurilor
În cadrul instrucţiunii SQL Select se pot concatena valori din mai multe
coloane de tip textual, folosind operatorul de concatenare (+).
↓ Exemplu_________________________________________________________________________________
SELECT Nume + ' (' + Functia + ')' AS NumeFunctie
FROM Personal
_________________________________________________________________________________Exemplu ↑
Sortarea
↓ Exemple___________________________________________________________________________
- Ordonarea tabelului Personal după funcţii şi salarii:
SELECT Nume, Functia, Salariu FROM Personal
ORDER BY Functia DESC, salariu ASC
Filtrarea
De obicei, tabelele dintr-o bază de date conţin mari cantităţi de date şi, de
multe ori, nu e nevoie de a regăsi toate rândurile unui tabel. Va fi necesară
extragerea unui sub-set al datelor din tabel, conform necesităţilor. Regăsirea
doar a unor date implică specificarea unor criterii de căutare, cunoscute si sub
numele de condiţie de căutare. În cadrul unei instrucţiuni SELECT, datele sunt
filtrate prin specificarea criteriilor de căutare în clauza WHERE. Clauza WHERE
este specificată imediat după numele tabelului (clauza FROM), aşa cum se vedea
în exemplul următor:
↓ Exemplu__________________________________________________________________________
SELECT Nume, Salariu FROM Personal
WHERE Salariu > 3600
_________________________________________________________________________________Exemplu ↑
SQL acceptă mai mulţi operatori relaţionali care produc rezultate de tip
logic (boolean). Expresiile logice pot fi legate prin operatori logici.
↓ Exemple___________________________________________________________________________
- Lista persoanelor care nu au funcţia 'Secretara':
SELECT Nume, Functia, salariu FROM Personal
WHERE NOT Functia ='Secretara'
Caractere de înlocuire
↓ Exemplu__________________________________________________________________________
Pentru a găsi toate persoanele care încep cu litera P:
SELECT * FROM Personal
WHERE Nume LIKE 'P*'
_________________________________________________________________________________Exemplu ↑
_________________________________________________________________________________Exemplu ↑
Caracterul de înlocuire paranteze pătrate [] este folosit la specificarea
unui set de caractere, dintre care unul trebuie să corespundă unui caracter din
poziţia specificată (amplasamentul caracterului de înlocuire).
↓ Exemplu_________________________________________________________________________________
Lista persoanelor ale căror nume încep cu litera P sau T:
SELECT * FROM Personal
WHERE Nume LIKE '[PT]*'
_________________________________________________________________________________Exemplu ↑
↓ Exemplu_________________________________________________________________________________
Lista persoanelor ale căror nume nu încep cu litera P sau T:
SELECT * FROM Personal
WHERE Nume LIKE '[!PT]*'
_________________________________________________________________________________Exemplu ↑
Gruparea datelor
↓ Exemplu__________________________________________________________________________
Următoarea instrucţiune grupează şi sortează datele pe coloanele
Functia şi Nume:
SELECT Nume, Functia
FROM Personal
GROUP BY Functia, Nume
_________________________________________________________________________________Exemplu ↑
Grupare şi sortare
ORDER BY GROUP BY
Sortează date de ieşire generate Grupează rânduri. Este posibil ca datele de ieşire să
nu se găsească într‐o ordine de grup.
Se pot folosi toate coloanele (chiar şi cele Se pot utiliza numai coloanele selectate sau
care nu au fost selectate). coloanele cu expresii, după cum trebuie utilizată
fiecare expresie de coloană selectată.
Nu este niciodată obligatorie Obligatorie dacă se folosesc coloane (sau expresii)
cu funcţii agregat.
↓ Exemplu__________________________________________________________________________
Deşi GROUP BY determină o sortare după Salariu, ORDER BY impune o
sortare după Nume:
SELECT Nume, Functia, Salariu
FROM Personal
GROUP BY Salariu, Nume, Functia
ORDER BY Nume
_________________________________________________________________________________Exemplu ↑
Grupare şi filtrare
↓ Exemplu__________________________________________________________________________
Grupare pe Salariu, Nume, Functia cu filtrare pe Salariu:
SELECT Nume, Functia, Salariu
FROM Personal
GROUP BY Salariu, Nume, Functia
HAVING Salariu > 3500
_________________________________________________________________________________Exemplu ↑
Se poate utiliza, atunci când este nevoie, atât clauza HAVING cât şi clauza
WHERE (care este prioritară).
↓ Exemplu_________________________________________________________________________________
SELECT Nume, Functia, Salariu
FROM Personal
WHERE Functia <> 'Director general'
GROUP BY Salariu, Nume, Functia
HAVING Salariu > 3500
_________________________________________________________________________________Exemplu ↑
simbolul .
Uniuni interioare
↓ Exemplu__________________________________________________________________________
Pentru evidenţa produselor distribuite de un furnizor spre clienţi se
consideră următoarele tabele:
↓ Exemplu__________________________________________________________________________
Următoarea instrucţiune SELECT regăseşte exact aceleaşi date ca şi în
exemplul anterior:
SELECT Denumire, Pret, Client
FROM Clienti INNER JOIN Produse
ON Clienti.Codp = Produse.Codp
În absenţa lui WHERE sau INNER JOIN fiecare rând din primul tabel va fi
unit cu fiecare rând din al doilea tabel, indiferent dacă între ele există sau nu o
relaţie logică obţinându-se o uniune încrucişată (produs cartezian). Produsul
cartezian corespunde rareori necesităţilor de consultare a tabelelor şi în
consecinţă este rareori utilizat.
↓ Exemplu_________________________________________________________________________________
Produs cartezian:
SELECT Denumire, Pret, Client
FROM Produse, Clienti
_________________________________________________________________________________Exemplu ↑
De cele mai multe ori, folosirea a doar două tabele relaţionate este
insuficientă pentru o manipulare mai facilă a datelor stocate în acestea. Din
exemplele prezentate se poate constata firesc că, pentru livrarea mai multor
produse aceluiaşi client, acesta va apare de mai multe ori în tabelul Clienti.
SQL nu impune o limită în ceea ce priveşte numărul tabelelor care vor fi unite
în cadrul instrucţiunii SELECT astfel încât un al treilea tabel (Comenzi) ar putea
rezolva gestiona livrările efectuate în date calendaristice diferite.
↓ Exemplu__________________________________________________________________________
Uniuni exterioare
↓ Exemplu_________________________________________________________________________________
Lista tuturor produselor, inclusiv a celor necomandate:
SELECT Denumire, Pret, Comenzi.Codc
FROM Produse LEFT OUTER JOIN Comenzi
ON Produse.Codp = Comenzi.Codp
_________________________________________________________________________________Exemplu ↑
simbolul .
Formulare personalizate
Din grupul Forms se alege butonul Form Design iar în formular se pot
introduce controale (din tab-ul Design, grupul Controls):
Casetă de text Buton
Etichetă Listă
Casete de tip listă (ListBox, ComboBox), listă de una sau mai multe
elemente. Dacă numărul total al elementelor excede numărul celor care
pot fi afişate, un scroll bar este automat adăugat la acel control. Aceste
casete pot fi populate cu date din tabele.
Controalele incluse în formulare au proprietăţi care sunt fixate din
fereastra Property Sheet (butonul corespunzător este inclus în tab-
ul Design).
Formularele, editate în vizualizarea Design, se
rulează în Form View:
↓ Exemplu_________________________________________________________________________________
Se poate defini un formular personalizat pentru efectuarea unor calcule
financiare folosind limbajul de programare VBA.
Pe formular se introduc trei controale de tip TextBox, trei controale de
tip Button şi o etichetă (Label):
TextBox a1
TextBox a2
TextBox a3
Label r
Button FV
Button PV
Button PMT
_________________________________________________________________________________Exemplu ↑
Pentru exemplificările care se vor face în continuare se va folosi tabelul
Personal din baza de date BazaMea, creat în Access. Baza de date, este
plasată în directorul implicit al documentelor Microsoft Office (Documents sau
My Documents - "C:…\Documents\BazaMea.accdb"). Extensia accdb este
specifică mediului de editare Access 2007:
↓ Exemplu__________________________________________________________________________
Având deschisă baza de date BazaMea (care conţine
tabelul de date Personal) se introduce pe un formular un
buton utilizator. Proprietăţile Name şi Caption ale butonului,
se fixează la valoarea Start. Prin clic dreapta pe buton
(Build Event..., Choose Builder, Code Builder) se asociază
butonului următoarea secvenţă de instrucţiuni Basic (folosind
editorul VBA):
_________________________________________________________________________________Exemplu ↑
Seturi de înregistrări
↓ Exemple_________________________________________________________________________
Setul de înregistrări este populat cu date dintr-un tabel, butonului din
formularul anterior asociindu-se următoarele instrucţiuni:
Private Sub Start_Click()
' Bazei de date curente
' i se asociază identificatorul Baza:
Set Baza = CurrentDb
' Se precizează tabelul din baza de date şi
' i se asociază identificatorul Tabel:
Set Tabel = Baza.OpenRecordset("Personal")
' Valoarea stocată pe coloana "Nume":
PrimulNume = Tabel("Nume")
MsgBox PrimulNume
End Sub
_________________________________________________________________________________Exemple ↑
Instrucţiune Mută cursorul
Recordset.MoveFirst la prima înregistrare
Recordset.MoveLast la ultima înregistrare
Recordset.MoveNext la următoarea înregistrare
Recordset.MovePrevious la înregistrarea anterioară
Recordset.Move n cu n înregistrări (n, număr pozitiv sau negativ)
↓ Exemple__________________________________________________________________________
Scanarea tabelului Personal pentru determinarea salariului mediu:
TextBox Marca
TextBox Nume
TextBox Sex
TextBox Functia
TextBox Salariu
TextBox Datanast
Button Primul
Button Inainte
Button Inapoi
Button Ultimul
Tabel.MoveFirst
End If
Afiseaza
End Sub
Private Sub Primul_Click()
Tabel.MoveFirst
Afiseaza
End Sub
Private Sub Ultimul_Click()
Tabel.MoveLast
Afiseaza
End Sub
Sub Afiseaza()
'TextBox-urile se populează cu valori din tabel
Nume = Tabel("Nume")
Marca = Tabel("Marca")
Functia = Tabel("Functia")
Salariu = Tabel("Salariu")
Datanast = Tabel("Datanast")
Sex = Tabel("Sex")
End Sub
Rularea
formularului:
_________________________________________________________________________________Exemple ↑
↓ Exemplu__________________________________________________________________________
Se introduce pe formular un TextBox, cu numele Cauta. Evenimentul
LostFocus, tratat la completarea TextBox–ului, determină plasarea pe
înregistrarea corespunzătoare din tabel (nu se produce deplasarea cursorului
_________________________________________________________________________________Exemplu ↑
↓ Exemplu_________________________________________________________________________________
La formularul anterior, pentru a actualiza valorile preluate în casetele de
text, acestora li se pot asocia metode LostFocus (exemplul pentru Nume este
valabil şi pentru Marca, Functia, Salariu, Datanast, Sex):
Private Sub Nume_LostFocus()
Tabel.Edit
Tabel("Nume") = Nume
Tabel.Update
End Sub
_________________________________________________________________________________Exemplu ↑
↓ Exemplu_________________________________________________________________________________
Unui buton, inclus în formular, i se pot asocia două variante de secvenţe
de cod, cu acelaşi rezultat:
'
Tabel.AddNew
'Se introduc valori:
'De exemplu : Tabel("Marca") = "215"
Tabel.Update
'
↓ Exemplu_________________________________________________________________________________
Se editează următorul formular:
ListBox Client
ListtBox Produs
TextBox data
TextBox cantitate
Button Inregistreaza
Button Stop
'Verificare de stoc
Set Tabel = CurrentDb.OpenRecordset("Produse")
Tabel.Index = "PrimaryKey"
Tabel.Seek "=", P
If Tabel("Stoc") < Val(cantitate) Then
MsgBox "Stoc Insuficient!"
Exit Sub
Else
Tabel.Edit
_________________________________________________________________________________Exemplu ↑
Aplicaţii
simbolul .
Bibliografie
Emil Cosma Aplicaţii Excel, Project, Visual FoxPro, Ed. EXPONTO, 2004
Ben Forta SQL în lecţii de 10 minute, Ed. TEORA, 2008
Jeff Perkins, Bryan Morgan SQL fără profesor, în 14 zile, Ed. TEORA, 1998
Emil Cosma Visual BASIC … VBA 2007 … Studio 2005, Ed. MATRIXROM,
2007