Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Query aus 2 Tabellen updaten ? (https://www.delphipraxis.net/53486-query-aus-2-tabellen-updaten.html)

Emilio 17. Sep 2005 13:46

Datenbank: DBISAM • Version: 4.17 • Zugriff über: DBISAM

Query aus 2 Tabellen updaten ?
 
Tach allerseits,

ich habe ein query, dass mit Daten aus 5 Tabellen vereint und mit ORDER BY ... endet. Soweit so schön. Doch nun könnte ja man auf die Idee kommen, die Daten ändern zu müssen. Bei 2en davon auf jeden Fall, die anderen 3 sind lediglich "Nachschlage-Tabellen".
Wie macht man denn sowas? und grundsätzliche Frage: Query updaten (ich dachte immer, sowas tut man doch nicht - hab aber hier im Forum gelesen, dass es doch empfohlen wurde) oder tables nacheinander updaten?

VG Emilio

alzaimar 17. Sep 2005 15:24

Re: Query aus 2 Tabellen updaten ?
 
Versuche, eine View zu erstellen (CREATE VIEW). Laut SQL-Standard sind Views update-fähig. Ich kenn DBISAM nicht, der Name (ISAM) deutet allerdings nicht auf eine DB nach dem SQL-Standard hin...

Wenn das nicht klappt, überlass das Updaten ADO. Manchmal kommen ganz brauchbare Ergebnisse raus, manchmal aber auch nicht. :mrgreen:
Im schlimmsten Fall stellst Du die Joins eben mit verschiedenen Tabellen in Delphi nach und updatest per Hand.

Emilio 17. Sep 2005 19:08

Re: Query aus 2 Tabellen updaten ?
 
Aha!,

mit "VIEW" oder "CREATE VIEW" habe bei DBISAM nichts gefunden. Wenn ich ADO oder ODBC lese krieg ich eh die Krise, dass lass ich mal lieber.

Ich denke ich versuchs mal zu Fuß: aus der DBLookupCombobox müsste man doch den die Tabellen verknüpfenden key, des Datensatzes der gerade ausgewählt wurde, auslesen können und die tables mit sql-statements zu Fuß updaten.

Falls jemand einen ganz anderen Ansatz hat ...

ich freue mich davon zu lesen


VG Emilio

alzaimar 17. Sep 2005 21:19

Re: Query aus 2 Tabellen updaten ?
 
Wieso kriegst Du ne Krise bei ADO und ODBC? Ich verwende das seit Jahren. Für sowas wie Du das brauchst, reicht das allemal.

Jelly 17. Sep 2005 22:25

Re: Query aus 2 Tabellen updaten ?
 
Zum Updaten von Nicht-update fähigen Queries (und das hat imho nichts mit Erstellen einer View zu, die immer updatefähig ist, denn das ist schlicht und einfach falsch), kann man die TUpdateSQL Komponente nutzen, die für den Insert, Update und Delete Befehl einen eigenen SQL befehl angegeben werden kann.

GuenterS 29. Sep 2006 09:18

Re: Query aus 2 Tabellen updaten ?
 
Zitat:

Zitat von Jelly
Zum Updaten von Nicht-update fähigen Queries (und das hat imho nichts mit Erstellen einer View zu, die immer updatefähig ist, denn das ist schlicht und einfach falsch), kann man die TUpdateSQL Komponente nutzen, die für den Insert, Update und Delete Befehl einen eigenen SQL befehl angegeben werden kann.

Hi!

Diese TUpdateSQL Komponente ist ja eine Komponente für die BDE, wie sollte man dieses Problem mit ADO lösen?

hoika 29. Sep 2006 09:40

Re: Query aus 2 Tabellen updaten ?
 
Hallo,

wie du es schon angedeutet hast,
packe die Primär-Felder der einzelnen Tabellen
mit in die Query, und aktualsiere die Tabellen einzeln

Falls du die Query direkt anzeigst (DBGrid),
kannst du die entsprechenden Spalten ja unvisible machen.

Heiko

peteress 1. Nov 2006 12:02

Re: Query aus 2 Tabellen updaten ?
 
Zitat:

Zitat von hoika
Hallo,

wie du es schon angedeutet hast,
packe die Primär-Felder der einzelnen Tabellen
mit in die Query, und aktualsiere die Tabellen einzeln

Falls du die Query direkt anzeigst (DBGrid),
kannst du die entsprechenden Spalten ja unvisible machen.

Heiko

Das beatnwortet aber nicht die Frage. T(IB)Updatesql ist ja einfach die Stelle, wo ich den Updatecode (insertcode..) hinschreibe.

Warum gibt es dies nicht bei Ado, dbexpress, dbgo. Was tritt an die Stelle dieses Updatecodes im Tupdatesql? Welches Event ist vorgesehen um den eigenen update (...) Code aufzurufen. Wie komme ich dort am einfachsten an die Upzudatenden Records, Felder und deren Werte. Wie teste ich den Erfolg und informiere das Dataset über das erfolgreiche update.

Also, entweder das ist bis jetzt sehr unbefriedigend gelöst, oder ich kenne den von Borland und vielleicht auch MS vorgesehen Weg einfach nicht. Umherirren in der Hilfe hat mich bis jetzt auch nciht schlauer gemacht. Mich würde da ganz allgemein mal interessieren, wer das wie löst.

Peter

hoika 1. Nov 2006 12:11

Re: Query aus 2 Tabellen updaten ?
 
Dann mach halt das Update über die einzelnen Tabellen.


Heiko

peteress 1. Nov 2006 12:33

Re: Query aus 2 Tabellen updaten ?
 
Zitat:

Zitat von hoika
Dann mach halt das Update über die einzelnen Tabellen.

Das ist doch nicht die Frage. Es geht um die Verwendung der vorhandenenen Komponenten, nicht darum alles von Hand neu zu machen. Der updatecode (auch ein update für jede Tabelle) muss doch aufgerufen werden.

- Welches Event ist dafür vorgesehen?
- Wie erfolgt hier am effizientesten der Zugriff auf die geänderten Werte?
- Wie erfährt das Dataset, dass die Werte in die Datenbank geschrieben wurden, damit es das nicht immer wieder versucht und es dann knallt.

Wird die Vorgehensweise für Views die nach SQL92 Readonly sind in der Hilfe beschrieben, undich hab es nur nicht gesehen, kennt jemand andere Paper zu dem Thema, oder ganz einfach, was oder welche Vorgehensweise ersetzt die Komponente T(IB)Updatesql bei den zugriffstechnologien, bei denen diese nicht zur Verfügung steht.
Gemeint ist nicht, schreibe alle Daten in Stringgrids und mache dann alles von Hand.


Peter


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:04 Uhr.
Seite 1 von 2  1 2      

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