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 ?
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 : S�lectionner tout - Visualiser dans une fen�tre � part
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 : S�lectionner tout - Visualiser dans une fen�tre � part
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...
Partager