Wie lade ich ein Bild aus dem ADO-Recordset-Feld in das MS-Access Image-Steuerelement?

Verwenden von:

MS-Access 2013 SP1 x86MS-SQL Server 2012 SP1 CU8 x64Verbindung über ODBC DSN, SQL Server-TreiberUpScene Database Workbench Pro v4.4.4 Pro für MS-SQL Server

Meine Access 2013-Anwendung verwendet SQL Server 2012 als Back-End-Datenbank mit ODBC. Ich verwende VBA / ADO, um Daten in die Datenbank zu lesen / schreiben.

Es ist mir bisher nicht gelungen, ein Bild aus der Datenbank abzurufen und es einem Bildsteuerelement in einem Access-Formular zuzuweisen. Das Image wird in einer SQL Server-Tabelle (als VARBINARY (MAX) -Feld) gespeichert.

An dem Punkt, an dem ich das Feld dem Image-Steuerelement zuordne, tritt ein Laufzeitfehler auf: "Typenkonflikt". Das in der Datenbank gespeicherte Bild als Bitmap-Bild. Ich habe es früher mit Jpeg versucht, aber es war der gleiche Fehler. Wie kann das gelöst werden?

SQL Server-Tabellendefinition und Definition gespeicherter Prozeduren:

CREATE TABLE dbo.tbPhoto (
    row_id Int IDENTITY NOT NULL,
    student_id Int NOT NULL,
    picture VarBinary(max),
    date_updated DateTime NOT NULL,
    date_created DateTime NOT NULL, 
    CONSTRAINT PK_tbPhoto PRIMARY KEY CLUSTERED (
      row_id
    )
)

Zugriffsverfahren zum Abrufen des Bildes:

Private Sub load_studentdetails(AStudentID As Integer)
 On Error GoTo errhnd

 objStudent.GetStudentDetails AStudentID, StudentDetailsRS

 Set Me.fmStudentReg_DtlA.Form.Recordset = StudentDetailsRS
' Me.fmStudentReg_DtlA.Form.Requery

 objStudent.GetStudentPicture AStudentID, Me.fmStudentReg_DtlA!imgStudentPic

 Exit Sub
errhnd:
 MsgBox "Error: " & Err.Description
End Sub

Public Sub GetStudentPicture(AStudentID As Integer, ByRef APicture As Image)
 On Error GoTo errhnd

 Dim rs As New ADODB.Recordset
 Set cmd.ActiveConnection = GetDBConnection

 cmd.CommandType = adCmdStoredProc
 cmd.CommandText = "dbo.StudentPicture_S"

 cmd.Parameters.Refresh
 cmd(1) = AStudentID

 rs.CursorLocation = adUseClient
 rs.Open cmd

 Set APicture = rs("picture")  '<-----Raises the error: "Type mismatch"

 Exit Sub
errhnd:
 MsgBox "Error: " & Err.Description

End Sub

Antworten auf die Frage(1)

Ihre Antwort auf die Frage