質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

1回答

16283閲覧

レコードソースの分だけ「次のレコードへ」を繰り返すマクロを作成したい

q_a

総合スコア7

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2016/10/24 06:52

編集2022/01/12 10:55

環境:
Access2007、Windows7Pro

前提:
いくつかのテキストボックスのイベントでマクロ処理をおこなっているフォームがあります。

(マクロ処理:他のテキストボックスに値をセットするなど)

このフォームを開く前に、根幹になる項目のみをセットしたレコードを生成してから、
このフォームを開いて、「次へ」と移動することにより、
根幹以外の項目に値をセットしたいと考えています。

(「いくつかのテキストボックスのイベントでマクロ処理をおこなっている」を実行するには、
それぞれのテキストボックスにフォーカスを当てたり、抜いたりしなくてはならないと思いますが、
まずは、レコードの移動からおこないたいと考えています。)

なお、ソースについては、マクロばかりで、VBAはほぼありません。

質問:
フォームを表示してボタンを押したら、
フォームのレコードソースのレコードの数だけ「次のレコードへ」を繰り返す

上記をおこなうマクロを作成したい

ご存知の方がいらっしゃいましたら、教えてください。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jm1156

2016/10/24 07:50

「レコードソースの分」というのはなんでしょうか?「次のレコードへ」というのも、何に対して「次」といっているのかわかりません。もう少し具体的に、できれば現在のソースコードなどもつけてください
q_a

2016/10/24 09:57

ご指摘ありがとうございます。修正いたしますので、ご確認いただけますと幸いです。ソースについては、VBAではなくマクロなのでつけていません。
guest

回答1

0

質問:
フォームを表示してボタンを押したら、
フォームのレコードソースのレコードの数だけ「次のレコードへ」を繰り返す

端的にいうと、最終レコードまで、レコード移動したいということですよね。

下記のようなマクロを作成してください。

アクション
・レコードの移動

アクションの引数
・オブジェクト名
・レコード 次のレコード
・オフセット

このクエリを「次レコード移動」という名前を付けて保存します。

次に下記のマクロを作成します。

アクション
・マクロの実行

アクションの引数
・マクロ名 次レコード移動
・実行回数
・繰り返し条件式 [CurrentRecord]<[RecCnt]

これを「最終レコードまで移動」と名前を付けて保存します。

フォーム上にテキストボックスを配置して下記のように設定します。

名前 RecCount
コントロールソース =Count(*)

フォーム上に配置したコマンドボタンの「クリック時」に「最終レコードまで移動」を設定します。

以上です。これでコマンドボタンをクリックすると最終レコードまで移動します。


ちなみに、同様のことをVBAで作成すると、

VB

1Private Sub コマンド1_Click() 2 3 Do Until Me.Recorset.EOF 4 '各レコードに実行したい処理をここに記述 5 Me.Recordset.MoveNext 6 Loop 7 8End Sub

どうでしょう。こちらのほうがはるかにシンプルですよね。

ある程度、複雑なことをしようとするマクロでは制限があったり、かえって複雑になります。

また、レコード移動はあくまで中間の手段であって、最終目的ではないですよね。
レコード移動をしながら具体的に何をしたいのかを提示されると、
もっといい案が出て来るように思えます。(例えば更新クエリとか)

投稿2016/10/24 13:55

編集2016/10/24 13:59
hatena19

総合スコア33620

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MP430

2016/10/25 07:24

hatena19さんの言う通り、VBAでやった方が楽です。 VBAを扱えるようになるのを、おすすめします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問