Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Werte in Query ändern und committen (https://www.delphipraxis.net/184564-werte-query-aendern-und-committen.html)

hoika 7. Apr 2015 20:59

AW: Werte in Query ändern und committen
 
Hallo,

egal, wie die Lese-Query Q1 aussieht (Join oder 3 oder 100 Tabellen),
das Update erfolgt einfach über eine separate Query Q2!

Erweitere Q1 um die benötigten Primary Keys der benötigten Update-Tabellen
und tipper die DB-Update über die Query Q2 selber zusammen.

PS:
Hoffentlich zeigst du die Daten von Q1 nicht in einem TDBGrid an
und erwartest jetzt "Inplace-Edit".


Heiko

Dejan Vu 8. Apr 2015 05:49

AW: Werte in Query ändern und committen
 
Eine alternative Vorgehensweise könnte darin bestehen, die Daten in einer View bereitzustellen und die Daten über einen UPDATE-Trigger auf der View auf die einzelnen Tabellen zu verteilen. Aus Sicht der Anwendung kann man dann mit den üblichen Verdächtigen (TxxTable, TxxQuery) arbeiten. Ein weiterer Vorteil ist, das man die Tabellenstruktur nachträglich optimieren kann, ohne die Anwendung verändern zu müssen (OCP).

Wäre das RDBMS z.B. MS SQL-Server, könnten Updates direkt auf der View ausgeführt werden. Einige Provider (also der TxxQuery-Anbieter) können Updates auch auf einer Query ('SELECT * FROM A JOIN B ON xxxx') durchführen. Bei beiden Verfahren muss die Query natürlich bestimmten Anforderungen genügen (keine Aggregate, Konstanten, IIF etc.)

Ich persönlich würde aus Transparenzgründen zu einer Updatable View tendieren. Die Tabellenlogik (DDL und DML) ist dann komplett im RDBMS kodiert: Es gibt nur ein Interface (die View).

messie 12. Apr 2015 16:07

AW: Werte in Query ändern und committen
 
Moin,

Hoika hat es richtig gesehen. Ich habe jetzt die Daten mit einem zweiten Query und neuem Zeitstempel inserted.

Damit habe ich einen kumulierten Verlauf der bei Nachmessungen (die vorhandene Werte überschreiben) rückführbar ist.

Danke für Eure Hilfe, Messie


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:53 Uhr.
Seite 2 von 2     12   

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