![]() |
Probleme bei Datenänderungen mit TQuery
Hallo allerseits!
Eigentlich dachte ich bisher ich habe das DB-Handling der BDE verstanden aber aktuell beisse ich mir die Zähne an einem eigentlich recht simplen Problem aus und hoffe mir kann irgendjemand helfen. Also zu meinem Problem: In einer bestehden Delphi5-Applikation, welche über die BDE auf eine SYBASE-Datenbank zurückgreift soll eine einfache Maske zur Pflege von Stammdaten eingebaut werden. Diese Maske wollte ich eigentlich, um den Programmieraufwand so gering wie möglich zu gestalten weitestgehend von den Delphi-BDE-Komponenten "steuern" lassen. Die Daten werden per TQuery aus der Datenbank gezogen und die Steuerung soll per TDBNavigator erfolgen. Zur Speicherung von eventuellen Veränderungen bzw. neuen Datensätzen habe ich an das TQuery-Object ein TUpdateSQL gebunden, in welchen ein "delete ...", "update ..." und "insert ..."-Statement definiert sind, welche auf der Sybase-Konsole ohne Probleme gehen. Soweit so gut. In der bestehenden Version kann ich auch ohne Probleme Datensätze zufügen und ändern. Beim löschen dann allerdings bekomme ich beim Aufruf von ApplyUpdates die Exception "Tabelle ist schreibgeschützt" und bei der Kontrolle per SQLMonitor kann ich erkennen, das er zwar mein SQL-Statement abschickt aber alle Parameter mit NULL belegt, obwohl die WHERE-Klausel eine direkte Kopie aus dem sauber funktionierenden UPDATE-Statement ist. Wie bekomme ich nun das Programm dazu ohne alzu grossen aufwwand dazu mein DELETE doch sauber auszuführen? MfG -jryan |
Re: Probleme bei Datenänderungen mit TQuery
Hallo jryan,
wie sieht denn dein Delete SQL Statement aus? Der Effekt ist schon komisch, da TUpdateSQL gerade für ansonsten schreibgeschützte Datenmengen eine Möglichkeit bieten soll, die Tabelle zu bearbeiten. |
Re: Probleme bei Datenänderungen mit TQuery
Hallo MrSpock!
Ich hatte leider die letzten Tage dann plötzlich eine andere Aufgabe die unbedingt zwischen durch erledigt werden musste, so dass ich erst heute hier wieder rein geschaut habe! Also meine SQL-Statements sind folgende: Delete:
SQL-Code:
Insert:
delete STM_VERTRAG
where VERTRAGS_ID = :VERTRAGS_ID
SQL-Code:
Modify:
insert STM_VERTRAG( VERTRAGS_ID, VERTRAGSART, BEZEICHNUNG, BEGINN, ENDE, BEMERKUNG)
values ( :VERTRAGS_ID, :VERTRAGSART, :BEZEICHNUNG, :BEGINN, :ENDE, :BEMERKUNG)
SQL-Code:
PRIMARY KEY der Tabelle ist das Feld VERTRAGS_ID und sowohl das INSERT- als auch das UPDATE-Statement lassen sich beim SQL-Monitor eindeutig indentifizieren (zusätzliche Kommentare). Achso zur Info, die Tabelle STM_VERTRAG ist die Basistabelle (FOREIGN KEY) für eine weitere Tabelle. Die Daten dieser Tabelle lasse ich in der selben Maske darstellen und nutze die Delphi-Synchronisation (Datasource-Eigenschaft der abhängigen Tabelle verweist auf STM_VERTRAG). Im endgültigen Delete Statement muss ich also auch noch das löschen dieser abhängigen Tabelle unterbringen. Allerdings habe ich jetzt im Rahmen der Test immer nur versucht DS zu löschen, wo der Schlüssel nicht in der abhängigen Tabelle in Benutzung war.
update STM_VERTRAG
set VERTRAGSART = :VERTRAGSART, BEZEICHNUNG = :BEZEICHNUNG, BEGINN = :BEGINN, ENDE = :ENDE, BEMERKUNG = :BEMERKUNG where VERTRAGS_ID = :VERTRAGS_ID Ich hoffe ich konnte jetzt alles vernünftig erklären und irgendjemand kann mir helfen. Ansosnsten bleibt mir wohl nichts anderes übrig und ich muss das komplette Handling der Datensätze doch wieder "händisch" programmieren! MfG -jryan |
Re: Probleme bei Datenänderungen mit TQuery
Hallo jryan,
gibt es unter Sybase auch bei den Parametern die Möglichkeit, den unvereänderten "alten" Wert aus der Tabelle anzusprechen? In Firebird würde ich
SQL-Code:
schreiben, um den "alten" Wert anzusprechen.
delete STM_VERTRAG
where VERTRAGS_ID = :OLD_VERTRAGS_ID |
Re: Probleme bei Datenänderungen mit TQuery
Zitat:
muss das nicht heissen
SQL-Code:
[/quote]
delete FROM STM_VERTRAG
where VERTRAGS_ID = :VERTRAGS_ID Gruß, Tom |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08: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