![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: ZeosAccess
Problem mit JOIN
Hallo Delphianer,
ich hab hier ein Problem mit einem JOIN. Ich will Daten aus 2 Tabellen in einem Grid Darstellen und Bearbeiten Die Daten hole ich über eine Query mit
SQL-Code:
Das funktioniert auch soweit ganz gut.
SELECT * FROM Kunde K JOIN Bestellung B ON K.kdkey=B.kdkey;
Das Problem ist nur wenn ich Daten ändern will, bekomme ich eine Fehlermeldung, dass in einer zusammengesetzeten Datenmenge keine Änderungen gemacht werden können. Wie kann ich dies lösen? Oder muss ich es einfach über ein anderes SQL-Statment machen? Danke. Grüßle Sebastian |
Re: Problem mit JOIN
Verwende eine Updateobjekt (UpdateSQL) mit der Update-Anweisung.
|
Re: Problem mit JOIN
Kannst du hierzu ein Beispiel Posten, ich habe noch nie mit einem UpdateObjekt gearbeitet.
Danke |
Re: Problem mit JOIN
|
Re: Problem mit JOIN
Das heißt ich verwende dann eine Query um die Daten in dem DBGrid anzuzeigen und mit dem UpdateObjekt das der Query zugeordnet ist ändere ich dann den entsprechenden Datensatz.
Hab ich das soweit richtig verstanden? Wie kann ich dann jetzt wenn ich in dem Grid einen Datensatz ändere das mit dem UpdateObjekt in die DB schreiben? |
Re: Problem mit JOIN
Das UpdateSQL-Objekt wird über die Eigenschaft .UpdateObject mit dem Query verbunden
|
Re: Problem mit JOIN
Eine Alternative ist...
ZConnection->ZQuery->DataSetProvider->ClientDataSet->DataSource->DBGrid + im OnAfterPost + OnAfterDelete:
Delphi-Quellcode:
Dann kann über die Feldliste in der ZQuery für jedes Feld über die ProviderFlags entschieden werden ob diese nur lesend oder schreibend zur Verfügung stehen. Dort sind dann keine SQL-Anweisungen mit Parametern zu schreiben, dies geht (fast) wie von selbst.
if ApplyUpdates(0) = 0 then
ClientDataSet.Refresh; |
Re: Problem mit JOIN
Hmm wie gesagt, ich habe in die Richtung noch gar nie etwas gemacht. Aber die Lösung mit dem UpdateObject scheint mir für das was ich brauche richtig zu sein.
Wenn ich das jetzt verbunden habe muss ich dann nur noch den Updatestring in das Entsprechende Feld eintragen? Ich will nur ein Feld Updaten/Ändern wie muss ich das dann machen?? |
Re: Problem mit JOIN
Im Skript nur diese Feld ansprechen
SQL-Code:
update <Tabelle> set <Feld> = :<Feld>;
|
Re: Problem mit JOIN
Vielen Dank.
Funktioniert so wunderbar. Man lernt hier einfach immer wieder viel Dazu. Grüßle Sebastian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 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