2017-09-01 8 views
1

連続したサブフォームのレコードをループし、特定のフィールドの値をクリアする関数を記述しようとしています(Entity_Under_Considerationは、コンボボックスで表される参照フィールドです)。サブフォーム)を作成します。Access VBA:連続サブフォームのレコードセットを編集する

以下は動作しません。それはどんなエラーも投げません。私はどこに間違っているのか誰にでも見える?

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

あなたはクローン化されたレコードを更新した後、フォームのレコードを更新するように見えませんか? – Minty

+0

また、変更はまだフォームのレコードセットに適用されています。どうしたの? – DrewCraven

+1

忍者のアクセスのノームは、バックグラウンドで働いていますか?多くの場合、レコードセットの更新はすぐに表示されますが、必ずしもそうではありません。ローカルテーブルかリンクテーブルがどのように接続されているかによって大きく左右されることがあります。 – Minty

答えて

4

あなたはより明確にする必要があります:

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

すべてのコードモジュールに 'Option Explicit'を追加することをお勧めします。そのオプションは、宣言されていない変数 'Entity_Under_Consideration'にエラーを引き起こしていました。 VBA IDEでは、 'Tools |オプション|エディタ|コード設定| [x] Variable Declarations'が必要です。自動的にOption Explicitをすべての新しいコードモジュールに追加します。 –