Как загрузить изображение в 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