Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: ADO Fehlermeldung - "aus mehreren Schritten OLE DB-

  Alt 16. Jan 2006, 10:09
Auch wenn Du das Problem gelöst hast, solltest Du verstehen, wie ADO die Rückgaben vom SQL-Server interpretiert (weist Du ja vielleicht sogar schon).

Jedes Select erzeugt mindestens eine Meldung 'xy Rows affected', selbt bei einem "SELECT @foo = 1". ADO interpretierte diese Meldung nach einem INSERT/UPDATE/DELETE, ob die Operation überhaupt funktioniert hat. Deshalb sollte man IMMER in Triggern als erste Zeile ein 'Set nocount on' machen, damit nämlich die o.g. Meldung unterdrückt wird.
Nun ist die Welt in Ordnung: ADO macht z.B. ein INSERT (eine Zeile) und wartet auf die Meldung '1 rows affected'. Wenn das kommt, ist ADO zufrieden.

Wenn Du also INSERT-Trigger hast, gleich erstmal in 'set nocount on', 'set nocount off' klammern. Danach wird die ADO-Fehlermeldung vermutlich anders aussehen, vielleicht siehst Du dann sogar die richtige Fehlermeldung. Auf jeden Fall ist die Welt dann in Ordnung.

Ganz fies wird es bei 'updatable Views', bei denen das automatische Update/Insert/Delete durch einen 'Instead of'-Trigger ausgeschaltet ist ('CREATE TRIGGER foobar ON MyView INSTEAD OF INSERT...') Dann MUSST Du die o.g. Meldung irgendwie erzeugen, damit ADO weiss, das die Operation funktioniert hat.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat