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




MFC DAO

Baze de date


MFC DAO

Clasele MFC DAO sunt folosite pentru accesarea "Microsoft Jet database engine". si DAO.



#ncepand cu Visual C++, clasele DAO sunt distincte de clasele MFC ODBC. Toate clasele MFC DAO au prefixul CDao. #n general aceste clase sunt mai puternice decat clasele MFC ODBC. Clasele DAO folosesc Microsoft Jet pentru a accesa bazele de date. Microsoft Jet foloseste la rindul ei ODBC pentru a accesa bazele care nu le suporta direct.

Pentru informatii mai amanuntite despre folos 313c28d irea claselor DAO se recomanda citirea notelor tehnice TN053, TN054 si TN055.

#n continuare se vor prezenta principalele clase MFC DAO si exemple de utilizare:

CDaoWorkspace

Obiectul CDaoWorkspace gestioneaza sesiunile deschise de catre un utilizator la bazele de date. Sub implementarea MFC obiectul workspace este in principal un manager de tranzactii.

Clasa CDaoWorkspace furnizeaza urmatoarele functionalitati:

Realizeaza accesul explicit la un workspace implicit. Acest workspace implicit este reat prin initializarea Microsoft Jet. De obicei se poate folosi workspace-ul implicit prin crearea bazei de date DAO si a obiectelor recordset.

Realizeaza un spatiu de tranzactie in care tranzactiile vor fi aplicate tuturor bazelor de date care sunt deschise in workspace. Nu exista restrictii in crearea altor workspace-uri pentru gestionarea separata a spatiilor de tranzactii.

Realizeaza interfata catre multe proprietati ale Microsoft Jet.

Furnizeaza accesul la colectia de spatii de lucru ale Microsoft Jet. Toate workspace-urile active sunt memorate in colectia Workspaces mentinuta de masina de baze de date.

Obiectul de tip CDaoWorkspace poate fi folosit pentru:

Deschiderea explicita a workspace-ului implicit. De obicei deschiderea workspace-ului este implicita prin crearea unui obiect de tipul CDaoDatabase sau CDaoRecorset.

Crearea unui nou workspace. Daca doriti sa adaugati noi workspace-uri se apeleaza Append.

Deschiderea unui workspace existent din colectia Workspaces.

Pentru crearea unui nou workspace se apeleaza functia Create(). Pentru deschiderea unui workspace existent se va folosi functia Open(), iar pentru inchidere se va folosi functia Close(). Cind se apeleaza Close() toate bazele de date sunt inchise. Si toate tranzactiile nerealizate se vor anula.

CDaoDatabase

Obiectul este folosit pentru a reprezenta legatura catre o baza de date prin care se poate opera asupra datelor din baza.

Intr-un workspace pot exista mai multe obiecte de tipul CDaoDatabase active in acelasi timp.

Un obiect de acest tip poate fi creat implicit prin crearea unui obiect de tipul CDaoRecordset. Crearea explicita se realizeaza prin apelul functiei Create() sau Open(). Functia Open se foloseste pentru deschiderea unei baze de date existente. Functia Create() este folosita pentru crearea unei noi baze de date. Atunci cind aplicatia a terminat de lucrat cu baza de date aceasta se inchide folosind functia Close().

Dupa ce a fost creat un obiect CDaoDatabase pot fi create si adaugate in acesta obiecte de tipul tabela, query relatii, etc. Aceste lucruri se fac folosind obiecte de tipul CDaoTableDef, CDaoQueryDef, etc.

CDaoTableDef

Obiectul este folosit pentru reprezentarea unui tabel intern sau a unui tabel atasat. Fiecare obiect de tipul CDaoDatabase are o colectie numita TableDefs care contine toate obiectele DAO Tabledef salvate.

Se poate manipula definirea unui tabel cu ajutorul unui obiect CDaoTableDef.

Pentru a lucra cu un tabel existent sau pentru a crea un nou tabel puteti utiliza obiectele Tabledef. Mai intii se construieste un obiect CDaoTableDef, apoi se furnizeaza obiectului CDaoTableDef un pointer la obiectul CDaoDatabase caruia ii apartine tabelul. Apoi se efectueaza urmatoarele operatii:

Se apeleaza functia Open() a obiectului Tabledef furnizind numele unei tabele existente.

Se apeleaza functia Create() a obiectului Tabledef furnizind numele unei tabele noi. Pentru a putea adauga cimpuri si indecsi se apeleaza CreateField si CreateIndex.

Se apeleaza functia Append pentru a salva tabelul deschis sau salvat.

Daca s-a apelat Create nu se va mai apela Open.

CDaoQueryDef

Este folosit pentru definirea unui query care este de obicei depozitata sau salvata intr-o baza de date.

Un obiect de tipul CDaoDatabase va pastra obiectele de tipul CDaoQueryDef in colectia QueryDefs.

Utilizarea obiectelor de tipul CDaoQueryDef este la fel cu utilizarea obiectelor CDaoTableDef.

CDaoRecordset

Este folosit pentru reprezentarea multimii de inregistrari care au fost selectate din sursele de date. Acest obiect corespunde unui obiect CRecordset.

Un recordset poate fi de trei feluri:

Recordset de tipul Table - reprezinta un tabel care se poate utiliza pentru a examina, modifica, adauga sau sterge inregistrarile dintr-un singur tabel.

Recordset de tipul Dynaset - este rezultatul unui query care poate avea inregistrari care pot fi actualizate. Un recordset de tipul dynaset poate fi folosit pentru a examina, modifica, adauga sau sterge inregistrarile din tabele sursa (nu este posibil intotdeauna).

Recordset de tipul Snapshot - contine o copie statica a unei multimi de inregistrari returnate de un query.

Cu un obiect de tipul recordset se pot efectua operatiile:

Filtrarea inregistrarilor prin setarea variabilei m_strFilter.

Pozitionarea pe diverse articole din recordset.

Cautarea unor inregistrari care indeplinesc conditii date.

La recordset-uri de tipul table se pot crea indecsi si se poate folosi functia Seek().

La recordset-uri de tipul dynaset si table se pot actualiza inregistrari specificindu-se modul de blocare al articolelor.

Pentru a utiliza un obiect de tipul CDaoRecordset mai intii trebuie deschisa o baza de date si construit obiectul CDaoRecordset. Un pointer la obiectul CDaoDatabase trebuie furnizat constructorului obiectului CDaoRecordset.

CDaoException

Este folosit pentru gestionarea exceptiilor generate de functiile claselor MFC DAO.

CDaoFieldExchange

Clasa este folosita pentru a transfera date intre cimpurile setului de inregistrari si variabilele membru CDaoRecordset.

Un obiect de acest tip este transmis ca parametru functiei DoFieldExchange.

CDaoRecordView

Clasa este derivata din CFormView si este folosita pentru a afisa inregistrarile bazei de date folosind un template casuta de dialog.

View-ul este conectat direct la un obiect CDaoRecordset. Ca si in cazul obiectului CRecordView se poate crea o casuta de dialog si se pot pozitiona controalele necesare afisarii cimpurilor din sursa.

In continuare va fi prezentata metoda de creare a unei baze de date din program:

In exemplu sunt tratate comenzile OnFileOpen si OnFileNew.

Daca este selectata comanda Open este afisata o casuta de dialog pentru deschidere si este deschisa baza de date selectata.

void CAddressesDoc::OnFileOpen()

}

// Save the user's database file name, and then (re)open:

m_addressesSet.m_DefaultDBName = dlg.GetPathName();

m_addressesSet.Open(AFX_DAO_USE_DEFAULT_TYPE);

// Refresh the view to reflect the *new* database's data:

CFrameWnd * pFrame = (CFrameWnd *)(AfxGetApp()->m_pMainWnd);

CView * pView = pFrame->GetActiveView();

if (pView)

}

else

Daca este selectata optiunea OnFileNew se creaza baza de date, se adauga tabele si indecsi. Se recomanda studierea succesiunii operatiilor.

void CAddressesDoc::OnFileNew()

}

// Create, create, it's off to create we go!

// Notice: we are using CDaoDatabase's Create() function.

m_addressesSet.m_DefaultDBName = dlg.GetPathName();

if (m_addressesSet.m_pDatabase != NULL)

}

}


Document Info


Accesari: 1060
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. 2024 )