Problème Handle avec TQuery + DELETE. [Résolu]

scan05 5 Messages postés mardi 31 décembre 2002Date d'inscription 25 novembre 2004 Dernière intervention - 16 nov. 2004 à 17:08 - Dernière réponse : scan05 5 Messages postés mardi 31 décembre 2002Date d'inscription 25 novembre 2004 Dernière intervention
- 18 nov. 2004 à 17:33
Salut,

Alors j'ai un piti problème: EnoResultSet "Erreur de la création du handle de curseur" lorsque j'active ma TQuery avec Active à True. Dont voici le Code:

procedure TForm13.BitBtn2Click(Sender: TObject);
var
rep2 : integer;

begin
rep2 := messagebox(form13.handle,'Voulez-vous effacer cette fiche?','Attention...',MB_OKCANCEL);
if rep2 = 1 then
begin
QDelLoc.SQL.Clear;
Label14.Caption := idfiche;
QDelLoc.SQL.Add('DELETE FROM location WHERE id_fiche=''+idfiche+''');
QDelLoc.ExecSQL;
QDelLoc.Active := true;
end;
end;

------------
- "idfiche" est un string et je vérifie si il a la bonne valeur en le mettant dans Label14.

- j'ai une autre TQuery qui fait un SELECT pour joindre la table "fiche" a la table "location" puis "client" afin d'afficher le client par rapport à une référence de fiche entrée. La table "location" est une assotiation.

- puis une autre jointure de la table "article","exemplaire" puis "location", pour afficher les exemplaires et les article correspondant aux exemplaires.

Tout fonctionne nikel! J'ai utilisé jusqu'a présent des Dataset.Delete pour effacer un seul élément, mais la je veux effacer plusieurs élements donc j'utilise le DELETE de SQL mais j'ai donc ce problème de Handel !!!

Merci d'avance pour votre aide!!!!
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
tjtoz92 8 Messages postés mardi 25 mai 2004Date d'inscription 30 novembre 2004 Dernière intervention - 17 nov. 2004 à 17:00
3
Merci
je comprend pas pkoi mon dernier message apparait 2 fois mais bon!

Pour te répondre sincerement je ne pense pas que le probleme vienne de l'objet query que tu manipule.
Même s'il ne fait rien tu n'as pas d'erreur donc ce n'est pas un probleme provenant du query.
Ensuite verifie ta requete, car là tu ne DELETE RIEN!!!! Si tu veux supprimer une fiche avec son ID N'oubli pas de faire un DELETE * From....

Mais il serait plus propre de proceder autrement:

procedure TForm13.BitBtn2Click(Sender: TObject);
var
rep2 : integer,;
Querystring:string;

begin
rep2 := messagebox(form13.handle,'Voulez-vous effacer cette fiche?','Attention...',MB_OKCANCEL);
if rep2 = 1 then
begin
QDelLoc.SQL.Clear;
Label14.Caption := idfiche;
Querystring:=('DELETE* FROM location Where id_fiche=%s')
QDelLoc.sql.text:=Format(Querystring,[QuotedStr(idfiche)]);
QDelLoc.ExecSQL;
end;
end;

Verifie bien que ton id_fiche est bien de type string, sinon tu fait la mm chose sauf qu'à la place du %s tu fais %d
bonne chance!!!

Merci tjtoz92 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de tjtoz92
tjtoz92 8 Messages postés mardi 25 mai 2004Date d'inscription 30 novembre 2004 Dernière intervention - 17 nov. 2004 à 09:55
0
Merci
c'est parfaitement logique, puisque tu execute en fait 2 fois ta requete
avec ton exec et avec ton active.
Essai plutot:

procedure TForm13.BitBtn2Click(Sender: TObject);
var
rep2 : integer;

begin
rep2 := messagebox(form13.handle,'Voulez-vous effacer cette fiche?','Attention...',MB_OKCANCEL);
if rep2 = 1 then
begin
QDelLoc.SQL.Clear;
Label14.Caption := idfiche;
QDelLoc.SQL.Add('DELETE .....');
QDelLoc.SQL.Add('FROM location);
QDelLoc.SQL.Add('WHERE id_fiche=''+idfiche+''');
QDelLoc.ExecSQL;

end;
end;
Commenter la réponse de tjtoz92
scan05 5 Messages postés mardi 31 décembre 2002Date d'inscription 25 novembre 2004 Dernière intervention - 17 nov. 2004 à 10:31
0
Merci
Merci Tjtoz92 pour ta réponse, mais dans l'énérgie du désespoir j'avai ajouté le:

QDelLoc.Active := True;

car en effet le code sans le active (celui que tu m'as conseilé) ne fait RIEN... aucune occurence est effacée, aucun plantage... RIEN !
Alors je me demande, vue que je veux faire un "DELETE FROM" sur des tables (déja une pour commencer) qui sont concernés par deux jointures, je me dis peut etre qu'il faudrait voir plutot au niveau d'un parametre des TQuery des jointures....
J'ai essayé de faire des Refresh des TQuery mais rien....

Merci pour votre aide !

PS: je précise que idfiche est une var globale et qu'elle fonctionne! ;)
Commenter la réponse de scan05
scan05 5 Messages postés mardi 31 décembre 2002Date d'inscription 25 novembre 2004 Dernière intervention - 18 nov. 2004 à 17:33
0
Merci
Merci bcp pour l'aide!!!

En effet le problème vennait du faite que ma requette etait basée sur un parametre String et que telle que je l'ecrivais elle etais mal intérprété, alors que sur un Integer ca marchait nikel.....

merci merci !!!
Commenter la réponse de scan05

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.