最新トピック
1
1 ヶ月前
排他制御 1 ヶ月前
2
2 ヶ月前
Hatena様にご質問 2 ヶ月前
6
4 ヶ月前
モジュールでカレントフォームのコントロールを使うには 4 ヶ月前
7
4 ヶ月前
日付のテキストボックスからフォームが開けません 4 ヶ月前
9
5 ヶ月前
レポートにおける数値の間隔を広げる方法 5 ヶ月前
12
5 ヶ月前
リストボックスから複数選択しそれをテーブルに格納したい 5 ヶ月前
タグリスト
Markdown テーブル生成
Accessのテーブルやクエリのデータを貼り付ける場合は下記で、Markdown書式のテーブルに変換して貼り付けてください。
あぁ、コードがめちゃくちゃでしたね。ごめんなさい
hatenaさんが正しいコード例を提示してくださっているのでそちらを参考にしてください
クエリを使うか、レコードセットを操作するかについては、フォームに読み込んだレコードを操作するのであれば、圧倒的にDAOによるレコードセットの操作のほうが楽だと思います
開いたフォームがすでにレコードセットを開いているので、よくあるレコードセットを扱うための魔法の言葉が不要で、
Withステートメントの活用により余計な変数も不要になるのでフォームのレコードセットを操作する方法はいくつかあります。(hirotonの回答がめちゃくちゃなのも、これらを適当に組み合わせてしまっているからです)
DoCmdによるフォームの操作ACCESSの機能を使ってフォームを見たまま操作する例です。見たまま、レコードを移動させながら操作するので、
suitei_tenkoもMeからの参照で現在のカレントレコードのフィールドの値を修正しますレコードセットの操作と異なり、レコードが無い場合の操作を行うとエラーが発生するので、それようの対策が必要です
「マクロ」で作る場合の理論をそのままVBAでコードにするとこんな感じでしょう
Me.Recordsetを操作表示しているフォームそのもののレコードを扱います。レコードセットのレコードを移動させると、フォーム上のレコードも移動するので、レコードの移動だけレコードセットを操作して、レコードの編集はフォーム上のコントロールを操作するとかいう訳の分からないコードを組むこともできます。(コードが短くなるだけで大したメリットはない)
Me.RecordsetCloneを操作フォームに読み込まれているレコードセットを直接操作します。ただし、表示中のレコードは移動しません。Meによる参照と、レコードセットからの参照で、参照しているレコードを別々に持つことになります
Me.Recordset.Cloneを操作(コードは省略)
全く同じレコードセットを新しく生成します
新規でレコードセットが生成されるので、常にレコードセットの先頭にカーソルがある状態のレコードセットになります。(
DoCmd.GoToRecordやMoveFirstのような、全件を操作するための準備がいらない)新規でレコードセットを生成しているので、閉じる処理(
Close)が必要フォームとは関係ないレコードセットを操作するので、フォームに反映させる処理(
recalc/refresh/requery)が必要