私はこのようにロバートのコード@編集します:
With Forms!frmExample.RecordsetClone
FindFirst "[ExampleID] = " & Me!cboExample
If Not .NoMatch Then
If Me.Dirty Then Me.Dirty = False
Forms!frmExample.Bookmark = .Bookmark
End If
End With
私はそのレコードがすでに存在していて、簡単にブロックWITH内部で働いていたことができたときに、レコードセット変数を初期化するために絶対にない理由を見ません。
また、ブックマークナビゲーションを使用してレコードを出発する前に、編集内容を保存することが不可欠です。これは、すべての検証を記録出発点に暗黙的に行うのではなく、明示的に行うためです。歴史的に言えば、Jetのブックマークナビゲーションは暗黙的に呼び出された保存で発生したエラーを食べる傾向がありました。おそらく、他のブックマークバグとともに、それは打ち切られましたが、私はちょうどすべてがうまくいっていくと仮定するのではなく、明白なレコードを明示的に保存するほうがよいと思います。
暴言:(2007、すなわち、2002年と2003年前)のアクセスの最近のバージョンのウィザードで作成されたこの操作の
コードは恐ろしいです。それは宣言されたレコードセット変数(@ Robertのコードのように)を使用しますが、使用した後(つまり、Nothingに設定して)それをクリーンアップしません。また、既に存在する.RecordsetCloneの代わりにフォームのRecordset.Cloneを使用します(別個のオブジェクトです)。最後に、.NoMatchを使用する代わりに、 "If Not rs.EOF"を使用します。これはほとんど意味がありません。私は、この理由は、ADOレコードセットを持つフォームでは機能するようになっているが、ADOレコードセットには.FindFirstメソッドがないため、これはばかげていると言われています。本当に、あなたは.FindFirstだけを変更することができます.Findとそれはうまくいくでしょうが、ひどいひどいコードです。
こんにちはロバート、あなたのコードを強調表示し、上記のようにフォーマットするコードボタン(それに010を持っている)を選択することができます、主にそれはすべての4つのスペースをインデントします。 – Fionnuala
チップ、Remouありがとう。私はそれをやろうとしていましたが、カット&ペーストするとコードブロックの先頭行だけが表示されました。私は間違っていると思う! – Sesame