重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

こんにちは。度々質問させていただき、いつもお世話になっております。
今作成しているものの流れを下に書きます。

テーブル:
「社員マスタ」、「社員マスタ_抜粋」
※「社員マスタ_抜粋」は「社員マスタ」から最低限必要な項目だけをクエリで抜き取ったテーブルです(例えば、社員ID、氏名、所属部署など)
フォーム:
「社員マスタ」(表形式)、「社員マスタ_抜粋」(表形式)、「社員マスタ_詳細」(単票形式)
※「社員マスタ_詳細」は「社員マスタ」テーブルのレコードを一件一件単票形式で見れるフォームです

●実現させたいこと
1、「社員マスタ_抜粋」フォームの中に作成した「詳細」ボタンをクリック
2、「社員マスタ_抜粋」のカレントレコードの社員CDと同じ社員CDのレコードを
「社員マスタ」から探し、「社員マスタ_詳細」フォームにて表示

●手順2を行うプログラム手順として(自分の頭の中で)
1、「社員マスタ_抜粋」フォームよりカレントレコードの社員CDを引数として、
「社員マスタ_詳細」フォームに渡す(Docmd.OpenArgs 使用)
2、「社員マスタ_詳細」フォームロード時に引数の社員CDと同じ社員CDをもつレコードを
「社員マスタ」テーブルから検索(FindRecord?)
3、発見したレコード内容を「社員マスタ_詳細」フォームに表示

自分で言うのもなんですが、上で書いたプログラム手順はものすごく
効率が悪いのではないかと思います。
またFindRecordでの検索も、このケースに適しているのかわかりません。
プログラム作成の流れ、この部分にはこんな関数がいいんじゃないか?
等、何でも構いませんのでどなたかいいアドバイスをお願いします。

A 回答 (4件)

Private Sub コマンド詳細参照_Click()


On Error Resume Next
  DoCmd.OpenForm "社員マスタ_詳細", , ,"社員CD=" & Me.社員CD
End Sub

余り、複雑な手順は必要ないです。
これで、対応する詳細情報を単票形式で表示することが出来ます。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます!
今書いて試してみたのですが、「OpenFormアクションはキャンセルされました」
と注意されます。これはなぜでしょうか?

お礼日時:2006/11/09 13:19

今考えてあおられる手順でもかまわないと思いますが


難しいことをしなくとも
詳細フォームのソースをクエリにし、社員CDの抽出条件欄に
=Froms!社員マスタ_抜粋!社員CD
と書くだけでいいいのでは

詳細フォームを開くボタンは社員マスタ_抜粋の詳細セクションに置きます
これで全てのレコードにボタンが表示されるようになり
詳細を見たい社員のボタンを押せばそのレコードがカレントになりますから
詳細フォームはその社員のものが開きます
    • good
    • 0

パラメータの一字一句は、あくまでも例示です。



・コマンドボタンウィザードを起動。
・[フォームの操作]-[フォームを開く]を選択。
・該当するフォームを選択。
・[特定のレコードを表示する]を選択。
・関連付けるフォールドを選ぶ。
・最後まで進む。

Private Sub コマンド74_Click()
On Error GoTo Err_コマンド74_Click

  Dim stDocName As String
  Dim stLinkCriteria As String

  stDocName = "売上伝票"
  
  stLinkCriteria = "[ID]=" & Me![売上伝票ID]
  DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_コマンド74_Click:
  Exit Sub

Err_コマンド74_Click:
  MsgBox Err.Description
  Resume Exit_コマンド74_Click
  
End Sub

で、このようなコードが生成されます。
冗長ですので、次のように修正します。

Private Sub コマンド74_Click()
On Error Resume Next
  DoCmd.OpenForm "売上伝票", , , "[ID]=" & Me![売上伝票ID]
End Sub

との手順を試して下さい。
    • good
    • 0

普通 Query を使うのではないかしらん。



パラメータに社員コードを持つQueryを作って、

あ・・時間切れ
    • good
    • 0

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

関連するカテゴリからQ&Aを探す