Accessのレコード移動を非連結にて実装したいです。 ■本文 以下のイメージの様にフォームを作成しています。
Accessのレコード移動を非連結にて実装したいです。 ■本文 以下のイメージの様にフォームを作成しています。 前提として、フォーム全体非連結で、全てVBAで処理しています。 まず、IDの下にレコード移動用のボタンを設置をしています。 データを入力し、「登録」ボタンより、レコードの追加(登録)を行います。 登録データは、別のテーブル(T_Kudamono)へ追加されます。 データ登録後、登録データは、入力フォーム下に設定しているサブフォーム(登録一覧)へ表示されます。 サブフォーム(登録一覧)は、T_Kudamonoより参照して表示しています。 ここでID下にある移動ボタン「<< < > >>」から、レコードを移動させるため、以下のコードを入れたところ、レコードが移動せず、 「これより前のデータはありません。」 のメッセージが表示されます。(次ボタンも同様) ----- Private Sub 前ボタン_Click() On Error GoTo ErrHandler DoCmd.GoToRecord acDataForm, "F_Kudamono", acPrevious Exit Sub 'エラー処理 ErrHandler: MsgBox "これより前のデータはありません。" End Sub ----- コード内の DoCmd.GoToRecord acDataForm, "F_Kudamono", acPrevious を「 DoCmd.GoToRecord acDataForm, "登録一覧", acPrevious 」 に変更し、実行しても変わりませんでした。 この場合、レコード移動ボタンを押下した時、入力フォームも連動してレコードが移動かつ、登録一覧の内容が表示されるには、どのようにすればよいでしょうか。 ■イメージ <入力フォーム> ID (オートナンバー) << < > >> 名称: 単価: 個数: 「登録」 「修正」 <登録一覧(サブフォーム)> ID 名称 単価 個数 1 りんご 100 2 2 みかん 80 3 3 ぶどう 250 1 ---- <<:先頭へ、<:前へ >:次へ >>:最後へ
Microsoft Access | Office系ソフトウェア・18閲覧・250
ベストアンサー
メインフォームが非連結だとすると、 DoCmd.GotoRecord は使えません。 なぜ非連結にしているのかわかりませんが、非連結の場合、前のレコード、後のレコードというものはありません。クエリもテーブルも連結してないのだから当然です。なので、すべてコードで記述する必要があります。 サブフォームのレコードソースがどうなっているのかわかりませんが、サブフォームの前後の行のレコードに移動してその各フィールドの値をフォームのテキストボックスに表示したいなら、お目当てのレコードのDAO.Recordsetを作り、その各フィールドの値をフォームのテキストボックスに代入する必要があります。 移動ボタンを押したらその都度、です。 また、DAO.Recordsetは作成すると最初のレコードがカレントレコードになるのが仕様なので、何らかの方法でお目当てのレコードに移動する必要があります。通常はIDでしょうが、IDの値を抽出条件にしたSELECT文からDAO.Recordsetを作ることになります。 ところが、非連結のため移動先のIDの値がわかりません。結果、移動はできないということになります。 サブフォームと同じ構造のDAO.Recordsetを開いたままにしておいて、みたいなことは考えられなくもないですが管理がとても煩雑になるはずで、やったことはありません。 非連結フォームは大変手間のかかるやり方、コーディングの量が増えるのでAccessでやる意味がないという人もいるくらいですが、それでもやるメリットは私の場合はあって、実際、単票フォームはめったにない例外を除いてすべて非連結にしていますが、質問のケースは、そのめったにない例外に該当するケースです。 前後のレコードに移動する、というのがそれです。 結論から言うと、ご希望の機能を非連結で実装するのは無理ですね。用意されたボタンは連結フォームでしか意味を持ちません。 あと、このフォームを開いた時は各テキストボックスは空欄だと思いますが、登録済みのデータを呼び出して変更を加えて保存したい場合はどうするんですか? これでできますか? それとも、必要ないですか? どうしても非連結にする必要があるなら、私だったらサブフォームのかわりにリストボックスを使います。そこで選択したレコードをメインフォームに呼び出して表示、これで新規登録も修正もできますけど。 ただし、前後のレコードへの移動という概念はなくなります。
質問者からのお礼コメント
非連結フォームだと、実装が難しいこと理解できました。 分かりやすい説明をありがとうございます。
お礼日時:3/2 22:33