• ベストアンサー

帳票フォーム後に

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

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

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.7

>モジュールは出来るだけ避けてたので(笑) マクロ派ですねw [条件]のボタンを押して条件付のマクロを作る 1行目 条件:SysCmd(10,2,"帳票フォーム")<>0 アクション:フォームを開く  フォーム名:詳細フォーム  ビュー:フォームビュー  Where条件式:[主キー]=[Forms]![帳票フォーム]![主キー] 2行目 条件:SysCmd(10,2,"帳票フォーム")=0 アクション:フォームを開く  フォーム名:詳細フォーム  ビュー:フォームビュー 以上。 1:帳票フォームが開いていれば、レコードを指定して開きます。 2:念のため帳票フォームが開いていなければ、普通に開きます。 帳票フォームの詳細の部分にコマンドボタンを追加して上記マクロを登録してください。

noname#135452
質問者

お礼

回答ありがとうございます。 マクロまでお答え頂き感謝です! まだいろいろ機能を持たせていきたいのでがんばってみます!

すると、全ての回答が全文表示されます。

その他の回答 (6)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.6

>レコードソースに検索クエリを入れているので ソースに検索条件を入れたときにはマクロのほうのWhere条件は要りません どちらかひとつにしてください

すると、全ての回答が全文表示されます。
  • venzou
  • ベストアンサー率71% (311/435)
回答No.5

コントロールウィザードで簡単に設定できますよ。 帳票フォームのデザイン画面 ツールボックスのコントロールウィザードをONにする コマンドボタンを詳細に追加する ウィザードが始まる フォームの操作 フォームを開く 次へ 詳細フォームを選択 次へ 特定のレコードを表示する 次へ 両側の主キーを選択し <->ボタンを押す 次へ 後はお好みで 完了 実際登録されるコマンドボタンのクリック時のイベントプロシージャ Private Sub コマンド0_Click() On Error GoTo Err_コマンド0_Click  Dim stDocName As String  Dim stLinkCriteria As String  stDocName = "詳細フォーム"  stLinkCriteria = "[主キー]=" & Me![主キー]  DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド0_Click:  Exit Sub Err_コマンド0_Click:  MsgBox Err.Description  Resume Exit_コマンド0_Click End Sub

noname#135452
質問者

お礼

回答ありがとうございます。 この方法を試してみたところ見事に自分の思った動きになりました! この操作をマクロでするのは無理があったのですかね? モジュールは出来るだけ避けてたので(笑) モジュールを使って作った方がスッキリするんですか? 本当に助かりました有難うございます!

すると、全ての回答が全文表示されます。
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

>マクロのフォーム名は消して条件式だけ記入すればいいんですよね? これがエラーの原因です フォーム名を消したりするから >、[Form Name/フォーム名]引数が必要です。 といわれるのです >テーブルにある情報全てがこの詳細フォームに載ってしまいます エラーにもならずにですか? それにエラーで開かないといっていたのじゃなかったっけ

noname#135452
質問者

お礼

何度も回答有難うございます。助かります。 レコードソースに検索クエリを入れているので1回検索クエリを実行したあとにWhere 条件式も動いてしまい。結果2回検索をかけてることに・・・ フォーム名を入れてレコードソースを外してみるとフォームビューされるだけで検索とかはかけれませんでした・・・。 >エラーにもならすにですか? その詳細フォームのみ開いた場合の話でした(汗

すると、全ての回答が全文表示されます。
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>レコードをカレントにする方法を教えていただければ幸いです。 レコードの行をクリックすると左端のレコードセレクタに三角印がつきますね そのレコードがカレントレコードです 詳細にボタンを置くのはこのレコードをクリックする操作とボタンを押す操作を ひとつにするためです >「このアクションまたはメソッドを実行するには、[Form Name/フォーム名]引数 >が必要です。というエラー警告のようなものが出ます。 これは一覧フォームを開くときのエラーじゃないですか 抽出条件とは関係ありません

noname#135452
質問者

お礼

回答ありがとうございます。大変助かります! フォーム開くときのエラーなんですね、TOPメニューからこの一覧フォームを開こうとするとエラーになってしまうようで、一覧フォームを直接開くとエラーはでません。マクロのフォーム名は消して条件式だけ記入すればいいんですよね?どうしてエラーになるのだろう・・・ さらに質問になってしまいますが、一覧フォームを単体で開きカレントレコードを選択し詳細フォームを開くボタンを押しても、テーブルにある情報全てがこの詳細フォームに載ってしまいます これは詳細情報を出そうとするフォームに問題があるんでしょうか? 一覧フォームのカレントレコードから情報を引っ張れていないようです・・・。

すると、全ての回答が全文表示されます。
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

レコードソースには主キーはありますか? あればそのフィールドの名前で参照すればカレントレコードのものの値を取ってこれます 詳細フォームのソースの主キーの抽出条件欄に =Forms!一覧フォーム!主キー と書いておいて 一覧フォームで詳細を表示したいレコードをカレントにしてから 詳細フォームを開いてやればいいいのです この操作を一動作で行えるようにするには 一覧フォームの詳細セクションに、詳細フォームを開くボタンをおきます すべてのレコードにボタンが表示されますから 詳細を見たいレコードのボタンを押せば、 その瞬間ににそのレコードがカレントになり そのレコードの主キーの値が抽出条件として渡されます

noname#135452
質問者

お礼

回答有難うございます。 テーブルに主キーはありました。 抽出条件も記入してみたのですが 「このアクションまたはメソッドを実行するには、[Form Name/フォーム名]引数が必要です。というエラー警告のようなものが出ます。 >一覧フォームで詳細を表示したいレコードをカレントにしてから >詳細フォームを開いてやればいいいのです 上記の頂いた回答のやり方がわからなかったので出てきたものだと思うのですが・・・(汗 出来ればレコードをカレントにする方法を教えていただければ幸いです。

すると、全ての回答が全文表示されます。
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

マクロ 「フォームを開く」 の 「Where 条件式」 に条件を記述しましょう。 例えば 顧客番号=[Forms]![帳票フォーム名]![顧客番号] のように。 アクションの引数については、F1キー を押してヘルプを表示して 確認してください。

noname#135452
質問者

お礼

回答ありがとうございます。 Where 条件式を使えばいいのですね! もう少し勉強してみます!

すると、全ての回答が全文表示されます。

関連するQ&A