![]() |
Datenbank: SQL Server • Version: 2005 • Zugriff über: ADO
Problem beim ADODataSet.Delete
Hallo,
ich hole mir Daten über eine ADODataSet die wiederum auf eine View (Verknüpfung zweier Tabellen) zugreift. In dieser View habe ich einen Instead of Delete Trigger, der bei einem Delete nur diesen Datensatz aus der einen Tabelle löschen soll. Nun möchte ich über ADODataSet.Delete einen Datensatz löschen, danach führe ich ein UpdateBatch aus. Der Datensatz wird auch gelöscht, allerdings in beiden Tabellen aus der View, was ich ja eigentlich durch den Trigger verhindern wollte. Was mache ich hier falsch ? Gruß Matthias |
Re: Problem beim ADODataSet.Delete
Guck dir doch mal mit dem Profiler an, welche Befehle der ADODataset tatsächlich an die SQL-Engine rausschickt...
|
Re: Problem beim ADODataSet.Delete
danke für den Tipp, leider finde ich den Profiler nicht bei SQL 2005, oder gibt es den dort nicht ?
Hab mir mal den SqlExpressProfiler aus dem Netz geladen. Dieser zeigt mir an, das ein Delete auf die eine Tabelle und danach auf die andere Tabelle gemacht wird. :gruebel: Also wenn das mit den DataSets so nicht funktioniert, kann man sich doch den Trigger sparen und den "eigentlichen" Delete-Befehl (aus dem Trigger) in eine separate StoredProc packen und diese dann ausführen ? Ich dachte, das Instead of Trigger dazu da sind, um genau dies zu umgehen ? Gruß Matthias |
Re: Problem beim ADODataSet.Delete
Schuld an diesem Verhalten ist die etwas luschige Art, in der die ADODataset gestrickt sind. Umgehen kannst du das bspw mit dem BetterADODataset, bei dem du die ADO-Property 'Unique Table' setzen kannst, oder indem du dich in den Event OnBeforeDelete hängst, dort das 'richtige' DELETE-Statement absetzt und den 'eingebauten' Vorgang anschliessend mit SysUtils.Abort abbrichst - oder überhaupt eine Routine schreibst, die du statt ADODatase.Delete aufrufst. Auf Datenbank-Ebene würde ich das nicht unbedingt lösen wollen.
|
Re: Problem beim ADODataSet.Delete
Zitat:
Ich kann aber die DataSet aus verschiedenen Gründen nicht nach dem Delete schliessen und wieder öffnen (auch kein refresh etc.) |
Re: Problem beim ADODataSet.Delete
Dann bleibt dir als einfache Lösung immer noch
![]() |
Re: Problem beim ADODataSet.Delete
ok danke erst einmal, werd mir das am Wochenende mal in Ruhe anschauen.
Gruß Matthias |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 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