Hallo,
Wie kann es sein, daß zwei Queryobjekte verschieden reagieren? Ich stehe vor der Wand.
Ich habe beide auf Prepared := true gesetzt, und will eine Abfrage starten.
Bei diesem Code läuft alles gut:
Delphi-Quellcode:
intResult := conDB.BeginTrans;
try
qrySQL.SQL.Clear;
qrySQL.Prepared := True;
intResult := qrySQL.SQL.Add(
'INSERT INTO tubes (name,description,customer,number,length,diameter,picturepath) '+
' VALUES (:Pname,:Pdescription,:Pcustomer,:Pnumber,:Plength,:Pdiameter,:Ppicture)');
qrySQL.Parameters.ParamByName('Pname').Value := name;
qrySQL.Parameters.ParamByName('Pdescription').Value := description;
qrySQL.Parameters.ParamByName('Pcustomer').Value := customer;
qrySQL.Parameters.ParamByName('Pnumber').Value := strtoint(ext1);
qrySQL.Parameters.ParamByName('Pdiameter').Value := strtofloat(ext2);
qrySQL.Parameters.ParamByName('Plength').Value := strtofloat(ext3);
qrySQL.Parameters.ParamByName('Ppicture').Value := strPicturePath;
intResult := qrySQL.ExecSQL;
bolRet := true;
conDB.CommitTrans;
except
bolRet := false;
conDB.RollbackTrans;
end;
funcInsertArticle := bolRet;
Bei deisem nicht. Er sagt, daß er den Parameter PName nicht kenne. Selbst Wenn ich die Constante SQLSTOPPER direkt durch
den
SQL-String ersetze macht er es nicht.
(((((
Delphi-Quellcode:
qryArticles.SQL.Clear;
qryArticles.Prepared := true;
intRes := qryArticles.SQL.Add(SQLSTOPPER);
qryArticles.Parameters.ParamByName('Pname').Value := 'test';
try
intRes := qryArticles.ExecSQL;
except
end;
Das
SQL-Statement ist in einer anderen
Unit als Constante hinterlegt:
SQL-Code:
SELECT *
FROM stopper
WHERE article_id IN
(Select stopper_id
FROM r_tubestopper
WHERE tube_id =
(Select article_id
From r_articleproduct
where name = :Pname AND article_id IN (Select article_id FROM tubes))) UNION
SELECT * FROM stopper WHERE NOT EXISTS (SELECT *
FROM stopper
WHERE article_id IN
(Select stopper_id
FROM r_tubestopper
WHERE tube_id =
(Select article_id
From r_articleproduct
where name = :Pname AND article_id IN (Select article_id FROM tubes))))
Vielen Dank und sorry für das große Post.
Alexander