2017-09-01 7 views
1

J'essaye d'écrire une fonction pour faire une boucle dans les enregistrements dans un sous-formulaire continu et effacer la valeur dans un champ spécifique (Entity_Under_Consideration, qui est un champ de recherche représenté par une combobox sur le sous-formulaire) pour chaque enregistrement.Accès VBA: Modification d'un RecordSet dans un sous-formulaire continu

Ce qui suit ne fonctionne pas. Il ne jette pas d'erreurs non plus. Quelqu'un peut-il voir où je vais mal?

Public Function clearEUCData(subform As Control) 

    'take a clone of the subform's recordset 
    Dim entityRecSet As Recordset 
    Set entityRecSet = subform.Form.Recordset.Clone() 

    'if there are any records in the subform... 
    If entityRecSet.RecordCount > 0 Then 

     'start with the first record 
     entityRecSet.MoveFirst 

     'iterate through each row, clearing the data in the EUC field 
     Do Until entityRecSet.EOF 

      With entityRecSet 
       .Edit 
        Entity_Under_Consideration = 0 
       .Update 
      End With 

     entityRecSet.MoveNext 
     Loop 

    End If 

    'close and purge the cloned recordset 
    entityRecSet.Close 
    Set entityRecSet = Nothing 

End Function 
+0

Vous ne semblent pas être rafraîchir la forme après mise à jour du recordset cloné recordset? – Minty

+0

Et pourtant, les modifications sont toujours appliquées au jeu d'enregistrements du formulaire. Comment cela se passe-t-il? – DrewCraven

+1

Gnomes d'accès Ninja travaillant en arrière-plan? Souvent, les mises à jour des jeux d'enregistrements apparaissent immédiatement, mais pas toujours ... Cela dépend si c'est une table locale ou comment une table liée est connectée. – Minty

Répondre

4

Vous devez être plus explicite:

With entityRecSet 
    .Edit 
     .Fields("Entity_Under_Consideration").Value = 0 
    .Update 
End With 
+1

Il est recommandé d'ajouter 'Option Explicit' à tous les modules de code. Cette option aurait provoqué une erreur avec la variable non déclarée 'Entity_Under_Consideration'. Dans l'IDE VBA, vous pouvez également définir 'Outils | Options | Éditeur Paramètres de code | [x] Require Variable Declarations' qui ajoutera automatiquement Option Explicit à tous les nouveaux modules de code. –