Error creating cursor handle [Résolu]

Messages postés
26
Date d'inscription
lundi 16 juin 2003
Dernière intervention
3 janvier 2008
- - Dernière réponse : Dvdmizo
Messages postés
74
Date d'inscription
jeudi 6 mars 2003
Dernière intervention
3 mai 2006
- 13 juin 2005 à 17:09
Bonjour,

Lorsque je fais une requête d'insertion sur ma base de données, mon programme me renvoie l'erreur : "Error creating cursor handle". En revanche ma requête a fonctionnée, j'ai bien ma ligne dans la base.

J'utilise Borland C++ Builder v6 et Access

Merci !
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
74
Date d'inscription
jeudi 6 mars 2003
Dernière intervention
3 mai 2006
3
Merci
salut,



met nous un bout de code histoire de voir comment tu fais ....

mais je pense avoir une petite idée de ton problème.

tu dois probablement utiliser les composants BDE (genre TQuery) et faire :



Query1->Open() ;



pour effectuer un "Select" il faut en effet utiliser :



Query1->Open() ;



car le composant TQuery en profite pour allouer la mémoire necessaire
pour recevoir le resultat de ta requete, or pour effectuer une requete
de modification (Insert, Update, Delete) il faut utiliser :



Query1->ExecSQL() ;


car aucun "résultat" de requete n'est renvoyé (d'où le message d'erreur
lorsqu'il essaye de créer un handle de curseur vers le resultat)



j'espère t'avoir aidé.


DvdMizo

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de Dvdmizo
Messages postés
26
Date d'inscription
lundi 16 juin 2003
Dernière intervention
3 janvier 2008
0
Merci
Merci beaucoup, c'est exactement ça !
Commenter la réponse de bou1024
Messages postés
2
Date d'inscription
lundi 19 juillet 2004
Dernière intervention
9 juin 2005
0
Merci
tu peux me montrer ton code source pour que je puisse voir comment on fait pour executer une requete SQL car je n'y arrive pas . merci.
Commenter la réponse de blackraven96
Messages postés
74
Date d'inscription
jeudi 6 mars 2003
Dernière intervention
3 mai 2006
0
Merci
on va prendre un exemple simple, si tu as une table qui s'appelle 'Contact' avec 3 champs :



- Nom (chaine)

- Prenom (chaine)

- Age (entier)


il faut :

un composant TQuery avec comme nom Query1 (par exemple)

ta requete va se présenter comme ça :



void fonction_quelconque_qui_fait_la_requete(void)

{

AnsiString Nom, Prenom ;

int Age ;

Query1->Close() ; // on s'assure que la connexion est fermée

Query1->SQL->Clear() ; // on s'assure que la requete est bien vide

Query1->SQL->Add("Select * from Contact") ; // on ajoute une requete qui







// va selectionner tous les







// enregistrements de la table



if(Query1->RecordCount) // si on a des résultats

{

Query1->First() ;
// on se place sur le premier enregistrement du
résultat


while(!Query1->EOF) // tant qu'on a pas atteint la fin
des résultats

{

Nom =
Query1->FieldByName("Nom")->AsString ; // On récupère le nom

Prenom =
Query1->FieldByName("Prenom")->AsString ; // On récupère le prénom

Age =
Query1->FieldByName("Age")->AsInteger ; // On récupère l'age



// .....

// on fait ce qu'on veut avec les valeurs de cet enregistrement

//......




Query1->Next() ; // on passe à l'enregistrement suivant

}

}

}



voilà en gros l'idée, j'espère que tu y trouveras ton bonheur ;)


DvdMizo
Commenter la réponse de Dvdmizo
Messages postés
74
Date d'inscription
jeudi 6 mars 2003
Dernière intervention
3 mai 2006
0
Merci
pfff alors moi je suis trop fort j'ai oublié le plus important !!!

honte à moi lol

désolé, je reposte



void fonction_quelconque_qui_fait_la_requete(void)

{

AnsiString Nom, Prenom ;

int Age ;

Query1->Close() ; // on s'assure que la connexion est fermée

Query1->SQL->Clear() ; // on s'assure que la requete est bien vide

Query1->SQL->Add("Select * from Contact") ; // on ajoute une requete qui







// va selectionner tous les







// enregistrements de la table



Query1->Open() ; // on execute la requete



if(Query1->RecordCount) // si on a des résultats

{

Query1->First() ;
// on se place sur le premier enregistrement du
résultat

while(!Query1->EOF) // tant qu'on a pas atteint la fin des résultats

{

Nom =
Query1->FieldByName("Nom")->AsString ; // On récupère le nom

Prenom =
Query1->FieldByName("Prenom")->AsString ; // On récupère le prénom

Age =
Query1->FieldByName("Age")->AsInteger ; // On récupère l'age



// .....

// on fait ce qu'on veut avec les valeurs de cet enregistrement

//......




Query1->Next() ; // on passe à l'enregistrement suivant

}

}

}


DvdMizo
Commenter la réponse de Dvdmizo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.