AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL-Statement wird 2 mal ausgeführt
Thema durchsuchen
Ansicht
Themen-Optionen

SQL-Statement wird 2 mal ausgeführt

Ein Thema von Nalincah · begonnen am 4. Dez 2003 · letzter Beitrag vom 4. Dez 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#1

SQL-Statement wird 2 mal ausgeführt

  Alt 4. Dez 2003, 10:50
Wenn ich dieses SQL-Statement ausführe:

SQL-Code:
CREATE TRIGGER InsertIntoEinheiten FOR ADRESSEN AFTER INSERT EXECUTE
(
  INSERT INTO admin.EINHEITEN (Einheit_ID) VALUES ('test');
)
Das ganze führe ich mit meinem Programm so aus:

Delphi-Quellcode:
procedure TDB_Frame.ButtonSQLExecuteClick(Sender: TObject);
begin
  DS.DataSet := Query;
  Query.SQL.Text := MemoSQL.Text;
  try
    Query.ExecSQL;
    Con.GetTableNames(ListBoxTable.Items);
    Query.Active := false;
    Query.Active := true;
    LabelSQLResult.Font.Color := clBlue;
    LabelQueryRecordCount.Caption := IntToStr(Query.RecordCount);
    LabelSQLResult.Caption := 'SQL-Statement erfolgreich ausgeführt';
  except
    On e : exception do
    begin
      LabelSQLResult.Font.Color := clRed;
      LabelSQLResult.Caption := 'Fehler beim ausführen des Statements';
      MemoSQLError.Text := e.Message;
      PageControlSQL.ActivePageIndex := 1;
    end;
  end;
end;
Wenn ich das Statement ausführe, wird der Trigger auch angelegt aber krieg trotzdem folgende Fehlermeldung:

[SAP AG][SQLOD32 DLL][SAP DB]General error;-6006 POS(16) Duplicate name Der führt das Statement irgendwie doppelt aus. Wenn ich

Drop Trigger InsertIntoEinheiten of ADRESSEN ausführe, sagt der:

[SAP AG][SQLOD32 DLL][SAP DB]General error;-4019 POS(14) Unknown trigger name:INSERTINTOEINHEITEN Weil er den Trigger halt 2 mal löschen will.

Liegt das irgendwie an meinem Quellcode??

[edit=Admin]SQL-Code in die SQL-Tags eingefügt. Mfg, Daniel[/edit]
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
675 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: SQL-Statement wird 2 mal ausgeführt

  Alt 4. Dez 2003, 11:04
ka, was in Deinem SQL-Statement des Memo's wirklich steht, aber folgendes kann dazu führen, daß es zweimal ausgeführt wird :

Zitat:
Query.ExecSQL;
...
Query.Active := false;
Query.Active := true;
ExecSQL führt nämlich das Statement in Query.SQL aus.
Query.Active führt ihn aber auch aus, wenn es True gesetzt wird.

Hoffe, das hilft Dir weiter.

BTW. Warum den Trigger per Programm setzen ? Das macht man einmal bei DB-Definition und dann läßt man ihn in Ruhe, bis man ihn ändern muß. Zum anderen beschreibst Du ein Feld "Einheiten_ID" mit einem String. ID werden normalerweise aber mit Zahlen gemacht. Check das doch mal

LG, MRN
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#3

Re: SQL-Statement wird 2 mal ausgeführt

  Alt 4. Dez 2003, 11:11
Danke. Bin im gleichen Moment auch drauf gekommen.

Das ganze ist teil eines DB-Programms. Mit dem kann man DBs öffnen und SQL-Statements ausführen. und dann kann man halt auch selber trigger einrichten. Bin grad am üben.
Das Feld ist VarChar(10) weil die Einheit_ID z.b. auch "AB3UZ" sein kann
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#4

Re: SQL-Statement wird 2 mal ausgeführt

  Alt 4. Dez 2003, 11:19
Jetzt hab ich leider noch ein Problem:

Delphi-Quellcode:
procedure TDB_Frame.ButtonSQLExecuteClick(Sender: TObject);
begin
  DS.DataSet := Query;
  Query.SQL.Text := MemoSQL.Text;
  try
    Query.ExecSQL;
// Query.Active := false;
// Query.Active := true;
    LabelSQLResult.Font.Color := clBlue;
    LabelQueryRecordCount.Caption := IntToStr(Query.RecordCount);
    LabelSQLResult.Caption := 'SQL-Statement erfolgreich ausgeführt';
  except
    On e : exception do
    begin
      LabelSQLResult.Font.Color := clRed;
      LabelSQLResult.Caption := 'Fehler beim ausführen des Statements';
      MemoSQLError.Text := e.Message;
      PageControlSQL.ActivePageIndex := 1;
    end;
  end;
end;
Wenn ich das so mache, dann kracht der bei

LabelQueryRecordCount.Caption := IntToStr(Query.RecordCount); Weil die Query nicht aktiv ist. Das soll der nur machen ein Select-Statement aufgerufen wird.

Hab mir das erst so überlegt:

Delphi-Quellcode:
if Query.Active = true then
  LabelQueryRecordCount.Caption := IntToStr(Query.RecordCount);
Das geht aber nicht, da ich ja das Query.Active := true ausgeklammert habe.
Reinmachen kann ich ja nicht. Und ohne ExecSQL gehts auch nicht.

Wie krieg ich das hin?
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
675 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: SQL-Statement wird 2 mal ausgeführt

  Alt 4. Dez 2003, 11:29
Das Problem liegt an der Art des Statements. Es gibt welche mit und welche ohne ResultSet. Einen Trigger zu erstellen hat kein ResultSet, deswegen gibt es auch keine RecordCount. Mach doch einfach 'ne Abfrage, ob Pos('SELECT', ADOQry.SQL.Lines[0]) > 0 ergibt

Ich kenn nun leider die komp ned wirklich und weiß ned, was die Variablen sonst noch für Möglichkeiten haben, rauszubekommen, was für ein Statement es war. ADOQry.EoF wäre auch ein Ansatz.

LG, MRN
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#6

Re: SQL-Statement wird 2 mal ausgeführt

  Alt 4. Dez 2003, 11:31
kann ich denn davon ausgehen das ein Select-Statement immer alleine ausgeführt wird???
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
675 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: SQL-Statement wird 2 mal ausgeführt

  Alt 4. Dez 2003, 11:39
nicht wirklich
Aber die Antwort ist trotzdem "Ja"

es gibt auch die Möglichkeit, ein SELECT-Statement auf eine Stored Procedure zu machen, die liefert dann allerdings auch ein ResultSet...
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#8

Re: SQL-Statement wird 2 mal ausgeführt

  Alt 4. Dez 2003, 11:47
Kannst dir das Programm ja mal angucken

Database Utilities
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
675 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: SQL-Statement wird 2 mal ausgeführt

  Alt 4. Dez 2003, 12:51
sorry, wird nix nützen, da bei es bei mir keine ADO-Komps gibt
und hab auch hier ein wenig zu tun auf Arbeit, krieg ja ned umsonst ein Haufen geld
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#10

Re: SQL-Statement wird 2 mal ausgeführt

  Alt 4. Dez 2003, 13:02
Ist ja nicht das Projekt, sondern die exe
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 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