Как отобразить изображение с Sql Server с помощью Microsoft Access? - PullRequest
3 голосов
/ 14 октября 2011

Я увеличил размер базы данных Access 2007 до SQL Server 2008 R2.Изображения в SQL Server как тип изображения.Доступ имеет ссылку на таблицу, содержащую изображение.Когда я пытаюсь отобразить изнутри Access, он этого не сделает.В ней по-прежнему имеется оболочка OLE Object.

Как получить это изображение и отобразить его на моих формах в Access?В настоящее время у меня нет возможности удалить изображения, поместить их в каталог и указать на них (лучший способ, который я знаю, но не вариант).Мне нужно прочитать файл изображения / блоба непосредственно с SQL Server и отобразить его в форме доступа.

Спасибо за любые идеи.

Я видел это, но это не помогло:

Как отобразить изображение с сервера SQL в MS Access

http://access.bukrek.net/documentation выглядит как файл в методе папки

Ответы [ 2 ]

7 голосов
/ 31 августа 2014

Начиная с Access 2010, вы можете использовать свойство PictureData для хранения и отображения изображений из SQL Server.Вам понадобится связанный элемент управления для типа данных SQL Server varbinary (max), который можно скрыть, и несвязанный элемент управления изображением в MS Access.Теперь вы можете просто сказать:

Private Sub Form_Current()
    Me.MSAccessImageControl.PictureData = Me.SQLServerImage
End Sub

И наоборот.Вам нужно будет добавить немного управления ошибками, но совсем немного.

2 голосов
/ 15 октября 2011

Ниже приведена функция, которую я успешно использовал, которая называется BlobToFile. И я также опубликовал код, который я использую, чтобы проверить его. Изображение выгружается в так называемый временный файл, но не является временным, потому что его нет в временном каталоге. Вы можете вручную удалить файл изображения, иначе вам придется записать его во временную папку. Тогда у меня есть элемент управления изображением, где я показываю картинку.

Private Sub Command1_Click()
    Dim r As DAO.Recordset, sSQL As String, sTempPicture As String
    sSQL = "SELECT ID, PictureBlobField FROM MyTable"
    Set r = CurrentDb.OpenRecordset(sSQL, dbSeeChanges)
    If Not (r.EOF And r.BOF) Then
        sTempPicture = "C:\MyTempPicture.jpg"
        Call BlobToFile(sTempPicture, r("PictureBlobField"))
        If Dir(sTempPicture) <> "" Then
            Me.imagecontrol1.Picture = sTempPicture
        End If
    End If
    r.Close
    Set r = Nothing
End Sub


'Function:  BlobToFile - Extracts the data in a binary field to a disk file.
'Parameter: strFile - Full path and filename of the destination file.
'Parameter: Field - The field containing the blob.
'Return:    The length of the data extracted.
Public Function BlobToFile(strFile As String, ByRef Field As Object) As Long
    On Error GoTo BlobToFileError

    Dim nFileNum As Integer
    Dim abytData() As Byte
    BlobToFile = 0
    nFileNum = FreeFile
    Open strFile For Binary Access Write As nFileNum
    abytData = Field
    Put #nFileNum, , abytData
    BlobToFile = LOF(nFileNum)

BlobToFileExit:
    If nFileNum > 0 Then Close nFileNum
    Exit Function

BlobToFileError:
    MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritical, _
           "Error writing file in BlobToFile"
    BlobToFile = 0
    Resume BlobToFileExit

End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...