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