Der folgende Beispielcode unerwartet erwartet ausfällt einen Fehler zurückgibt, bei der Ausführung von zwei SQL-Anweisungen durch eine adodb Verbindung in VBAMehrere SQL-Anweisungen zusammen geführt funktionieren nicht wie
Dim conn As ADODB.Connection
Set conn = return_connection(server:="Database")
test_statement = "Select (1) if 1=1 THROW 50001, 'Error description', 1;"
conn.Execute (test_statement)
jedoch die unten Anweisung ausgeführt wird, statt
Dim conn As ADODB.Connection
Set conn = return_connection(server:="Database")
test_statement1 = "Select (1)"
test_statement2 = "if 1=1 THROW 50001, 'Error description', 1"
conn.Execute (test_statement1)
conn.Execute (test_statement2)
Funktioniert einwandfrei.
Zusätzlich wenn ich kopieren und
Select (1) if 1=1 THROW 50001, 'Error description', 1;
in SQL Manager einfügen es funktioniert genau so, wie ich den problematischen Code erwartet zu tun: tut eine Auswahl und dann wirft einen Fehler.
Kann mir das jemand erklären?
Offensichtlich ist die offensichtliche "Lösung", verschiedene Anweisungen zu trennen, die getrennt in VBA ausgeführt werden, was ich von nun an tun werde.
Allerdings verstehe ich anscheinend nicht etwas Grundlegendes darüber, wie Adodb mit SQL funktioniert, also würde ich gerne wissen, was dieses Verhalten verursacht. Zusätzlich habe ich nicht triviale multiple SQL-Anweisungen, die verkettet und dann über Adodb-Verbindungen in SQL übergeben werden, also würde ich gerne wissen, wann das so ist und wann ich Code neu aufbauen muss.
Leider funktioniert die ADODB SQL-Code-Schwelle nicht wie erwartet mit dem Semikolon, zumindest an meinem Ende. Ich untersuche Stored Procedures und entferne mich generell von der Verwendung von VBA zum Speichern und Triggern von komplexem SQL - aber leider bin ich durch andere Faktoren daran gehindert, dies für den Moment zu verwenden – Eladriol