Сохранение jpg в SQL из Access VBA - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь сохранить файл jpg в SQL и отобразить его в Access FE. В SQL у меня есть таблица с varbinary (max) столбцом. В Доступе к форме, ссылающейся на поле, которое не отображает изображение, но поиск обнаружил, что, если я установлю что-то вроде Image1.PictureData = me.sqlImage в Form_Current (), я могу получить его для отображения.

Теперь проблема. Если я вставлю изображение в T-SQL с чем-то вроде этого

UPDATE MyTableName

SET SQLImage=(SELECT * FROM OPENROWSET(BULK N'test.jpg', SINGLE_BLOB) as x)

WHERE IndexField='0123'

, оно отобразит изображение по желанию. Однако, если я попытаюсь вставить \ обновить изображение из VBA следующим образом:

    Set dlgAdd = Application.FileDialog(msoFileDialogFilePicker)
    With dlgAdd
        .Filters.Clear
        .Filters.Add "Picture Files (*.jpg, * .jpeg)", "*.jpg;*.jpeg"
        .AllowMultiSelect = False
        .Title = "Select Picture"

        If .Show = True Then
            '-- Open .Item For Binary As #1
            Open .SelectedItems(1) For Binary As #1
            '-- ReDim bytData(FileLen(.Item))
            ReDim bytData(FileLen(.SelectedItems(1)) -1)
        Else
            Exit Sub
        End If
    End With

    Get #1, , bytData
    Close #1


    Set DB = CurrentDb
    strSQL = "SELECT * FROM MyTableName WHERE IndexField='" & Me.IndexField & "'"
    Set RS = DB.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges)
    RS.OpenRecordset

    RS.Edit
    RS.Fields("SQLImage").AppendChunk bytData
    RS.Update
    RS.Close

, тогда я получу прекрасный ответ: «Указанное вами растровое изображение не в формате независимого от устройства растрового изображения (.dib)»ошибка при попытке Image1.PictureData При поиске больше я нашел ссылку на использование элемента управления веб-браузера для преобразования его в base64, который не выдает ошибку, а отображает только маленькое поле «х» вместо изображения, поэтому оно по-прежнему не отображается. работа.

Что я делаю не так, сохраняя jpg из Access VBA? Это прекрасно работает, если я вставляю изображение из T-SQL, но я хочу, чтобы пользователи обновляли изображения из FE.

Заранее спасибо,

Редактировать: Найдена статья https://rtmccormick.com/2013/08/22/select-a-file-with-file-dialog-in-ms-access-with-vba/ и изменен с .Item на .SelectedItems(1). Оставил мое первоначальное использование прокомментировано для ясности. На основании комментариев проверил размер с тестовым целым числом и показывал 0 длины после открытия. Изменено на .SelectedItems(1) и теперь ведет себя корректно. Спасибо @Charles & @Erik A за то, что я перестал фокусироваться на дереве. :)

Edit2: я включил тест, если файл выбран или отменен, если кто-то пытается скопировать \ вставить, так как я не включил все (dims и т. Д.), Но эта часть должна была быть там.

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