Newsgroup: it.comp.programmare.win32
Titolo: Api e Database

Salve a tutti,
lavoro con API ed ho la necessita di creare, aprire, chiudere e lavorare su
di un database.
Ho girato MSDN in lungo ed in largo ma non trovo nulla in merito a cio se
non la classe CDaoDatabase in MFC.
Il problema e che non riesco ad inserire la classe in questione. Se aggiungo
manualmente negli Header file DBDAO.H mi appare una sfilza di classi ma mi
da un casino di errori quando compilo queste istruzioni
nonostante abbia inserito le istruzioni
#include <afxole.h>
#include <dbdao.h>
void DoFileSave(HWND hwnd)
{
 OPENFILENAME ofn;
 DWORD   nLenght;
 CdbDBEngine     dben;
 CdbWorkspace    wrkDefault;
 CdbDatabase     dbsNew;
 char szFileName[MAX_PATH] = "";
 char szAppPath[MAX_PATH] = "C:\\Wincontest\\Database\0";
 ZeroMemory(&ofn, sizeof(ofn));
 if (!iDialog)
  nLenght = GetCurrentDirectory (MAX_PATH, szAppPath);
 ofn.lStructSize = sizeof(ofn);
 ofn.hwndOwner = hwnd;
 ofn.lpstrFilter = "Databases Files (*.mdb)\0*.mdb\0All Files (*.*)\0*.*\0";
 ofn.lpstrFile = szFileName;
 ofn.nMaxFile = MAX_PATH;
 ofn.lpstrDefExt = "mdb";
 ofn.lpstrInitialDir = szAppPath;
 ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY |
OFN_OVERWRITEPROMPT;
 GetSaveFileName (&ofn);
 wrkDefault = dben.Workspaces;
 dbsNew = wrkDefault.CreateDatabase(szFileName, dbLangGeneral);
 dbsNew.Close();
tutta la parte inerente all'apertura della finestra di dialogo va benissimo,
perchè l'ho provata prima. Il problema e che una volta selezionato il nome
ho bisogno di creare il database.
Se faccio click sui membri delle varie classi mi da un'errore. Insomma come
posso risolvere il problema. E qui siamo solo alla creazione, mi immagino il
giorno che dovro aprire il recordset e lavorarci sopra.
Un grazie a tutti
Enzo

 da un casino di errori ...
Da come scrivi mi sembra di capire che tu stia tentando di
usare "un database" con "qualche API", come se si trattasse
di cambiare colore ad una finestra.
Personalmente mi sento di sconsigliarti questo approccio.
In breve dovresti conoscere:
1)
i database, non sono affatto uguali! Dall'estensione nominata capisco
che stai cercando di usare access, ma sarà il DB che fa il tuo caso?
Adotta la tecnologia di accesso che ti interessa? La sicurezza delle
transazioni? Ecc.?
2)
le tecnologie di accesso ai dati, che dipendono anche dal DB scelto!
Sto parlando di usare una libreria .lib/.h, un ODBC, un buon vecchio
DAO,
un OLE DB, un moderno e lento ADO ecc, bisogna valutarlo prima!
3)
una guida che discuta il contesto scelto con uno o più esempi
funzionanti da cui partire a fare esperimenti.
Si potrebbe scrivere molto ma per fortuna molto è stato scritto.
Quasi tutti i libri che trattano VC++ hanno all'interno degli esempi
di programmazione di DB. A livello API ODBC ho trovato 5 paginette
sul mio libro VC++ 5 Unleashed di Viktor Toth, e penso che non si trovi
molto altro perché il mondo della progr. promuove strumenti alternativi.
Se dirigi le tue energie nello studio di quanto ti ho consigliato
dovresti poter riprendere a codificare tra un pò, ma con la 
capacità di controllare e capire gli errori generati dall'IDE.
JJ
P.S.
in MSDN c'è un Visual C++ tutorial per la programmazione in DAO.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:36ff22bd7ecb2067707...@mygate.mailgate.org...


...mm, mi dispiace di aver fatto una "lunga chicchierata".
Stavolta sarò più breve.
Innanzitutto CDaoDatabase insieme a CDaoWorkspace, CDaoRecordset,
CDaoTableDef e CDaoQueryDef sono classi wrapper MFC (bella scoperta) che
includono interfacce OLE come DAORecordset, DAOWorkspace,
DAODBEngine, DAODatabase, per semplificare la vita al programmatore.
Il che vuol dire che puoi evitare le classi MFC usando quelle
interfacce.
Ma se proprio non le vuoi credo che dovresti includere i file
afxdao.h e afxdb.rc per usare le classi CDaoxyz...
Nei miei progetti MFC so che dovendo includere quelle ulteriori classi
MFC,
non previste durante lo start-up di Appwizard,
si devono includere appunto quei due file.
Ma per uno stile tradizionale (per API) di programmazione
non so se basterà. Visto che CDaoxyz... deriva da CObject
forse sarà bene includere anche AFXWIN.h.
E in testa a tutti.
Spero di esserti stato di aiuto.
JJ
