Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi CommandText gibt keine Ergebnismenge zurück (https://www.delphipraxis.net/9107-commandtext-gibt-keine-ergebnismenge-zurueck.html)

Nalincah 18. Sep 2003 10:47


CommandText gibt keine Ergebnismenge zurück
 
Wenn ich das "INSERT"-Statement
Delphi-Quellcode:
INSERT INTO Tabelle1(Feld1, Feld2, Feld3) VALUES ('Inhalt1', 'Inhalt2', 'Inhalt3')
in die ADOQuery einfüge und dann die Zeile:
Delphi-Quellcode:
ADOQuery.open
ausführe, dann krieg ich folgende Meldung:

Delphi-Quellcode:
ADOQuery1: CommandText gibt keine Ergebnismenge zurück
Woran liegt das?

Gollum 18. Sep 2003 10:50

Re: CommandText gibt keine Ergebnismenge zurück
 
Hallo,

open kannst Du nur in Verbindung mit "Select" verwenden. Bei DML-Anweisungen musst Du ExecSQL benutzen.

Nalincah 18. Sep 2003 10:52

Re: CommandText gibt keine Ergebnismenge zurück
 
Danke für die Hilfe. Noch ne kleine Frage: Warum wird das DBGrid nicht aktualisiert wenn ich das Statement ausführe? Ist mit der gleichen DS verbunden wie das DBGrid

r_kerber 18. Sep 2003 10:56

Re: CommandText gibt keine Ergebnismenge zurück
 
Weil Du da nur eine "Momentaufnahme" zur Zeit des vorherigen SELECT-Statements siehst!

Gollum 18. Sep 2003 10:58

Re: CommandText gibt keine Ergebnismenge zurück
 
Hallo,

wie ist das DBGrid mit der Datenquelle verbunden? Mit einer Table oder Query? Ggf. reicht der Aufruf von Refresh.

Nalincah 18. Sep 2003 11:02

Re: CommandText gibt keine Ergebnismenge zurück
 
DBGrid.DataSource = DataSource1

DataSource1.DataSet = ADOTable1

ADOTable1.Connection = ADOConnection1

ADOQuery1.Connection = ADOConnection1
ADOQuery1.DataSource = DataSource1

Gollum 18. Sep 2003 11:04

Re: CommandText gibt keine Ergebnismenge zurück
 
Hallo,

dann rufst Du nachdem Du die Daten mit INSERT eingefügt hast ADOTable1.Refresh; auf.

Nalincah 18. Sep 2003 11:11

Re: CommandText gibt keine Ergebnismenge zurück
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Clear;
  Memo1.Lines.Add(SQLDispatcher1.CreateSQL);
  ADOQuery1.SQL.Text := SQLDispatcher1.CreateSQL;
  try
    ADOQuery1.ExecSQL;
    ADOTable1.Refresh;
  except
    on e : exception do
    begin
      Memo1.Lines.Add(e.Message);
    end;
  end;
end;
Macht der nicht :-(

Habs so gelöst:

Delphi-Quellcode:
ADOTable1.Active := false;
ADOTable1.Active := true;
Nicht sehr gut, oder?

Gollum 18. Sep 2003 11:18

Re: CommandText gibt keine Ergebnismenge zurück
 
Hallo,

evtl. könnte es mit DBGrid.DataSource.DataSet.Refresh; funktionieren.

Leider bin ich Dir da keine große Hilfe, da ich seit Jahren solche Konstrukte nicht mehr verwende.

Phoenix 18. Sep 2003 12:13

Re: CommandText gibt keine Ergebnismenge zurück
 
Das ist ein Bug in der ADO-Komponente. Entweder, du schliesst die Session und machst sie wieder auf (close und open), oder Du nimmst lieber das TBetterADODataSet anstelle dem TADODataSet...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 Uhr.

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