¿Cómo cargar una imagen en el control de imagen de MS-Access desde el campo de juego de registros ADO?

Utilizando:

MS-Access 2013 SP1 x86MS-SQL Server 2012 SP1 CU8 x64Conexión a través de ODBC DSN, controlador SQL ServerUpScene Database Workbench Pro v4.4.4 Pro para MS-SQL Server

La aplicación My Access 2013 usa SQL Server 2012 como la base de datos backend con ODBC. Estoy usando VBA / ADO para leer / escribir datos en la base de datos.

Hasta ahora no he tenido éxito en recuperar una imagen de la base de datos y asignarla a un control de imagen en un formulario de Access. La imagen se almacena en una tabla de SQL Server (como un campo VARBINARIO (MAX)).

En el punto en el que asigno el campo al control de imagen, aparece un error de tiempo de ejecución: "No hay coincidencia de tipo". La imagen almacenada en la base de datos como una imagen de mapa de bits. Intenté con Jpeg antes, pero fue el mismo error. ¿Como puede ésto ser resuelto?

Definición de tabla de SQL Server y definición de procedimiento almacenado:

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
    )
)

Acceda a los procedimientos para recuperar la imagen:

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta