AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Erkenne ob Post ein Update oder Insert war
Thema durchsuchen
Ansicht
Themen-Optionen

Erkenne ob Post ein Update oder Insert war

Ein Thema von Ykcim · begonnen am 17. Mär 2017 · letzter Beitrag vom 18. Mär 2017
Antwort Antwort
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#1

Erkenne ob Post ein Update oder Insert war

  Alt 17. Mär 2017, 13:26
Datenbank: MySQL • Version: 5 • Zugriff über: UniDac
Hallo Zusammen,

ich habe eine wahrscheinlich einfache Frage. Ich möchte erkennen können, ob ein Post einer TUniQuery ein Update oder ein Insert war. Der Hintergrund ist, dass wenn es ein Insert war, ich eine Procedure laufen lassen möchte, als wenn es ein update war.
Ich wollte es eigentlich prüfen, indem ich vor dem Post prüfe, es eine ID gibt. Wenn ja, wäre es ein update gewesen, wenn nein, ein insert. Aber leider benötige ich für die nächste Query diese id, daher muss ich die nachfolgenden Prozceduren auch wirklich im Nachgang machen...

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: Erkenne ob Post ein Update oder Insert war

  Alt 17. Mär 2017, 13:35
Ich verstehe nur Bahnhof!

Wenn ich einen Datensatz "Post"e dann muss ich vorher entweder einen bestehenden Datensatz "Edit"en oder einen neuen Datensatz "Append"en.

Damit ist doch klar ob ein Datensatz geupdatet oder neu inserted wurde?

Schreib mal bitte genauer worum es eigentlich geht!

Ciao
Stefan
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#3

AW: Erkenne ob Post ein Update oder Insert war

  Alt 17. Mär 2017, 13:43
Alles klar, versuche ich es noch einmal.

Ich lege einen neuen Datensatz an (Neuer Artikel). Nach dem Anlegen müssen mehrere Datensätze in eine andere Tabelle geschrieben werden (Prozess-Ablauf). Wenn ich aber den Artikel nur verändere (update), dann muss ich die Datensätze in der anderen Tabelle nicht erstellen.

Meine Speicher-Methode funktioniert mit der Kombination Query--> DataSource --> DBEdit-Felder --> Navigator. Bei dieser Vorgehensweise muss ich den Insert / Update String nicht manuel erstellen...

Die einzige Möglichkeit, die mir aktuell einfällt, wäre gefrickelt...: im Event BeforePost abfragen, ob Datensatz eine ID hat, dann KlassenVariable auf true setzen, ansonsten auf false. Dann in dem Event AfterPost den Status der Klassenvariable abfragen. Die Lösung ist aber gefuscht und es muss mit Sicherheit auch eleganter zu lösen sein...


Ich hoffe, dass mein Problem besser beschrieben ist.

Vielen Dank
Gruß Patrick
Patrick

Geändert von Ykcim (17. Mär 2017 um 13:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#4

AW: Erkenne ob Post ein Update oder Insert war

  Alt 17. Mär 2017, 13:49
Wäre das nicht besser auf DB-Ebene per Trigger zu lösen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Erkenne ob Post ein Update oder Insert war

  Alt 17. Mär 2017, 14:07
Frage doch im Event BeforePost den Status der Query ab.

entweder über Query1.State = dsInsert oder DataSource1.State = dsInsert (DataSource1 zeigt auf Query1).

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#6

AW: Erkenne ob Post ein Update oder Insert war

  Alt 17. Mär 2017, 14:37
Leider kann ich den Weg mit if FMyQuery_Position.State=dsInsert then begin nur in BeforePost eingesetzt werden.
Wenn ich das in AfterPost prüfe, bekomme ich FMyQuery_Position.State=dsBrowse , was mir nicht mehr hilft...

Wie müsste ich denn einen DB-Trigger einsetzen? Das kenne ich nicht.

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:01 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