Error creating cursor handle [Résolu]

bou1024 26 Messages postés lundi 16 juin 2003Date d'inscription 3 janvier 2008 Dernière intervention - 10 févr. 2005 à 12:13 - Dernière réponse : Dvdmizo 74 Messages postés jeudi 6 mars 2003Date d'inscription 3 mai 2006 Dernière intervention
- 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
Dvdmizo 74 Messages postés jeudi 6 mars 2003Date d'inscription 3 mai 2006 Dernière intervention - 10 févr. 2005 à 12:26
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

Merci Dvdmizo 3

codes-sources a aidé 79 internautes ce mois-ci

Commenter la réponse de Dvdmizo
bou1024 26 Messages postés lundi 16 juin 2003Date d'inscription 3 janvier 2008 Dernière intervention - 10 févr. 2005 à 12:32
0
Merci
Merci beaucoup, c'est exactement ça !
Commenter la réponse de bou1024
blackraven96 2 Messages postés lundi 19 juillet 2004Date d'inscription 9 juin 2005 Dernière intervention - 9 juin 2005 à 10:29
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
Dvdmizo 74 Messages postés jeudi 6 mars 2003Date d'inscription 3 mai 2006 Dernière intervention - 13 juin 2005 à 17:07
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
Dvdmizo 74 Messages postés jeudi 6 mars 2003Date d'inscription 3 mai 2006 Dernière intervention - 13 juin 2005 à 17:09
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.