Hallo,
freut mich auch, dass es so weit gekommen ist, zumal ich ja selbst keinen sql-Server zum Testen habe. Beruflich hatte ich viele Jahre mit einem MS SQL Server zu tun gehabt. Solange das Wissen noch einigermaßen aktuell ist, gebe ich es gerne weiter.
Sub Beispiel_Anfrage_SQL_Server() 'Code von https://social.msdn.microsoft.com/Forums/de-DE/a73a838b-ec3f-419b-be65-8b1732fbf4d0/connect-to-a-remote-sql-server-db?forum=isvvba
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 arrPicture() As Byte, lSize As Long
Dim strFilename As String
Dim iFile As Integer
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
' Auslesen des Bildes
If Not rs.EOF Then
lSize = rs.Fields("Bild").ActualSize
ReDim arrPicture(lSize)
arrPicture = rs.Fields("Bild").GetChunk(lSize) ' Testen, ob dieser Befehl geeignet ist
'arrPicture = rs.Fields("Bild") ' Oder dieser Befehl?
' Schreiben des Bildes
iFile = FreeFile()
strFilename = "C:\Schild.svg"
Open strFilename For Binary As #iFile
Put #iFile, , arrPicture
Close #iFile
End If
' Tidy up
rs.Close
Set rs = Nothing
Cn.Close
Set Cn = Nothing
End Sub
Beim GetChunk-Befehl bin ich mir nicht ganz klar, ob es so funktioniert. Falls es fehlschlagen sollte, nimm einfach den Befehl darunter.
LG, BigBen
|