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