2012-03-28 9 views
0

Ich habe einen Zugriffsbericht, der 4 Bildsteuerelemente basierend auf einer Tabelle aktualisiert, die Bilder aus einem Verzeichnis bezieht. Der Bericht generiert eine Seite pro Datensatz, die Bildsteuerelemente ändern sich jedoch nicht nach Seite 1 (nur dieselben Bilder für alle anderen Seiten). Approximativ funktionierte der Code unter Windows XP einwandfrei und funktioniert jetzt nicht unter Windows 7 (beide verwendeten Office 07). Hier ist der Code:DAO-Zugriffs-Recordset wird nicht aktualisiert

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 

Die Bilder existieren in dem Verzeichnis, auf das in der Tabelle verwiesen wird. Irgendwelche Ideen von was fehlt?

Danke

+0

Ich weiß es nicht, aber es scheint, als ob Microsoft zufällig verschiedene API-Funktionen in neuen Versionen entfernt. Als ich von Access 2000 zu 2007 aktualisierte, wurde eine Reihe von Features beschädigt, da FileDialog und RecordSet.RecordCount nicht mehr vorhanden waren. – McGarnagle

+0

Sind Sie sicher, dass die UpdateImages nach Seite 1 aufgerufen wird - manchmal wird das Seitenereignis nicht ausgelöst ... –

+0

@DJ., Es scheint, als ob es nur die UpdateImage Prozedur 4 mal trifft. Wie kann ich das Ereignis pro Seite auslösen? – artwork21

Antwort

2

Immer, wenn ich ich immer mit den Tasten [Abschnitt] _FORMAT Ereignis einige dynamische Inhalte müssen tun - also, wenn Ihre Kontrollen auf den Detailbereich sind dann:

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

Ich habe noch nie gesehen die GetControl Methode, und ich habe nicht viel Erfahrung, um die Bildsteuerung verwenden, aber es scheint, wie dass die Dim-Anweisung mehr wie sollte lauten:

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

ich eine Pause ein einfügen würde d verifizieren, dass

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

Werte zurückgibt, die Sie erwarten. Sie können auch diese verkürzen:

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

manchmal Zugang nicht den zusätzlichen „.value“ mag wie dies bereits die Rückkehr Verzug ist.