Como carregar imagem no controle MS-Access Image do campo ADO recordset?
Usando:
MS-Access 2013 SP1 x86MS-SQL Server 2012 SP1 CU8 x64Conexão via DSN ODBC, driver do SQL ServerBanco de Dados UpScene Workbench Pro v4.4.4 Pro para MS-SQL ServerO aplicativo My Access 2013 usa o SQL Server 2012 como banco de dados back-end com ODBC. Estou usando o VBA / ADO para ler / gravar dados no banco de dados.
Até agora, não obtive êxito ao recuperar uma imagem do banco de dados e atribuí-la a um controle de imagem em um formulário do Access. A imagem é armazenada em uma tabela do SQL Server (como um campo VARBINARY (MAX).
No momento em que estou atribuindo o campo ao controle Image, ocorre um erro de tempo de execução: "Incompatibilidade de tipo". A imagem armazenada no banco de dados como uma imagem Bitmap. Eu tentei com o JPEG anteriormente, mas foi o mesmo erro. Como isso pode ser resolvido?
Definição de tabela do SQL Server e definição de procedimento armazenado:
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
)
)
Procedimentos de acesso para recuperar a imagem:
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