dポイントプレゼントキャンペーン実施中!

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

A 回答 (7件)

>モジュールは出来るだけ避けてたので(笑)


マクロ派ですねw

[条件]のボタンを押して条件付のマクロを作る

1行目
条件:SysCmd(10,2,"帳票フォーム")<>0
アクション:フォームを開く
 フォーム名:詳細フォーム
 ビュー:フォームビュー
 Where条件式:[主キー]=[Forms]![帳票フォーム]![主キー]

2行目
条件:SysCmd(10,2,"帳票フォーム")=0
アクション:フォームを開く
 フォーム名:詳細フォーム
 ビュー:フォームビュー

以上。

1:帳票フォームが開いていれば、レコードを指定して開きます。
2:念のため帳票フォームが開いていなければ、普通に開きます。

帳票フォームの詳細の部分にコマンドボタンを追加して上記マクロを登録してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/01/18 13:26

>レコードソースに検索クエリを入れているので


ソースに検索条件を入れたときにはマクロのほうのWhere条件は要りません
どちらかひとつにしてください
    • good
    • 0

コントロールウィザードで簡単に設定できますよ。



帳票フォームのデザイン画面
ツールボックスのコントロールウィザードを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
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/01/18 09:56

>マクロのフォーム名は消して条件式だけ記入すればいいんですよね?


これがエラーの原因です
フォーム名を消したりするから
>、[Form Name/フォーム名]引数が必要です。
といわれるのです

>テーブルにある情報全てがこの詳細フォームに載ってしまいます
エラーにもならずにですか?
それにエラーで開かないといっていたのじゃなかったっけ
    • good
    • 0
この回答へのお礼

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

>エラーにもならすにですか?
その詳細フォームのみ開いた場合の話でした(汗

お礼日時:2007/01/18 09:04

>レコードをカレントにする方法を教えていただければ幸いです。


レコードの行をクリックすると左端のレコードセレクタに三角印がつきますね
そのレコードがカレントレコードです
詳細にボタンを置くのはこのレコードをクリックする操作とボタンを押す操作を
ひとつにするためです

>「このアクションまたはメソッドを実行するには、[Form Name/フォーム名]引数
>が必要です。というエラー警告のようなものが出ます。
これは一覧フォームを開くときのエラーじゃないですか
抽出条件とは関係ありません
    • good
    • 0
この回答へのお礼

回答ありがとうございます。大変助かります!
フォーム開くときのエラーなんですね、TOPメニューからこの一覧フォームを開こうとするとエラーになってしまうようで、一覧フォームを直接開くとエラーはでません。マクロのフォーム名は消して条件式だけ記入すればいいんですよね?どうしてエラーになるのだろう・・・

さらに質問になってしまいますが、一覧フォームを単体で開きカレントレコードを選択し詳細フォームを開くボタンを押しても、テーブルにある情報全てがこの詳細フォームに載ってしまいます
これは詳細情報を出そうとするフォームに問題があるんでしょうか?
一覧フォームのカレントレコードから情報を引っ張れていないようです・・・。

お礼日時:2007/01/17 16:39

レコードソースには主キーはありますか?


あればそのフィールドの名前で参照すればカレントレコードのものの値を取ってこれます

詳細フォームのソースの主キーの抽出条件欄に

=Forms!一覧フォーム!主キー

と書いておいて
一覧フォームで詳細を表示したいレコードをカレントにしてから
詳細フォームを開いてやればいいいのです

この操作を一動作で行えるようにするには
一覧フォームの詳細セクションに、詳細フォームを開くボタンをおきます
すべてのレコードにボタンが表示されますから
詳細を見たいレコードのボタンを押せば、
その瞬間ににそのレコードがカレントになり
そのレコードの主キーの値が抽出条件として渡されます
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/01/17 14:46

マクロ 「フォームを開く」 の 「Where 条件式」 に条件を記述しましょう。


例えば
顧客番号=[Forms]![帳票フォーム名]![顧客番号]
のように。
アクションの引数については、F1キー を押してヘルプを表示して
確認してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/01/17 14:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!