Bonsoir
J'ai une base access, et j'utilise une connexion odbc pour l'interroger. Mais comment faire pour lancer une requete SQL (genre afficher tous les noms qui commencent par "B") ? C'est quoi l'histoire des param�tres ?
Version imprimable
Bonsoir
J'ai une base access, et j'utilise une connexion odbc pour l'interroger. Mais comment faire pour lancer une requete SQL (genre afficher tous les noms qui commencent par "B") ? C'est quoi l'histoire des param�tres ?
Tu utilises un objet d'acc�s aux donn�es (genre CRecordset) ? il n'y a pas une fonction executeSql ou du genre ?
ExecuteSQL fait partie de la classe CDatabase::ExecuteSQL(LPCSTR lpszSQL );
Je pige pas comment �a peut m'aider, d�sol�. :( J'utilise bien des objets du type CRecordSet, mais la seule fonction que j'ai trouv�e ne me sert pas � grand chose : ExecuteUpdateSQL(void); et comme elle ne prend aucun argument, je s�che.
Pour me connecter, j'ai fait comme �a :
est-ce que �a marcherai si je mettai la requete dans mon bloc "else" ? Vu que �a doit �tre une recherche, je pense que ce n'est pas � la connexion qu'il faut faire la requ�te ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 CDatabase mydb; if( !mydb.OpenEx( _T("DSN=CliAlu;DBQ=C:\\CliAlu\\DataBase CliAlu\\CliAlu.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;"))) { AfxMessageBox("Impossible d'ouvrir la base de données"); return 0; } /*else { AfxMessageBox("Test d'ouverture réussi"); //mydb.ExecuteSQL("mettre la requete de recherche ici"); }*/ CCliAluSet r(&mydb);
Tu executes ton query via un objet CDatabase comme tu le fais.
Et puis grace � ton CRecordset tu r�cup�res les valeurs
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 CDatabase ds; CRecordset rs(&ds); DBVariant dbv; CString strSQL _T("Ton query"); ds.open(...); rs.Open(AFX_DB_USE_DEFAULT_TYPE, strSQL, CRecordset::readOnly | CRecordset::executeDirect); while(!rs.IsEOF()) { rs.GetFieldValue(short(0),dbv); } Et le tour est joué!
OK. Hier j'ai trouv� une autre m�thode je pense, d'arriver au m�me r�sultat je ne suis pas s�r : le membre m_strFilter �quivaudrait � une clause WHERE. J'ai trouv� �a sur le site de microsoft, les deux m�thodes sont elles les m�mes ? ou bien celle de GP77 permet plus de choses ? (c'est juste � titre perso cette question) :)
Tu peux faire les deux, c'est � dire que tu peux faire ton query via un CDatabase, avec un m_strFilter et puis associer un CRecordSet pour r�cup�rer les valeurs.
Parce que sans CRecordset, je ne vois pas tr�s bien comment tu vas r�cuup�rer tes r�sultat pour les mettres dans ton control...