Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi UpdateSQL (https://www.delphipraxis.net/79907-updatesql.html)

bisenegger 30. Okt 2006 20:10

Datenbank: Pervasive SQL • Version: 9.5 • Zugriff über: PDAC

UpdateSQL
 
Hallo zusammen

Irgendwie hab ich ein Brett vor dem Kopf und die Funktion von TUpdateSQL (bzw. TPvUpdate für PDAC) gar nicht begriffen.

In einem Form habe ich Adressen.Query1 zum Oeffnen einer View.
Nach dem Oeffnen werden die Daten im Adressen.DBGrid1 angezeigt.

Wenn ich nun mit dem Cursor auf dem Datensatz stehe, öffne ich mit Linksclick ein Kontextmenu.
Im Kontextmenu wähle ich Datensatz ändern.

Dies offnet mir ein neues Fenster (Form Adressmaske) mit AdressMaske.DBEdit(x)-Komponenten welche mit dem Adressen.Datasource1 verbunden sind.

Nun mache ich hier meine Aenderungen aber wie werden Sie nun in die Datenbank geschrieben?

Ich wollte bewusst auf das "alte Edit und Post" verzichten.

In der Hilfe zu Turbo Borland Delphi fängt das grosse Schweigen an wo es interssant wird.
Ich habe mit ExecSQL, Append etc experimentiert, aber es geht einfach nicht (div. Fehler oder keine Aenderung der Daten).

Im Internet habe ich bisher kein schlaues Beispiel entdeckt.

Kann mir jemand auf die Sprünge helfen?
UpdateSQL1.ModifySQL / DeleteSQL / InsertSQL sind definiert und SQL-fehlerfrei.

Meine Kernfrage wie löst man das zurückschreiben der Daten aus, und braucht es zum "vorbereiten" der Daten auch noch etwas wie füher Edit/Post?

Gibt es ein gutes Beispielprogramm?

Besten Dank
Beni

mkinzler 30. Okt 2006 20:18

Re: UpdateSQL
 
TUpdateSQL simuliert das alte .Append/.Edit + .Post. Dh. Bei Query.Insert wird die InsertSQL-Abfrage ausgeführt, usw.

bisenegger 31. Okt 2006 07:50

Re: UpdateSQL
 
Zitat:

Zitat von mkinzler
TUpdateSQL simuliert das alte .Append/.Edit + .Post. Dh. Bei Query.Insert wird die InsertSQL-Abfrage ausgeführt, usw.

Besten Dank, aber irgendwie klemmt es weiter.

Ich habe nun im Ereignis Datasource1.OnDataChance Adressen.UpdateSQL1.ExecSQL(ukModify) aufgerufen, nun will er die Typen der Parameter :Name, etc. nicht kennen.
Ich war einmal der Meinung, dass die Parameter zur Laufzeit von Delphi selbst erzeugt werden.

Ich bin mir auch nicht sicher, ob "Adressen.UpdateSQL1.ExexSQL(ukModify) der richtige Ansatz ist.

Query.Insert ist zum Einfügen von Datensätzen denke ich, und löst bei mir eh einen Runtime-Error aus.

Es ist kaum zu glauben, dass es in der Doku und im Internet kein Beispiel zu TUpdateSQL gibt.

Vielleicht hat jemand ein kleines Projekt, an dem ich das Ganze mal nachvollziehen kann.

In guter Hoffnung auf eine gute Lösung
B. Isenegger

mkinzler 31. Okt 2006 08:04

Re: UpdateSQL
 
In der UpdateSQL-Komponente wird direkt gar nichts aufgerufen. Wie gesagt dient diese Komponente dazu, einem Query wie eine Table zu behandeln, falls die datenbank dahinter kein updateable View beherrscht.
Die UpdateSQL-Komponentw wird mit der Eigenschaft .UpdateObject mit dem Query verbunden.
Du rufst Query.Edit auf änderst die Werte und beim Query.Post wird dann die .UpdateSQL-Abfrage des Updateobjektes aufgerufen.

raiguen 31. Okt 2006 13:15

Re: UpdateSQL
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin :-)
Das UpdateSQL-Objekt ist in der Tat eine etwas 'komplizierte' Geschichte und die Hilfe ist nicht weniger verwirrend :roll: . Habe mich von daher in meinen Projekten nicht weiter mit befasst und die entsprechenden Aktionen (Delete, Insert, Modify) mit jeweils eigenständigen SQL's realisiert.
Ich kann nicht so den Vorteil für das UpdateSQL erkennen...
Nun, ich habe mal ein kleines Demo-Programm zusammengekloppt, zum besseren Verständnis bzgl. der Parameter sowie der Methoden .Apply() und .ExecSQL. Vielleicht hilft's ja ein wenig.... Ansonsten halt mal per PN nachfragen... (Demo ist mit D5E und ner schnöden ParadoxTabelle erstellt)

bisenegger 2. Nov 2006 06:37

Re: UpdateSQL
 
Zitat:

Zitat von raiguen
Nun, ich habe mal ein kleines Demo-Programm zusammengekloppt, zum besseren Verständnis bzgl. der Parameter sowie der Methoden .Apply() und .ExecSQL. Vielleicht hilft's ja ein wenig....

Das kleine Demo-Programm zu UpdateSQL hilft nun auch bei mir für klare Sicht ;-)


Besten Dank!
Als neues Forumsmitglied bin ich erstaunt über die sehr gute "Qualität" quer durch's Forum.

mfg Isenegger Bernhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:40 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