2012-03-28 2 views
0

디렉토리의 이미지를 소싱하는 테이블을 기반으로 4 개의 이미지 컨트롤을 업데이트하는 액세스 보고서가 있습니다. 보고서는 레코드 당 페이지를 생성하지만 이미지 컨트롤은 1 페이지 이후에 변경되지 않습니다 (다른 모든 페이지에 대해 동일한 이미지 만 표시). Appartently, 코드는 Windows XP에서 잘 작동했지만 현재 Windows 7 OS에서는 작동하지 않습니다 (둘 다 Office 07 사용). 다음은 코드입니다.DAO 액세스 레코드 세트가 업데이트되지 않습니다.

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 

이미지는 테이블에서 참조하는 디렉토리에 있습니다. 누락 된 것에 대한 아이디어가 있습니까? 나는 [섹션] _Format 이벤트 항상 사용하는 일부 동적 콘텐츠를해야 할 때마다

+0

잘 모르겠지만 Microsoft는 새 릴리스에서 다양한 API 기능을 무작위로 제거합니다. Access 2000에서 2007로 업데이트 할 때 FileDialog 및 RecordSet.RecordCount가 더 이상 존재하지 않아 많은 기능이 손상되었습니다. – McGarnagle

+0

페이지 1 이후에 UpdateImages가 호출되고 있는지 확인하십시오 - 페이지 이벤트가 발생하지 않는 경우가 있습니다 ... –

+0

@DJ., UpdateImage 프로 시저가 4 번만 실행되는 것처럼 보입니다. 페이지 당 이벤트를 어떻게 발생 시키나요? – artwork21

답변

2

감사합니다 - 그래서 당신의 컨트롤이 다음 본문 구역에있는 경우 :

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 방법을 보여, 나는 이미지 컨트롤을 사용 경험이 많지 않아,하지만 희미한 문 비슷한 제품을 더 읽어야하는 것처럼 보인다

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"을 좋아하지 않는다 : 당신은 또한이 단축 될 수 있습니다.

관련 문제