pseudoOM
Messages postés173Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention30 janvier 2009
-
10 mars 2005 à 09:57
pseudoOM
Messages postés173Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention30 janvier 2009
-
11 mars 2005 à 09:08
Bonjour à tous ! J'ai un problème que j'aimerais résoudre très rapidement. En fait j'ai fais une ADOQuery qui contient ceci :
UPDATE table
SET nombre=:nbr, retour=:r
WHERE numero=:num
nbr est un integer, retour un booléen, et numero un integer.
Retour prend la valeur d'une case à cocher (DBCheckBox). Le problème est le suivant : la requête fonctionne très bien mais une seule fois. Les fois suivantes le message suivant s'affiche : "Type incompatible dans l'expression du critère".
Je ne sais absolument pas à quoi c'est dû et si je ferme le programme et que je le relance cela refonctionne mais encore pour une seule fois !
Alors si quelqu'un à déjà eu le problème ou connait la solution, merci de m'aider
pseudoOM
Messages postés173Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention30 janvier 20091 11 mars 2005 à 09:06
Merci pour l'aide mais cela ne fonctionne pas ! Il m'envoit un message du genre "Type de données incompatible". Mais pas de panique j'ai trouvé la solution :
Procedure Form1.Button1Click(Sender: TObject);
var
nbr, numero, retour: string;
begin
retour:= BoolToStr(DBCheckBox1.Checked);
nbr:=DBEdit1.EditText;
numero:=DBText1.Caption;
DataModule1.ADOQuery.Close;
with DataModule1.ADOQuery do begin
with SQL do begin Clear;
Add('UPDATE nomdetable');
Add('SET nombre ='+nbr+', rentre='''+retour+'''');
Add('WHERE num='+numero);
end; ExecSQL;
end;
end;
par :
ADOQuery.Parameters[1].value:=QuotedStr(BoolToStr(BDBCheckBox1.Checked, True));
Explication :
BoolToStr renvoie une chaine lorsque le second paramètre est True, sinon renvoie 0 ou 1 selon la valeur du premier argument.
Dans la requête, il faut mettre les valeurs booléennes en guillemets. C'est ce que fait la fonction QuotedStr au final.