Hallo,
da liegt der Fehler darin, dass im Befehl...
rs.fields(1)
... die 1 als Feldname gesucht wird. Ich habe gehofft, dass die 1 als erstes Feld interpretiert wird.
Aber hier gibt es eine Abhilfe:
Sub TEST()
Dim Cn As New ADODB.Connection
Dim Server_Name As String
Dim Database_Name As String
Dim User_ID As String
Dim Password As String
Dim SQLStr As String
Dim rs As New ADODB.Recordset
Set rs = New ADODB.Recordset
Set Cn = New ADODB.Connection
Server_Name = "Server_XYZ" ' Servername hier eingeben
Database_Name = "Schilder" ' Datenbankname hier eingeben
User_ID = "XYZ" ' User_ID hier eingeben
Password = "abc" ' Passwort hier eingeben
SQLStr = "SELECT Schilder.SVG as Bild " & _
"FROM Sprachen INNER JOIN Schilder ON Sprachen.ID = Schilder.SprachenID" & _
" WHERE (Sprachen.Sprache = N'DE_DE') AND (Schilder.MasterID = 10005)"
Cn.Open "Driver={SQL Server};Server=" & Server_Name & ";Database=" & Database_Name & ";user id=" & User_ID & ";pwd=" & Password & ";"
rs.Open SQLStr, Cn, adOpenStatic
Dim strFilename As String
Dim iFile As Integer
iFile = FreeFile
strFilename = "C:\Schilder.svg"
Open strFilename For Output As iFile
If Not rs.EOF Then
' Testen, ob print die Daten korrekt schreibt:
Print iFile, rs.Fields("Bild").Value
' Testen, ob put die Daten korrekt schreibt:
' Put iFile, , rs.Fields("Bild").Value
End If
' Tidy up
rs.Close
Set rs = Nothing
Cn.Close
Set Cn = Nothing
Es wurden nur zwei Änderungen vorgenommen:
Im Select-Befehl wird das Feld benannt in "Bild". Dieser Feldname wird in rs.fields("Bild") wieder verwendet.
Nach der Übernahme sollten keine weiteren Fehler mehr auftreten.
LG, BigBen
|