Bonjour
Je dois, pour un TP, d�velopper un application sous Builder(6) utilisant l'api mySQL.
Dans celui-ci, je dois � un moment lister les tables d'une base de donn�e dans une ListBox. Selon le choix de l'utilisateur, le syst�me affichera dans une deuxi�me ListBox la liste des champs (leurs noms) correspondant � la s�lection.
Pour faire simple :
ListBox1 = nom des tables
ListBox2 = nom des champs de la table s�lectionn�e (par double-clic)
Le soucis viens de la r�cup�ration des noms des champs. Lors du double-clic, le programme plante en affichant le message d'erreur suivant :
Je vous met le morceau de code g�n�rant l'erreur ci-dessous :Violation d'acc�s � l'adresse xxxxxx dans le module 'rtl60.bpl'. Lecture de l'adresse yyyyyy
J'ai tout essay� : cast pour voir si �a venait du type, conversion char*->AnsiString... rien n'y fait.
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
16
17
18
19
20
21
22 AnsiString selection = ListBox1->Items->Strings[ListBox1->ItemIndex]; AnsiString requete = "SELECT * FROM "; requete += selection; char* requeteChar = requete.c_str(); if(!mysql_query(mySQL, requeteChar)) { myRES = mysql_store_result(mySQL); if(myRES) { compteur = mysql_num_fields(myRES); myFIELDS = mysql_fetch_fields(myRES); for(int i=0 ; i<compteur ; i++) { resultat = myFIELDS[i].name; // ligne générant l'erreur ListBox2->Items->Add(resultat); } } }
Merci d'avance![]()
Partager