Hallo,
entschuldigt bitte, dass ich einen neuen Thread zu diesem Thema aufmache, aber das Problem ist allgemeiner geworden, so dass es sich nicht mehr nur auf Views bezieht.
Mein Problem wurde netterweise hier schon ein wenig diskutiert:
<a href="/webx?50@@.1dd05551">Stephan Schneider "VIEW with view_metadata?" 27.08.2003 18:25</a>
Nachdem ich die Seiten im ADO-Buch von Herrn Kosch durchgearbeitet habe, ist mir einiges klarer, dennoch: Ein Blick in den Profiler des SQL-Servers verwirrt mich was meine Problematik noch mehr:
(1) Mein INSERT-Trigger für den View ermittelt die Primärschlüsselwerte für die darunterliegeneden Basistabellen selbst. Im Client (Delphi) habe ich bis dato einen Dummy-Wert übergeben. Dies hat den Server bei einem anschließenden UPDATE-Versuch aus dem Konzept gebracht (daher die Fehlermeldung), da der PK-Wert, den der Client hatte natürlich nicht mit dem PK-Wert, den der Server generiert hat übereinstimmt. Simuliere ich den echten PK-Wert im Client und weise diesen dann dem persistenten Feld zu, können INSERT und UPDATE-Anweisungen mit dem View durchgeführt werden.
(2) Das DELETE funktioniert aber seltsamerweise immer noch nicht, obwohl laut Profiler die Daten innerhalb der WHERE-Klausel (beim SQL-DELETE-Statement) richtig sind. Schließe ich die Datenmenge und öffne sie erneut, ist der Datensatz gelöscht. Laut Aussage im Buch von Herrn Kosch, erntet man die Fehlermeldung <i>Die zum Aktualisieren angegebene Zeile wurde nicht gefunden. Einige Werte wurden seit dem letzten Lesen ggf. geändert</i> deshalb, weil logischerweise die Daten, die der Client besitzt, veraltet sind. Operationen können aber nicht durchgeführt werden, da es innerhalbd er WEHERE-Klausel keine Übereinstimmig mit den echten, d.h. auf dem Server befindlichen Datensatz gibt. Wieso ist der Datensatz aber nach einem erneuten Öffnen der Datenmenge tatsächlich gelöscht? Entweder kann er löschen oder(!) ich bekomme diese Fehlermeldung, aber doch nicht beides auf einmal?
Stephan
entschuldigt bitte, dass ich einen neuen Thread zu diesem Thema aufmache, aber das Problem ist allgemeiner geworden, so dass es sich nicht mehr nur auf Views bezieht.
Mein Problem wurde netterweise hier schon ein wenig diskutiert:
<a href="/webx?50@@.1dd05551">Stephan Schneider "VIEW with view_metadata?" 27.08.2003 18:25</a>
Nachdem ich die Seiten im ADO-Buch von Herrn Kosch durchgearbeitet habe, ist mir einiges klarer, dennoch: Ein Blick in den Profiler des SQL-Servers verwirrt mich was meine Problematik noch mehr:
(1) Mein INSERT-Trigger für den View ermittelt die Primärschlüsselwerte für die darunterliegeneden Basistabellen selbst. Im Client (Delphi) habe ich bis dato einen Dummy-Wert übergeben. Dies hat den Server bei einem anschließenden UPDATE-Versuch aus dem Konzept gebracht (daher die Fehlermeldung), da der PK-Wert, den der Client hatte natürlich nicht mit dem PK-Wert, den der Server generiert hat übereinstimmt. Simuliere ich den echten PK-Wert im Client und weise diesen dann dem persistenten Feld zu, können INSERT und UPDATE-Anweisungen mit dem View durchgeführt werden.
(2) Das DELETE funktioniert aber seltsamerweise immer noch nicht, obwohl laut Profiler die Daten innerhalb der WHERE-Klausel (beim SQL-DELETE-Statement) richtig sind. Schließe ich die Datenmenge und öffne sie erneut, ist der Datensatz gelöscht. Laut Aussage im Buch von Herrn Kosch, erntet man die Fehlermeldung <i>Die zum Aktualisieren angegebene Zeile wurde nicht gefunden. Einige Werte wurden seit dem letzten Lesen ggf. geändert</i> deshalb, weil logischerweise die Daten, die der Client besitzt, veraltet sind. Operationen können aber nicht durchgeführt werden, da es innerhalbd er WEHERE-Klausel keine Übereinstimmig mit den echten, d.h. auf dem Server befindlichen Datensatz gibt. Wieso ist der Datensatz aber nach einem erneuten Öffnen der Datenmenge tatsächlich gelöscht? Entweder kann er löschen oder(!) ich bekomme diese Fehlermeldung, aber doch nicht beides auf einmal?
Stephan
Comment