Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADOQuery: Eigenschaft SQL fehlt (https://www.delphipraxis.net/53899-adoquery-eigenschaft-sql-fehlt.html)

rai29 24. Sep 2005 22:20

Datenbank: Access • Zugriff über: ADOQuery

ADOQuery: Eigenschaft SQL fehlt
 
Hi ich habe ein Problem mit folgender Funktion, die plötzlich nicht mehr funktioniert - dabei habe ich an der Funktion selbst garnichts geändert
Hier erstmal der Quellcode
Delphi-Quellcode:
function Tdm.Query(SQL:widestring):integer;
var oldcmd:Tstrings;
    i:integer;
begin
  oldcmd:=tstringlist.Create;
  oldcmd:=qry.SQL;
  qry.SQL.Clear;             // Qry ist mein ADOquery
  qry.SQL.add(sql);          // Der Wert des Parameters SQL, der den Fehler verursacht, lautet:
                              // INSERT INTO Bonpositionen (Eingabe, BonText, VKPreis, OrigVKPreis, MwSt, ArtNr, BonID, Menge, Rabatt, RabattText) VALUES ('0101000001', 'DummyMarke Shirt 1/2 DUMMY Artikel', 10, 10, 1.38, '0101000001', 34, 1 , 0, '')
  try
    i:=qry.ExecSQL;          
    Result:=i;
  except
    Result:=-1;
  end;
  if (qry.sql.IndexOf('UPDATE')>=0) or (qry.sql.IndexOf('INSERT')>=0) and (Result>0)
   then
    try
     SQLLog(sql,i);
    except;
    end;
  qry.SQL:=oldcmd;
  oldcmd.Destroy;
end;
Kann da der SQL-String zu lang sein? - Ich weiß echt nicht weiter..
also Danke für eure Hilfe..

marabu 25. Sep 2005 11:42

Re: ADOQuery: Eigenschaft SQL fehlt
 
Hi,

herzlich willkommen in der Delphi-PRAXiS.

An der Länge deines Statements liegt es wohl nicht. Du bekommst mitgeteilt, was an deinem SQL Statement falsch ist, wenn du die Exception nicht stumm schaltest:

Delphi-Quellcode:
begin
  ...
  try
    i := qry.ExecSQL;          
    Result := i;
  except on E: Exception do
    begin
      Result := -1;
      ShowMessage(E.Message);
    end;
  end;
Grüße vom marabu

rai29 26. Sep 2005 08:19

Re: ADOQuery: Eigenschaft SQL fehlt
 
Ich bekomme die Fehlermeldung ja auch über den Debugger und diese lautet eben "qry: Eigenschaft SQL fehlt".

Ich habe das ADOQuery jetzt gegen ein ADOCommand ausgewechselt und es funktioniert.. :)

Danke

shmia 26. Sep 2005 09:34

Re: ADOQuery: Eigenschaft SQL fehlt
 
Zitat:

Zitat von rai29
Delphi-Quellcode:
function Tdm.Query(SQL:widestring):integer;
var oldcmd:Tstrings;
    i:integer;
begin
  oldcmd:=tstringlist.Create;
  oldcmd:=qry.SQL;

Beim letzten Befehl ist Dir ein böser Schnitzer passiert!!!
Du kopierst nicht den Inhalt von qry.SQL, sondern einen Zeiger auf ein TStrings-Objekt.
Alles Weitere ist dann ein Folgefehler.
Richtig wäre:
Delphi-Quellcode:
  oldcmd.Assign(qry.SQL);
....
   qry.SQL.Assign(oldcmd); // und wieder zurück laden

rai29 26. Sep 2005 10:11

Re: ADOQuery: Eigenschaft SQL fehlt
 
habe ich sofort korriegert

..man lernt doch immer noch was dazu

Danke :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz