Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem mit JOIN (https://www.delphipraxis.net/117046-problem-mit-join.html)

sebi87 10. Jul 2008 15:35

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:
SELECT * FROM Kunde K JOIN Bestellung B ON K.kdkey=B.kdkey;
Das funktioniert auch soweit ganz gut.

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

mkinzler 10. Jul 2008 15:52

Re: Problem mit JOIN
 
Verwende eine Updateobjekt (UpdateSQL) mit der Update-Anweisung.

sebi87 10. Jul 2008 16:19

Re: Problem mit JOIN
 
Kannst du hierzu ein Beispiel Posten, ich habe noch nie mit einem UpdateObjekt gearbeitet.

Danke

mkinzler 10. Jul 2008 16:22

Re: Problem mit JOIN
 
http://www.delphi-treff.de/tutorials...rebird/page/8/

sebi87 10. Jul 2008 16:36

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?

mkinzler 10. Jul 2008 17:03

Re: Problem mit JOIN
 
Das UpdateSQL-Objekt wird über die Eigenschaft .UpdateObject mit dem Query verbunden

omata 10. Jul 2008 17:15

Re: Problem mit JOIN
 
Eine Alternative ist...

ZConnection->ZQuery->DataSetProvider->ClientDataSet->DataSource->DBGrid

+

im OnAfterPost + OnAfterDelete:
Delphi-Quellcode:
if ApplyUpdates(0) = 0 then
  ClientDataSet.Refresh;
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.

sebi87 10. Jul 2008 17:46

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??

mkinzler 10. Jul 2008 17:52

Re: Problem mit JOIN
 
Im Skript nur diese Feld ansprechen
SQL-Code:
update <Tabelle> set <Feld> = :<Feld>;

sebi87 10. Jul 2008 18:06

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 20:32 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