Как загрузить изображение в MS-Access Image control из поля набора записей ADO?

С помощью:

MS-Access 2013 SP1 x86MS-SQL Server 2012 с пакетом обновления 1 (SP1) CU8 x64Подключение через ODBC DSN, драйвер SQL ServerUpScene Database Workbench Pro v4.4.4 Pro для MS-SQL Server

Приложение My Access 2013 использует SQL Server 2012 в качестве внутренней базы данных с ODBC. Я использую VBA / ADO для чтения / записи данных в базу данных.

До сих пор мне не удавалось извлечь изображение из базы данных и назначить его элементу управления изображением в форме доступа. Изображение хранится в таблице SQL Server (как поле VARBINARY (MAX).

В тот момент, когда я назначаю поле элементу управления Image, выдается ошибка времени выполнения: «Несоответствие типов». Изображение хранится в базе данных как растровое изображение. Я пытался с Jpeg ранее, но это была та же ошибка. Как это можно решить?

Определение таблицы SQL Server и определение хранимой процедуры:

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

Доступ к процедурам для получения изображения:

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

Ответы на вопрос(1)

Ваш ответ на вопрос