AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Query aus 2 Tabellen updaten ?
Thema durchsuchen
Ansicht
Themen-Optionen

Query aus 2 Tabellen updaten ?

Ein Thema von Emilio · begonnen am 17. Sep 2005 · letzter Beitrag vom 1. Nov 2006
Antwort Antwort
Seite 1 von 2  1 2      
Emilio

Registriert seit: 14. Dez 2003
65 Beiträge
 
#1

Query aus 2 Tabellen updaten ?

  Alt 17. Sep 2005, 14:46
Datenbank: DBISAM • Version: 4.17 • Zugriff über: DBISAM
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
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Query aus 2 Tabellen updaten ?

  Alt 17. Sep 2005, 16:24
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.
Im schlimmsten Fall stellst Du die Joins eben mit verschiedenen Tabellen in Delphi nach und updatest per Hand.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Emilio

Registriert seit: 14. Dez 2003
65 Beiträge
 
#3

Re: Query aus 2 Tabellen updaten ?

  Alt 17. Sep 2005, 20:08
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
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Query aus 2 Tabellen updaten ?

  Alt 17. Sep 2005, 22:19
Wieso kriegst Du ne Krise bei ADO und ODBC? Ich verwende das seit Jahren. Für sowas wie Du das brauchst, reicht das allemal.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Query aus 2 Tabellen updaten ?

  Alt 17. Sep 2005, 23:25
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.
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Query aus 2 Tabellen updaten ?

  Alt 29. Sep 2006, 10:18
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?
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Query aus 2 Tabellen updaten ?

  Alt 29. Sep 2006, 10:40
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
Heiko
  Mit Zitat antworten Zitat
peteress

Registriert seit: 6. Sep 2004
49 Beiträge
 
#8

Re: Query aus 2 Tabellen updaten ?

  Alt 1. Nov 2006, 13:02
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
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Query aus 2 Tabellen updaten ?

  Alt 1. Nov 2006, 13:11
Dann mach halt das Update über die einzelnen Tabellen.


Heiko
Heiko
  Mit Zitat antworten Zitat
peteress

Registriert seit: 6. Sep 2004
49 Beiträge
 
#10

Re: Query aus 2 Tabellen updaten ?

  Alt 1. Nov 2006, 13:33
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
  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 23:36 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