Einzelnen Beitrag anzeigen

ahachmann

Registriert seit: 15. Sep 2003
Ort: Hamburg
54 Beiträge
 
Delphi 7 Professional
 
#1

Params im ADOQuery nicht angenommen.

  Alt 17. Feb 2004, 12:17

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
  Mit Zitat antworten Zitat