Ich rufe mit folgendem Code eine stored Prozedur auf dem SQL-Server auf.
Der Code nimmt ausgehend von den Parametern eine Datei, fügt sie einer FILESTREAMTABLE hinzu und löscht die QUelldatei.
EInige ZUsatzschritte, dei den ABlauf dokumentieren sind auch noch dabei.
Sub DokAnfuegen(Fallnr As Long, filename As String, srcfile As String, subject As String) Dim db As DAO.Database Dim DokAnfuegen As DAO.QueryDef Dim sqlstr As String Set db = CurrentDb Set DokAnfuegen = db.CreateQueryDef("") sqlstr = "EXEC dbo.DokumentERfassen " & Fallnr & "," & _"'" & filename & "', '" & _ srcfile & "', " & _"'" & subject & "'" Debug.Print "DokAnfuegen sqlstr= "; sqlstr With DokAnfuegen .Connect = "ODBC;DRIVER=SQL Server;SERVER=GALILEO2010;DATABASE=Gutachten;Trusted_Connection=yes" .SQL = sqlstr .ReturnsRecords = False .Parameters.Refresh Debug.Print .Parameters(1).Name .Execute End With End Sub
Der zusammengebaute sqlstr funktioniert (und damit die Prozedur), wenn ich ihn im SQL Management Studio separat ausführen lasse.
Dennoch kommt im VBA-Code bei .Execute der Fehler 3146. Auch die Zeile mit Ausdurck des ersten Parameternamens schlägt fehl.
Ich schätze, da ist ein grundlegender Fehler schon beim Connect zur Datenbank.