• ベストアンサー

ACCESS帳票フォームのレコード移動と条件分岐

フォームのデータからWhere条件式で、合致するレコードを抽出するクエリーを作りました。 このレコードを新しく作成した帳票フォームに表示しています。 日付、商品名、項目名、変数1、変数2 この帳票からラベルを出力したいのです。 1個のレコードにフォーカスを当てた時ラベルを作成するVBAは作れたのですが、先頭から順番にすべてのレコードを検査し、変数1と変数2に値が入力されている場合のみ、そのレコードのデータからラベルを出力するということができません。 どのように構文を組んだらよいでしょうか? ACCESS2007、windows7環境です。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

>フィルターをかけるもしくはクエリーからデータを取り出すほうが、簡単でしょうか? 一般的なプリンタで4×3行などのラベル用紙に印刷する場合なら はい! なんでしょうけど、 >VBA開発環境付きのラベルプリンター とのことですので、どうしたもんですかね (^^ゞ 印刷したいデータをレコードセットで開いて順次印刷かな?? そちらの状況がまあぁぁぁぁぁっったく分かりませんので ラベルプリンタの『リファレンス ガイド』?に何か有りませんか? ぐらいな事しか言えません。 > 1個のレコードにフォーカスを当てた時ラベルを作成するVBAは作れた との事ですので、そのコードを公開されれば有益な回答が得られるかな? そのラベルプリンタが謎ですし、私の環境はWin XP & Acc2002なので難しい・・かも。

thunder-sg
質問者

お礼

>そちらの状況がまあぁぁぁぁぁっったく分かりませんので 確かに情報不足で申し訳ありません。 ラベルプリンターはブラザーのP-touchシリーズでb-PACというコンポーネントが付属(必要なユーザーにのみ登録制で配布)しており、それを利用してACCESSからVBAを組んで直接ラベルプリントしようとしています。 リファレンスも不十分で手探り状態で、試しています。 ちょっと怪しいですが、サポート窓口がありますので、そちらのほうと相談しながらなんとか自力で解決したいと思います。 ありがとうございました。

その他の回答 (2)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

フォームの値に合致するレコードを抽出し、フォームに表示することが出来ている。 さらに変数1変数2に値あるものはラベル出したいと解釈します。 今あるクエリ結果をもとにさらにクエリ作成してみる。この条件に変数1変数2の判定を入れる。 レポートのレコードソースはその作ったクエリにする。 フォームにラベル印刷ボタンを作る。 判定式に悩んでますか?。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

フォームを印刷されているのでしょうか? ちょっと無理が有りそうな気がしますが、 レポートでの話しでは無いのですよね? Acc2002までの場合は、フォームの印刷時イベントなんてものは ありませんので、フォームをデザインビューで開いて フォームのデータタブのフィルター欄に、変数1is not null and 変数2 is not null として開いてみてください。 あるいは、現状のVBA のコードが分からないので 適当な所に Me.Filter = "変数1 is not null and 変数2 is not null" Me.FilterOn = True とかですかねぇ。 私ならレポートを作成して、そっちで処理しますけど。

thunder-sg
質問者

補足

フォームからラベル作成するのではなくて、VBA開発環境付きのラベルプリンターで出力します。 フォームのデータをあらかじめ作っておいたプリンターのテンプレートに投げる感じです。 フィルターをかけるもしくはクエリーからデータを取り出すほうが、簡単でしょうか?

関連するQ&A

  • 帳票から単票フォームへの表示がうまくいきません

    ACCESSを始めたばかりです。 帳票表示されているレコードを単票フォームで表示させたいです。 テーブル「売上データ」がありこのテーブルを使って帳票用と単票用のクエリを作成、それぞれに対してフォームを作っています。 「売上データ」には、オートナンバーで No があり、これを主キーにしてあります。 クエリ Q帳票   フォーム F帳票 クエリ Q単票   フォーム F単票 フォームF帳票には、レコード内にボタンをおきました。 ボタンには、下記のマクロをつくって イベント クリック時 のところにいれました。 マクロ フォームを開く  フォーム名 :F単票  ビュー   :フォームビュー  フィルタ名 :  Where条件式 :[No]=[Forms]![F帳票]![No]  データモード:  ウィンドウモード:ダイアログ フォームF帳票 で、検索窓を作って検索した一覧の中から単票表示したいレコードのボタンをクリックして単票フォームをダイアログで開かせたいです。 上記のようにやってみたのですが、単票フォームは開くもののデータは空白になってしまいます。 ちなみに、作ったマクロを実行してみると Forms!F帳票!No とパラメータの入力を求められるので適当な数字をいれるとその数字に該当した単票フォームが開きます。 WEBで探して同じような感じで作ってみたのですがうまくいきません。 どこが間違っているのでしょうか? ちなみにクエリ Q単票 の Noの抽出条件に[Forms]![F帳票]![No]をいれてみたりもしましたがうまくいきませんでした(空白で単票が開く) 何卒よろしくお願いします。

  • アクセスのフォームビューの帳票フォームではレコード

    アクセスのフォームビューの帳票フォームではレコードを削除する事は出来ないのでしょうか? データシートビューではレコードセレクタを選択し右クリックをすると 「レコードの削除(R)」という項目が出てきますが 帳票フォームでは出てきません。 帳票フォームでレコードを削除する方法を教えてください。 よろしくお願いいたします。

  • 帳票フォーム後に

    マクロを使ってフォームの操作を簡単にしようとしているのですが 現在、クエリを作りそのクエリをフォームのレコードソースで引っ張ってきて帳票フォームで表示しています。 ここから先、この一覧で出ている中から一人のボタンを押したら更に詳細な情報が載っているフォームを開きたいと思っています。 ですが帳票フォームで出てきた一覧の中から一人だけの情報を出してくるやり方がわかりません。 どうにか帳票フォームから一つの情報をまた別のフォームに表示することは出来ないでしょうか?説明が下手で申しわけないです(;-;)

  • ACCESS2000の帳票フォームでテキストボックスの入力値を取得したい

    こんにちは。ACCESS2000でツールを作成しています。 テーブルはExcelにリンクさせ、クエリを介して帳票フォームで データを表示しています。 帳票フォームのレコード毎にテキストボックスを追加して それぞれ入力できるようにし、その値をVBAで取得したいのですが どうすればよいでしょうか。 テキストボックスを追加して実行すると、一つのテキストボックスに 入力した値が全てのレコードに反映されているようです。 帳票フォームのしくみがよく分かりません。 どなたか教えていただけないでしょうか。 宜しくお願いします。

  • 単票フォームと帳票フォームを連動 アクセス

    どういう構成にすればいいか教えてください。 元データはT_testのみですが T_testを元に、単票フォームと帳票フォームを作り、 この二つのフォームをサブフォームにし、1つの親フォームにはめて、 帳票フォームのレコードをクリックする(カレントレコードが変わる)度に 単票フォームは、帳票フォームのデータを表示させたいのですが どうすればいいでしょう? レコードソースは親フォームに設定すればいいのでしょうか? それとも単票フォームと帳票フォームそれぞれにT_testを設定すればいいでしょうか? 帳票フォームのレコードをクリックして単票フォームのデータを表示させる際は、 帳票フォームの値を取得して単票フォームにフィルタをかければいいのでしょうか?

  • フォームのボタンを押した時に、SQLのデータを取得し帳票に表示したい。

    ACCESS2003を使用して、帳票出力の機能を作成しようとしています。 フォームであるボタン(コマンド5)を押したときに帳票(1)を出力したいのですが、帳票(1)に出力されるレコードをSQLによって制御したいと思っていますが、うまくいきません。 以下がコードになります。基本的な質問ではあると思いますが、いろいろ調べてもわからなかったので、ご回答、ご指摘いただけるとうれしいです。よろしくお願いします。 Option Compare Database Private Sub コマンド5_Click() On Error Resume Next Dim strSQL As String strSQL = "SELECT * FROM アプリデータDB WHERE アプリデータDB.端末名 = 'AAAA' " DoCmd.OpenReport "帳票(1)", acPreview, , strSQL End Sub

  • 【ACCESS】フォームのレコードソースのクエリを動的に書き直したときの、フォームの再描画

    ACCESS2002 帳票フォームのレコードソースにクエリを指定しています。 フォーム上のコマンドボタンを押したイベントで、その レコードソースとしているクエリのSQLを書き直しています。 問題は、その書き直したクエリをもとにして画面をもう一度 表示させなおしたい(リフレッシュさせたい)ということです。   docmd.close acForm,"フォーム名"   docmd.open "フォーム名" とすると、書き直したクエリの内容でフォームが表示されます。 フォームを閉じる→フォームを開くとしないで、フォームを リフレッシュさせる方法はないのでしょうか?

  • Accessフォームの新規レコードについて

    いつもお世話になっています。 Access2000でフォーム作成をしているときにちょっと詰まってしまいました。 クエリからフォームの作成を行うと、フォームの新規レコードの追加ができないんです! テーブルからフォームを作成する場合は新規レコードの追加は可能でした。 クエリがあるとどうしても新規レコードの追加ができなくなってしまいます。 クエリからフォームを作成して、新規レコードの追加を行えるようにすればどうしたらいいんでしょうか? よろしくお願いします。

  • ラベルをクリックしてレコードを移動したいのですが。

    ラベルをクリックしてレコードを移動したいのですが。 Access2000で帳票フォームを作成しました。選択したレコード(たとえば上から5番目のレコード)のテキスト部分をクリックした場合はそのレコードがカレントレコードになりますがラベル部分をクリックしてもレコードが移動しません(カレントレコードになりません)。 ラベルをクリックしてレコードを移動させる方法を教えて頂きたくよろしくお願いいたします。

  • 帳票フォーム後のレコード指定

    利用者名と利用者IDと電話番号で検索ができるアクセスを作っています。 以前質問した内容で利用者名での検索のみ、検索後の帳票フォームで開いた後開きたいレコードを直接「詳細情報」のボタンを押すことで別のフォーム(詳細情報)を表示できるのです。 利用者IDも電話番号も利用者名と同じ構成で書いているのに検索後の帳票フォームで表示されたあとレコードを選んでも検索後の1番最初のレコードが詳細情報として出てきてしまいます。 たとえば検索して4件が帳票フォームに表示出たとして、3件目を選んだとします、ですが詳細情報の最初に出てくるのは1件目なのです。 3件目を選んだら3件目が詳細情報として表示してほしいのですが・・・ なぜか利用者名だけできて他ではできません。 これちらがそのイベントプロシージャです。 Private Sub コマンド59_Click() On Error GoTo Err_コマンド59_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "詳細情報" stLinkCriteria = "[riyou_id]='" & Me![riyou_infotb_riyou_id] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド59_Click: Exit Sub Err_コマンド59_Click: MsgBox Err.Description Resume Exit_コマンド59_Click End Sub 帳票フォームは3つありそれを1つの詳細情報のフォームへ繋げてます。 3つのイベントプロシージャの変更点はボタンの名前しか変えていません。 回答よろしくお願いします。 下手な質問の仕方で申し訳ないです・・・

専門家に質問してみよう