2012-03-28 5 views
0

ディレクトリから画像を取得するテーブルに基づいて4つの画像コントロールを更新するアクセスレポートがあります。このレポートではレコードごとにページが生成されますが、イメージコントロールはページ1以降は変更されません(他のすべてのページで同じイメージが表示されます)。念のため、コードは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

私は分かりませんが、マイクロソフトが新リリースのさまざまな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メソッドを見て、私は、Imageコントロールを使用して多くの経験を持っていないが、薄暗い文はより多くのように読むべきであるように思える:私は休憩のANを挿入する

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

d

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

が期待する値を返すことを確認します。これはすでにデフォルトの戻り値であるとして、時にはアクセスが追加され、「.VALUEを」好きではない

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

:あなたはまた、これらを短縮することができます。

関連する問題