2012-03-28 3 views
0

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

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 

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

Спасибо

+0

Я не знаю, но похоже, что Microsoft случайно удаляет различные функции API в новых выпусках. Когда я обновлялся с Access 2000 по 2007 год, множество функций было нарушено, потому что FileDialog и RecordSet.RecordCount больше не существовали. – McGarnagle

+0

Вы уверены, что UpdateImages вызывается после страницы 1 - иногда событие страницы не срабатывает ... –

+0

@DJ. Похоже, что он только нажимает на процедуру UpdateImage 4 раза. Как сделать пожар на странице? – artwork21

ответ

2

Всякий раз, когда мне нужно сделать некоторые динамического контента я всегда использую [раздел] _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

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

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

Я хотел бы вставить рекламную паузу d подтвердить, что

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

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

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

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