AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Probleme bei Datenänderungen mit TQuery
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme bei Datenänderungen mit TQuery

Ein Thema von jryan · begonnen am 21. Okt 2004 · letzter Beitrag vom 27. Okt 2004
Antwort Antwort
jryan

Registriert seit: 25. Nov 2003
19 Beiträge
 
Delphi 7 Architect
 
#1

Probleme bei Datenänderungen mit TQuery

  Alt 21. Okt 2004, 08:32
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
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Probleme bei Datenänderungen mit TQuery

  Alt 21. Okt 2004, 12:35
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.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
jryan

Registriert seit: 25. Nov 2003
19 Beiträge
 
Delphi 7 Architect
 
#3

Re: Probleme bei Datenänderungen mit TQuery

  Alt 25. Okt 2004, 08:17
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:
  delete STM_VERTRAG
  where   VERTRAGS_ID   = :VERTRAGS_ID
Insert:
SQL-Code:
  insert   STM_VERTRAG( VERTRAGS_ID, VERTRAGSART, BEZEICHNUNG, BEGINN, ENDE, BEMERKUNG)
  values   ( :VERTRAGS_ID, :VERTRAGSART, :BEZEICHNUNG, :BEGINN, :ENDE, :BEMERKUNG)
Modify:
SQL-Code:
  update   STM_VERTRAG
  set   VERTRAGSART   = :VERTRAGSART,
   BEZEICHNUNG   = :BEZEICHNUNG,
   BEGINN      = :BEGINN,
   ENDE      = :ENDE,
   BEMERKUNG      = :BEMERKUNG
  where   VERTRAGS_ID   = :VERTRAGS_ID
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.
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
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Probleme bei Datenänderungen mit TQuery

  Alt 27. Okt 2004, 05:01
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:
delete STM_VERTRAG
  where VERTRAGS_ID = :OLD_VERTRAGS_ID
schreiben, um den "alten" Wert anzusprechen.
Albert
Live long and prosper


MrSpock
  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: Probleme bei Datenänderungen mit TQuery

  Alt 27. Okt 2004, 09:32
Zitat von jryan:
Delete:
SQL-Code:
  delete STM_VERTRAG
  where   VERTRAGS_ID   = :VERTRAGS_ID
Hallo,
muss das nicht heissen
SQL-Code:
  delete FROM STM_VERTRAG
  where   VERTRAGS_ID   = :VERTRAGS_ID
[/quote]

Gruß,
Tom
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:50 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