Bug sur la commande SearchForRecord

Publié le par Raymond

SearchForRecord est une nouvelle commande Access 2007 utilisée principalement sur l’événement AfterUpdate des listes modifiables pour se positionner sur un enregistrement dont la clé primaire est égale à la valeur sélectionnée dans la liste.

La commande générée par l’assistant est la suivante (exemple) :
DoCmd.SearchForRecord , "", acFirst, "[FTP_T_KEY] = " & "'" & Screen.ActiveControl & "'"
Si l’option de recherche est acFirst et que l’enregistrement trouvé soit le premier de la table ou le premier du Recordset, l’événement Form_Current n’est pas déclenché. Pour tous les autres enregistrements, l’événement Form_Current est déclenché correctement.
Contournement du bug : corriger la procédure.
Procédure générée :
Private Sub cmdSearch_AfterUpdate()
    DoCmd.SearchForRecord , "", acFirst, "[FTP_T_KEY] = " & "'" & Screen.ActiveControl & "'"
End Sub
Corriger en :  

Private Sub cmdSearch_AfterUpdate()
    Dim rs As Object
    Set rs = Me.RecordsetClone
    rs.FindFirst "[FTP_T_KEY] = " & "'" & Screen.ActiveControl & "'"
    If Not rs.NoMatch Then Me.Bookmark = rs.Bookmark
End Sub
Ou alors :
Private Sub cmdSearch_AfterUpdate()
    Dim rs As DAO.Recordset
    Set rs = Me.RecordsetClone
    rs.FindFirst "[FTP_T_KEY] = " & "'" & Screen.ActiveControl & "'"
    If Not rs.NoMatch Then Me.Bookmark = rs.Bookmark
End Sub
Prendre la précaution de cocher la référence à DAO 3.6

Publié dans Bugs

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article