Набор записей доступа DAO не обновляется - PullRequest
0 голосов
/ 29 марта 2012

У меня есть отчет о доступе, который обновляет 4 элемента управления изображениями на основе таблицы, которая получает изображения из каталога.Отчет генерирует страницу для каждой записи, однако элементы управления изображением не меняются после страницы 1 (просто показаны одинаковые изображения для всех остальных страниц)Очевидно, код работал нормально в Windows XP и теперь не работает в ОС Windows 7 (оба использовали Office 07).Вот код:

Private Sub Report_Current()

    UpdateImages
End Sub

Private Sub Report_Load()

    UpdateImages
End Sub
Private Sub Report_Page()

    UpdateImages
End Sub

Private Sub UpdateImages()
On Error GoTo errHandler
    Dim RS As DAO.Recordset

    Set RS = CurrentDb.OpenRecordset("SELECT Image_Loc, Image_Name FROM HH_Media WHERE InspectionID = " & CInt(Me.InspectionID.Value) & " ORDER BY MediaID ASC")

    If Not RS.BOF And Not RS.EOF Then
        Dim i As Integer
        For i = 1 To 4
            If Not RS.EOF Then
                Dim pictureCtrl As Image
                Set pictureCtrl = GetControl("Image" & i)

                Dim strImage As String
                strImage = RS.Fields("Image_Loc").Value & "\" & RS.Fields("Image_Name").Value


               If Not pictureCtrl Is Nothing Then
                    If FileExists(strImage) Then
                        pictureCtrl.Picture = strImage
                        SetLabel "lblImage" & i, RS.Fields("Image_Name").Value
                    Else
                        pictureCtrl.Picture = ""
                        SetLabel "lblImage" & i, "Does not exist"
                    End If
               End If

              RS.MoveNext

            Else
                Exit For
            End If

        Next

    End If

    RS.Close
    Set RS = Nothing

Exit Sub

errHandler:
    MsgBox "An error occurred while updating the form display." & vbNewLine & Err.Description, vbApplicationModal + vbCritical + vbDefaultButton1 + vbOKOnly, Me.Name
    Resume Next
End Sub

Изображения существуют в каталоге, на который есть ссылки в таблице.Есть идеи, чего не хватает?

Спасибо

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

Всякий раз, когда мне нужно создать динамический контент, я всегда использую событие [section] _Format - поэтому, если ваши элементы управления находятся в разделе Detail, тогда:

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)

  If FormatCount = 1 then  'only need to do this once per record
    UpdateImages
  Endif

End Sub
0 голосов
/ 01 февраля 2013

Я никогда не видел метод GetControl, и у меня нет большого опыта использования элемента управления Image, но кажется, что выражение Dim должно выглядеть так:

Dim pictureCtrl as Control
Set pictureCtrl = Me.Controls("Image" & i)

Я бы вставил разрыв и проверил, что

strImage = RS.Fields("Image_Loc").Value & "\" & RS.Fields("Image_Name").Value

возвращает ожидаемые вами значения. Вы также можете сократить их до:

strImage = rs!Image_Loc & "\" & rs!Image_Name

иногда Access не нравится добавленное ".value", поскольку это уже возврат по умолчанию.

...