Загрузка изображений из таблицы оракулов в элементы управления изображениями формы пользователя - PullRequest
0 голосов
/ 11 октября 2019
  1. У меня есть таблица оракула «Сведения о сотруднике» с Empno, Ename, Image.
  2. У меня есть 50 записей в таблице.

  3. Используя код VBA, я могу загрузить изображения в мою локальную файловую систему.

  4. Я не могу динамически добавлять элементы управления изображениями в пользовательскую форму и заполнять изображения из набора записей.

With Cn
        .Provider = "OraOLEDB.Oracle"
        .ConnectionString = "Data Source=" & cboDsn.Value & ";" & "User ID=" & txtuser.Value & ";" & "Password=" & txtpwd.Value & ";"
        .Open
End With


        Rs.Open "select * from " & txtTname.Value & " order by empno", Cn, adOpenKeyset, adLockOptimistic



'Save the files  from DB to local file system
For R = 1 To Rs.RecordCount

        'Temporary file location for saving the image
        TempFileName = v_ApplPath & "\logs\" & Rs.Fields(3).Value

        With Strm
                .Type = adTypeBinary
                .Open
                .Write Rs.Fields(4).Value
                .SaveToFile TempFileName, adSaveCreateOverWrite
                .Close
        End With

    Rs.MoveNext

Next R

Я хотел бы иметь полосу прокрутки, чтобы увидеть все 50 записей с изображениями. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 16 октября 2019

Мне удалось динамически добавить элементы управления изображением в объект Frame, основываясь на количестве записей, возвращаемых набором записей.

Для R = 1 К Rs.RecordCount

    TempFileName = v_ApplPath & "\logs\" & Rs.Fields(3).Value

    With Strm
            .Type = adTypeBinary
            .Open
            .Write Rs.Fields(4).Value
            .SaveToFile TempFileName, adSaveCreateOverWrite

                    Set NewImage = Frame1.Controls.Add("Forms.Image.1", "Image" & R)
                    With NewImage
                        .Top = ImageTopPos
                        .Left = ImageLeftPos + 250
                        .PictureSizeMode = fmPictureSizeModeZoom
                        .BackStyle = fmBackStyleOpaque
                        .BorderStyle = fmBorderStyleSingle
                        .BackColor = &HFFC0C0
                        .BorderColor = &HFFC0C0
                        .Width = 50
                        .Height = 50
                        .Picture = LoadPicture(TempFileName, 50, 50)
                    End With

                    ImageTopPos = NewImage.Top + NewImage.Height + 10

                    With Frame1
                            .Visible = True
                            .ScrollBars = fmScrollBarsVertical
                                    V_ScrollBarHeight = ImageTopPos
                            .ScrollHeight = V_ScrollBarHeight + 25
                    End With

            .Close
    End With
                    Fsys.DeleteFile (TempFileName)

                    frmImageLoad.Repaint
Rs.MoveNext

Следующая R

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