• ベストアンサー

accessでのレコード移動について

いつもお世話になっています。 アクセス初心者です。宜しくお願い致します。 現在、アクセスを用いて納品書を作成しています。 フォームにお客様情報、サブフォームに納品品目情報を入力。 フォームヘッダーに印刷ボタンを作り、納品書を印刷すると同時に、 そのレコードの印刷済みチェックボックスがオンになる 仕様になっているのですが、 情報を入力してもすぐその日には印刷をせず、 のちに、その印刷をしていないレコードを表示させて、 あらたに情報を追加入力後、改めて印刷をする事があります。 そこで質問なのですが、 今回、このフォームに検索ボタンを作り、 印刷済みチェックボックスがオフになっているレコードを 表示させようと思うのですが、どのようにしたらよいのでしょうか? ボタンを押すごとにまだ印刷していないデータだけが 次々表示されるボタンの作り方をご教授願えればと思います。 どうか宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

こんばんは。 メインフォームの基になるテーブルに「印刷済み」フィールド(Yes/No型)があるとします。 また、メインフォームにコマンドボタン(名前:未印刷検索)があるとします。 このコマンドボタンの「クリック時」イベントに下記のコードをコピペしてください。 これで希望通りの動作になると思います。 Private Sub 未印刷検索_Click() Dim Rs As Recordset Set Rs = Me.RecordsetClone Rs.FindNext "[印刷済み] = False" If Rs.NoMatch Then MsgBox "未印刷レコードの検索は終了しました。" Rs.MoveFirst End If Me.Bookmark = Rs.Bookmark End Sub ※Rs.MoveFirst のかわりに Rs.FindFirst "[印刷済み] = False" でも良いかもしれません。

chocomarbl
質問者

お礼

ご回答ありがとうございます。 さっそく試したところ、 コンパイルエラー 「メソッドまたはデータメンバがみつかりません。」と表示され、 Rs.FindNext "[印刷済み] = False" の .FindNext の部分が青く表示されてしまいます。 メインフォームの基になるテーブルに「印刷済み」フィールドはあります。 何が原因なのでしょうか? どうか宜しくお願い致します。

その他の回答 (4)

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.5

> Rs.FindNext "[印刷済み] = False" の > .FindNext の部分が青く表示されてしまいます。 Private Sub 未印刷検索_Click() Dim Rs As DAO.Recordset としてみてください。 参照設定で、DAO3.6 にチェックをお忘れなく。 ところで、Accessは Adp なのですか?

chocomarbl
質問者

お礼

できました!感動です!! 初心者なもので、VBAの構文の意味など全然解らないですが(苦笑)。 とくにDAOやらDOAは何が何やら… 設定の DAO3.6 にチェック入れて完了でした。 adpの意味もわかってません…スミマセン。 もっともっと勉強しないとダメですね。 ですが、本当に感謝しています。 どうもありがとうございました。

回答No.4

#3 です。 読み返してみたら、これ↓は不要でした。 ※Rs.MoveFirst のかわりに Rs.FindFirst "[印刷済み] = False" でも良いかもしれません。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>検索ボタンを作り印刷済みチェックボックスがオフになっているレコードを表示させようと思う 検索ボタンにフォームのレコードソースを変更させるようにすれば出来るのですが・・。 印刷済みチェックボックスあるレコードは納品書テーブルのレコードですよね。 メインフォームがお客様情報テーブルをレコードソースでサブフォームが納品書テーブルのレコードソースになっている場合だとサブフォームのレコードソースはストアドプロシージャなのでフォーム同士のリンクを無視してメインとサブフォームが同期しなくなってしまいます。 フォームのレコードソースのこの辺はどうでしょうか? この場合だとストアドプロシージャを新規に作ったりメインとサブを同期させるようしたりと手間がかかります。 印刷済みチェックがオフになっているレコードを検索し一覧表示するフォームを別に作りそこから納品書のフォームを表示させて納品書を出力する方が簡単です。 印刷済みチェックがオフのレコードを抽出するクエリを作り、そのクエリを元に帳票フォームで一覧フォームを作り納品書フォームを開くボタンを配置して特定のレコードを表示するにして関連付けすれば出来ます。 納品書フォームが納品書テーブルのレコードと上手くリンクできない場合は印刷用のフォームを作らなくてはいけませんが。 この処理を納品書に作ったボタンにマクロでも作り設定するのが簡単だと思います。

chocomarbl
質問者

お礼

ご回答ありがとうございます。 ストアドプロシージャというものがまだ勉強不足でわかりませんが、 やはりサブフォームがあると難しくなってしまうのでしょうか? なるほど、あらたにフォームを作るという方法もありですね。 参考にしてみたいと思います。 ご丁寧にありがとうございました。

回答No.1

わかりやすく説明しようと思います。 1.フォームにボタンを作成する 2.プロパティ-イベント-クリック時 3.「...」ボタンを押し 4.マクロビルダにて、マクロを作成 5.アクション欄に「フィルタの実行」を選ぶ 6.画面下にあるWhere条件式の欄に   「[チェック]=False」と入力する   ([チェック]←は、フィールド名) 7.保存し閉じる こんな感じで、いかがでしょうか。 確認、よろしくお願いします。

chocomarbl
質問者

お礼

早速のご回答ありがとうございます。 ですが、教えて頂いた通りにやったのですが、 うまく機能しません。 実行してもレコードが移動せず、 メインフォーム、サブフォームのレコードの先頭のデータが 空になる(消える?)という、おかしな現象になります。 やはり、サブフォームがあると難しいのでしょうか? 一番簡単にできそうだっただけに残念です。 丁寧なご説明ありがとうございました。 とりあえず、他の方の方法を試してみますね。

関連するQ&A

  • アクセス2003 - レコード追加について

    同期の代理質問です↓ 新規レコードを入力するフォーム(サブフォームも作成)を作り、コマンドボタンを押すと、サブフォーム(全レコード表示させている)に入力したレコードを追加させる場合、どうしたらいいのでしょうか?   ちなみに、サブフォームに追加されたレコードは、 自動的に昇順に並べ変わるしくみにしたいのですが・・・ 宜しくお願い致します☆

  • Access2013 vbaサブフォームのレコード

    [Access2013 vba] ■したいこと サブフォームのレコードの中から、一レコードだけをチェックボックスなどで選択したいのですが、どのようにしたら出来ますでしょうか。 複数行選択は出来ないようにしたいです。 選択したのち、メインフォームの選択ボタンを押すと、そのレコードのID番号を取得して、呼出元のフォームのIDフィールドに代入したいです。 ■画面の流れ・・・ Aフォーム → 帳票型Bフォームで、レコードを選び「開く」ボタンを押す→ B 'メインフォームとCサブフォーム)が開く Cサブフォームのレコードをチェックボックスにチェックを入れて選択する B ' メインフォームの「選択」ボタンを押すと B ' メインフォームと、その前のBフォームが閉じて Aフォームに戻り、AフォームのIDフィールドに選択したIDが格納される。 よろしくお願いします。

  • 【Access2003】レコードごとにチェックボックスをチェックをするにはどうしたら良いでしょうか?

    1フォームの中に住所録を表示するサブフォームを格納。 2サブフォームにはチェックボックスを貼り付け。「既定のビュー」をデータシートにする。 3フォームを開く。 4サブフォームの「チェックボックス」をチェックするとすべてのレコードがチェックされてしまいます。 レコードごとにチェックをするにはどうしたら良いでしょうか?

  • ACCESS サブフォーム レコード移動ボタンをつ

    ACCESS初心者です。 フォーム A サブフォーム B リンク親フィールド 名前 子リンク親フィールド 名前 サブフォームで表示されるレコードセレクタと移動ボタンを、フォームA上にオリジナルでボタンとテキストで下記項目を作成したいです。 作りたい項目 ボタン1 次のレコードへ移動 ボタン2 前のレコードへ移動 テキストボックス 現在のレコード/レコード数 ボタンの作成まではできましたが、イベントプロージャにどういう内容を入れたらよろしいのでしょうか

  • ACCESSのサブフォーム

    ACCESSのサブフォームで、レコード表示について教えてください。 添付のサブフォームの一番左のコンボボックスに値を入力もしくは選択すると、未入力のレコードが下に1行分増えます。 (その他項目は連動して表示されます) サブフォームは帳票フォームを選択しているのですが、一般的には帳票フォームを選択した場合、レコードの数分だけ表示されると思うのですが、これは1レコードづつ増えていきます。 このサブフォームを作った人がもういないので、どうやって作ったのかが分かりません。 どなたか分かる人がいれば教えて頂けますでしょうか。 必要な情報があれば、調べて回答します。

  • Access2000メインサブフォームでのレコード移動

    Access2000でデータベースを作っている中で、メイン/サブフォームを使用しています。 メインフォームで次レコードへ移動しようとすると、レコードNOは移動しているのですが、データ内容が変わりません。 私の予想なのですがサブフォームにあるレコードの数だけ、(メインフォームの)同一レコードの内容が表示されているようです。 ・次レコードへの移動はフォーム一番下の、デフォルトでついてるレコード移動のボタンを押しました。 ・(メインフォ-ムの)テーブルにはKeyを設定してあり、同じデータは存在していません。 以上ですが、不明な点がありましたらお知らせください。 もしお分かりになる方がおられたらお教えください。よろしくお願いいたします。

  • ACCESS2007 フォームにて複数のレコードのフィールド表示

    ACCESSの初心者です。よろしくお願いいたします。 こういったことはできるのか?という疑問がありまして、一つ質問をさせていただきたいのです。 【やりたいこと】 一つのフォームにて、8人分のデータを表示させる画面を作成したい。 通常、フォームでは1レコードずつめくっていくようになっていますよね。 最初は1~8までの人(レコード)の情報を、次にボタンを押すと9~16までの人(レコード)の情報を表示させる。このようにボタンを押すごとに特定の数のレコードを表示させるフォームができるかということです。 おわかりの方、どうか教えていただきたく、お願い申しあげます。

  • Accessのフォームでレコード移動ボタン等を非表示にする

    いつも大変お世話になっております。m(_ _)m アクセスのフォーム(単票表示)で、サブフォームを表示した時、画面の左下にレコードセレクトボタン(1つ前に進む、1つ後に進む、一番最初に戻る等のボタン)を非表示にしたいのですが、できるのでしょうか? よろしくお願いします。

  • ACCESSフォームのリストボックスでレコードが選択できない

    ACCESS2000です。 フォームの左側に親テーブルのフィールド1の値を選択させるリストボックスがあり、そこで選択したレコードにリンクする子テーブルのレコードをフォームの右側にサブフォームで表示させたいのですが、リストボックスでレコードを選択できません(クリックしても反転しません)。でもレコード移動ボタンを押すと、リストボックス内の該当レコードがちゃんと反転し、右側のサブフォームにも正しく反映します。 リストボックスのプロパティはくまなく見ましたがそれらしい設定項目はみつかりませんでした。どこを直せばよいのでしょうか。

  • Access2000での質問!!

    フォーム1、フォーム2とあり、フォーム1にチェックボックスがあり、そこでチェックされたかどうかによってフォーム2にあるサブフォームのレコードを追加できるかできないかをしたいのですがどうすればいいですか? もしチェックボックスでチェックされているならサブフォームのレコードを追加できるようにし、 チェックボックスがチェックされていない場合サブフォームのレコードを追加できなくしたいのです! サブフォームの既定のビューは帳票フォームです! なにとぞアドバイスお願いします!

専門家に質問してみよう