Konvertierungsfehler beim ODBC Open

29. November 2011 14:21

Mein Problem:
Ich schreibe mit OBDC (Automation 'Microsoft ActiveX Data Objects 2.8 Library'.Connection) Datensätze vom Native zum SQL-Server, über Recordset.AddNew bzw. Update. Das funktioniert auch soweit, aber um da Primärschlüsselverletzungen zu verhindern möchte ich gerne prüfen, ob der Datensatz schon existiert. Dass man diese Eigenschaft beim SQL-Server abschalten kann, ist bekannt :-) , aber die nächste Software, die auf die Tabelle zugreift, erwartet eindeutige Werte in diesem Feld.

Leider blockt die dafür notwendige Leseaktion via SELECT schon vorher beim Open ab
Konvertierung2.jpg


Die Connection baue ich auf wie hier beschrieben.

Code:
ADOConnect.Mode := 1;  // Read Mode
ADOConnect.ConnectionString :=
  GetConnectionString('Server\Instanz','','user',
     'Passwort');
ADOConnect.Open(ADOConnect.ConnectionString);


Der Varchar-Wert ist zwar beim SQL-Server in der Tabelle vorhanden, aber eine Konvertierung in einen Integerwert habe ich nicht im Code. Wieso wird beim Open schon ein Satz gelesen?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Konvertierungsfehler beim ODBC Open

29. November 2011 14:54

Hallo Kai,

schau doch mal mit dem SQL-Server Profiler, was dein Programm da veranstaltet.

Gruß, Fiddi

Re: Konvertierungsfehler beim ODBC Open

29. November 2011 15:57

fiddi hat geschrieben:Hallo Kai,
schau doch mal mit dem SQL-Server Profiler, was dein Programm da veranstaltet.

Hallo Fiddi, kann ich leider nicht, da ich eine "Blindbetankung" vornehme :-) und sonst keinerlei Zugriff habe. Aber ich gebe deinen Tipp gerne an den Kunden weiter.

Re: Konvertierungsfehler beim ODBC Open

28. März 2012 13:33

Wird scheinbar ausgelöst durch diesen Bug in SQL 2008:
https://connect.microsoft.com/SQLServer ... cal-errors