Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Obiecte DAO (de accesare a datelor)

Informatica


Obiecte DAO (de accesare a datelor)

Colectia Recordsets (seturi de înregistrari)



Obiectele de tip Recordset (set de înregistrari) sunt cel mai des folosite si deci, poate, cele mai importante obiecte DAO. Ele permit manipularea directa a datelor dintr-o baza de date. Aceste obiecte sunt temporare (nu sunt salvate pe disc), fiind folosite pentru a reprezenta înregistrarile dintr-o tabela sau înregistrarile returnate de o interogare, punând la dispozitia programatorului posibilitati de adaugare, editare, stergere si mutare a datelor solicitate de aplicatie.

Access 2000 recunoaste cinci tipuri de obiecte Recordset

Obiecte Recordset de tip tabel;

Obiecte Recordset de tip dynaset;

Obiecte Recordset de tip instantaneu (snapshoot);

Obiecte Recordset cu deplasare numai înainte (forward-only);

Obiecte Recordset de tip dinamic.

Alegerea se face în functie de mai multi factori, cum ar fi:

numarul de înregistrari existente în setul de întegistrari;

daca se doreste actualizarea înregistrarilor sau numai afisarea lor;

daca tabelele sunt stocate într-o baza de date creata cu Access sau în alt tip de baza de date.

Obiectele Recordset de tip tabel sunt utilizate pentru a manipula tabele Access locale sau atasate. Principalul avantaj este ca permit folosirea indecsilor, care maresc viteza de cautare a unor înregistrari.

Obiectele Recordset de tip dynaset pot fi utilizate pentru a manipula rezultatele unei interogari, pentru actualizari si extrageri din mai multe tabele, chiar din tabele apartinând altei baze de date. De obicei, sunt folosite în cazul în care obiectul Recordset este prea mare sau când contine obiecte OLE.

Au doua caracteristici principale:

permit editare înregistrarilor, rezultatele reflectându-se în tabelele de baza;

atâta timp cât un obiect de tip dynaset este deschis, Access actualizeaza înregistrarile acestuia ca raspuns la modificarile pe care le efectueaza alti utilizatori în tabela de baza.

Pentru obiectele Recordset de tip instantaneu, datele incluse sunt fixate la momentul crearii, deci nu pot fi modificate ulterior. Avantajele sunt dimensiunea redusa a obiectelor Recordset si faptul ca pot fi create mai rapid decât cele de tip dynaset.

Metode:

AddNew - creeaza o noua înregistrare pentru un obiect Recordset actualizabil;

Delete - sterge înregistrarea curenta dintr-un obiect Recordset actualizabil;

Edit - copiaza înregistrarea curenta dintr-un obiect Recordset actualizabil într-un buffer pentru editare;

Requery - reactualizeaza înregistrarile din setul pe care îl refera obiectul curent;

Update - salveaza continutul buffer-ului copie într-un obiect Recordset actualizabil;

Find First - localizeaza într-un obiect Recordset prima înregistrare care satisface anumite criterii;

Find Next - localizeaza într-un obiect Recordset urmatoarea înregistrare care satisface anumite criterii;

Find Previous - localizeaza într-un obiect Recordset înregistrarea anterioara care satisface anumite criterii;

Find Last - localizeaza într-un obiect Recordset ultima înregistrare care satisface anumite criterii;

MoveFirst - într-un obiect Recordset, prima înregistrare devine înregistrarea curenta;

MoveNext - permite deplasarea pe urmatoarea înregistrare;

MovePrevious - permite întoarcerea la înregistrarea precedenta;

MoveLast - într-un obiect Recordset, ultima înregistrare devine înregistrarea curenta;

Seek - într-un obiect Recordset de tip tabel indexat, localizeaza o înregistrare care satisface criteriile specificate pentru indexul curent;

OpenRecordset - deschide setul de înregistrari asociat obiectului;

Close - închide setul de înregistrari asociat obiectului;

Proprietati:

BOF - indica faptul ca pointerul de înregistrare curenta se afla sau nu înainte de prima înregistrare (True);

EOF - indica faptul ca pointerul de înregistrare curenta se afla sau nu înainte de ultima înregistrare (True);

Index - indica numele indexului curent din tabela referita de obiectul Recordset;

NoMatch - indica faptul ca într-un set de înregistrari a fost gasita sau nu înregistrarea cautata; daca s-a terminat cu succes cautarea, primeste valoarea True; altfel primeste valoarea False;

RecordCount - indica numarul de înregistrari din setul de înregistrari;

ValidationRule - este un sir de caractere prin care se stabilesc regulile ce trebuiesc îndeplinite pentru ca o înregistrare sa fie considerata valabila;

ValidationText - este mesajul de eroare afisat pe ecran în cazul în care regulile din ValidatinRule nu sunt îndeplinite.

Colectia Relation (relatii)

Fiecare relatie dintre doua sau mai multe tabele ale unei baze de date Access e reprezentata printr-un obiect de tip Relation. Colectia Relations a unui obiect de tip Database contine toate relatiile definite în baza de date respectiva.

Metode:

Append - adauga relatia la colectia Relations;

CreateField - creeaza câmpurile de legatura;

Proprietati:

Name - indica numele relatiei;

Attributes - indica atributele relatiei (dbRelationLeft, dbRelation DeleteCascade, etc);

Table - indica numele primei tabele;

ForeignTable - indica numele celei de-a doua tabele.

Colectia Parameters (parametri)

Ati vazut ca în Access puteti crea interogari cu parametri. Parametrii declarati cu ajutorul cuvântului cheie PARAMETERS în instructiunea SQL a unei interogari se numesc parametri formali. Colectia Parameters a unui obiect de tip QueryDef e formata din toti parametri formali definiti pentru interogarea respectiva. Nu puteti sterge sau adauga obiecte la colectia Parameters.

Colectia Properties (proprietati)

Un obiect de tip Property reprezinta o caracteristica a unui obiect. Fiecare obiect DAO are o colectie Properties. Un obiect de tip Property poate fi o proprietate predefinita sau una definita de utilizator.

Proprietatile predefinite ale unui obiect reprezinta caracteristicile de baza ale acestuia. Ele exista înca de la crearea obiectului si sunt disponibile pentru orice aplicatie ce foloseste motorul Jet. De exemplu, pentru un obiect de tip Field (câmp), proprietatile Name (nume) si Type (tip) sunt predefinite.



Proprietatile definite de utilizator nu exista pâna când nu sunt adaugate la colectia Properties a obiectului. De exemplu, proprietatea Description (descriere) a unui câmp nu este predefinita si nu exista pâna când nu introducesi descrierea. Daca încercati sa regasiti proprietatea Description a unui obiect ce înca nu o are, veti obtine o eroare.

Programatorul poate adauga proprietati (cu ajutorul metodei CreateaProperty) unui anumit obiect si este responsabil pentru stabilirea si modificarea valorilor acestor proprietati. Proprietatile definite pot fi sterse din colectia Properties a unui obiect; proprietatile predefinite nu pot fi sterse.

Pentru a regasi o proprietate predefinita a unui obiect, puteti folosi sintaxa:

obiect.proprietate

Pe de alta parte, nu puteti regasi o proprietate definita de utilizator decât prin intermediul colectiei Properties a obiectului:

obiect.Properties("proprietate") sau

obiect.Properties!proprietate

Aceasta din urma functioneaza si pentru proprietati predefinite.

Cu ajutorul instructiunii With puteti stabili mai multe proprietati ale unui obiect, fara a mai fi necesar sa specificati obiectul pentru fiecare proprietate în parte:

Private Sub Set_Form_Prop()

With txtCtl

.Text = "Acesta este un control de tip text"

.ForeColor = RGB(0,255,0) verde

.BackColor = 0

End With

End Sub

Containere si documente

Un container este o colectie de obiecte salvate în Access: baze de date, formulare, rapoarte, module, tabele, relatii. Termenul "document" este o descriere generica pentru un obiect stocat într-un container. Pentru a întelege mai bine ce reprezinta containerele si documentele, gânditi-va la fereastra Database. Fiecare pagina a acestei ferestre reprezinta un container, iar fiecare obiect dintr-o pagina este un document.

Pentru a examina containerele si documentele unei bazei de date vom scrie urmatoarea subrutina care le va afisa pe ecran:

Sub Containere_documente()

Dim dbCrt As Database

Dim conCrt As Container

Dim docCrt As Document

Set dbCrt = DBEngine.Workspaces(0).Databases(0)

For Each conCrt In dbCrt.Containers

Debug.Print "Container:" & conCrt.Name

For Each docCrt In conCrt.Documents

Debug.Print " Document:" & docCrt.Name

Next

Next

End Sub

Întâi am definit trei variabile: una de tip Database, care indica baza de date curenta, una de tip Container care indica fiecare element din colectia Containers si una de tip Document, ce indica fiecare document dintr-un container.

Pentru a atribui valori obiectelor am folosit cuvântul cheie Set.

Apoi, pentru a itera printre elementele colectiilor Containers, am folosit instructiunea For Each, ce se aseamana cu instructiunea For...Next, cu deosebirea ca este creata special pentru parcurgerea colectiilor.

Rezultate:

Fig

Lucrul cu variabile de tip obiect

La declararea unei variabile de tip obiect, Access creeaza numai un pointer la un obiect. De exemplu, nici una dintre declaratiile de mai jos nu stocheaza informatii si, deocamdata, nu indica vreun obiect existent:

Dim dbCrt As Database

Dim form As Form

Dim ctl As Control

Pentru a le face sa indice un obiect, trebuie sa folosim cuvântul cheie Set, ca mai jos:

Set dbCrt = DBEngine.Workspaces(0).Databases(0)

Set frm = dbCrt.Forms!Agenti

Set ctl = frm.Controls!Nume

Legatura dintre o variabila si obiectul spre care aceasta indica este distrusa (si memoria necesara este eliberata) odata cu expirarea duratei de viata a variabilei. Pentru a elibera, în mod explicit, o variabila, putem folosi valoarea predefinita Nothing:

Set frm = Nothing

În tabelul de mai jos sunt enumerate metodele prin care se poate accesa un element al unei colectii:

Sintaxa

Exemplu

Explicatii

colectie ("nume")

DBEngine.Workspaces(0).Databases(Agenti)

colectie (var)

strbd="Agenti"

DBEngine.Workspaces(0).Databases(strbd)

var  tip sir de caractere sau Variant

colectie(indice)

DBEngine.Workspaces(0).Databases(0)

indice reprezinta pozitia obiectului în cadrul obiectului

colectie!nume

sau

colectie![nume]

DBEngine.Workspaces(0).Databases!Agenti

Parantezele drepte dunt necesare numai daca numele colectiei contine caractere speciale (de exemplu, spatii)

Atât operatorul " ! ", cît si operatorul " . " sunt folositi pentru a descrie relatiile de apartenenta dintre colectii, obiecte si proprietati.

În general, dupa " ! " urmeaza numele unui obiect creat de dumneavoastra: un formular, un raport sau un control (deci un element al unei colectii). Astfel, operatorul " ! " separa un obiect de colectia din care face parte. Operatorul " . " este folosit, an general, pentru a separa un obiect de o colectie, proprietate sau metoda a sa.

Ati putut observa din exemplele de pâna acum ca adesea, pentru a obtine un pointer la un obiect, trebuie sa scrieti o linie de cod destul de lunga. În Access însa, aproape orice tip de obiect are o colectie implicita, care va fi luata în considerare daca nu specificati nici o colectie. De aceea:

DBEngine.Workspaces(0).Databases(0).TableDefs(0)

se mai poate scrie prescurtat ca:

DBEngine (0) (0) (0)

Aceasta pentru ca, dupa cum puteti vedea si în urmatorul tabel, TableDefs este colectia implicita a unui obiect de tip Database, Databases este colectia implicita a unui obiect de tip Workspace, iar Workspaces e colectia implicita a obiectului DBEngine.

Obiect

Colectia implicita

Container

Documents

Database

TableDefs

DBEngine

Workspaces

Group

Users



Index

Fields

QueryDef

Parameters

Recordset

Fields

Relation

Fields

TableDef

Fields

User

Groups

Workspace

Databases

Crearea si manipularea obiectelor DAO

Pentru a crea un obiect nou, procedati astfel:

Folositi una dintre metodele Create ... (Createable, CreateIndex, etc) pentru a crea obiectul dorit (tabela, index, etc).

Stabiliti proprietatile obiectului creat. Unele proprietati (cum ar fi numele) sunt esentiale si trebuie specificate la crearea obiectului. Altele pot fi stabilite si ulterior.

Adaugati obiectul la colectia corespunzatoare, pentru ca el sa faca parte din baza de date.

Daca obiectul nou creat contine alte obiecte (asa cum o tabela contine câmpuri), trebuie sa creati întâi obiectul principal si pe urma pe cele subordonate, pe care le adaugati la colectiile corespunzatoare ale obiectului principal. Apoi, îl adaugati si pe acesta la colectia sa. În tabelul de mai jos sunt prezentate în detaliu metodele Create... cu argumentele acestora si cu descrierile de rigoare.

Obiect

Metoda

Argumente

Tip de date

Descriere

Tabela

CreateTableDef

Name

String

Numele tabelei

Attributes

Integer

Stabilire valori pentru tabele atasate, sistem sau ascunse

Source

String

Informatii despre tipul tabelei de baza a unei tabele atasate

Connect

String

Calea si numele fisierului unui tabele atasate

Câmp

CreateField

Name

String

Numele câmpului

Type

Integer

Tipul de date

Size

Integer

Dimensiunea (pentru câmpuri de tip text)

Index

CreateIndex

Name

String

Numele indexului




Document Info


Accesari: 1207
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )