プロが教える店舗&オフィスのセキュリティ対策術

ACCESS2000の初心者です。AとBの2つのフォームがあり、それぞれテーブルが別ですが、ID名が同じにしてあります。
例えば、Aフォームを開いて、ID番号100を閲覧しているとき、Bフォームを開くと、BフォームのID番号100のデータを閲覧できる方法はどうすればよろしいのでしょうか。いろんな参考書をみてみたりしましたが、いまいちピンポイントな回答がありません。よろしくお願いいたします。

A 回答 (3件)

いろんな方法があります


1.BをAのサブフォームにする
  Aの中のどこかにBを表示させるサブフォームエリアを作る
  AとBとのリンク用項目は ID番号 を指定
2.Aを見ていて必要なときにだけBを表示させる方法
  Bをポップアップフォームにする
  Bの使用クエリーには選択クエリーを指定する
  その選択クエリーにはAで見ている(カーソルされている)
  ID番号のデーターのみを得るために
  クエリーの選択条件として
  [forms]![Aのフォーム名]![ID番号]
というようなかたちで指定をする
  このポップ画面方式でする場合には 
  Bフォームを開くためのマクロ用ボタンを
  Aフォームの中に作っておく必要があります 

この回答への補足

早急な回答ありがとうございます。1.の方法はやってみて理解できましたが、2.の方法で、「クエリーの選択条件として[forms]![Aのフォーム名]![ID番号]というようなかたちで指定をする」とはクエリーのデザインビューのどこに指定すればよいのでしょうか。もしかしてずれた質問かもしれませんが、やり方がよくわかりませんということです。お願いします。

補足日時:2006/04/20 23:50
    • good
    • 0

>Aフォームを開いて、ID番号100を閲覧しているとき、Bフォームを開くと、BフォームのID番号100のデータを閲覧できる方法



一番簡単な方法はAにBを開くボタンを作りBを開く時にフィルタを指定する方法です。ボタンを配置するとウィザードが開くのでボタンの動作をフォームの操作でフォームを開くにします。次にBを選択し特定のレコードを表示するにします。AとBのIDを関連付けて結合します。後は順次進めて完了させればできます。

VBではBを開くボタンの名前をCmd1とすると下記になります。Bを開く時に開くコマンドに因数でIDの抽出を指定します。
Private Sub Cmd1_Click()
On Error GoTo Err_Cmd1_Click
Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "B"
stLinkCriteria = "[ID]=" & "'" & Me![ID] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Cmd1_Click:
Exit Sub
Err_Cmd1_Click:
MsgBox Err.Description
Resume Exit_Cmd1_Click
End Sub
これが簡単。
    • good
    • 0
この回答へのお礼

Access2000のVBAでまだ作製したことがなく、エクセルでしかVBAを使用したことがありませんでしたが、この方法でも試してみようと思います。非常に丁寧な回答ありがとうございました。わかりやすかったです。

お礼日時:2006/04/21 21:12

NO1です


追加説明です
新規(選択クエリー)クエリーを作成します
元のテーブルはBフォームに使用しているテーブルです
テーブルの全項目をフイールド横方向に展開(出力指示)
フイールドのところに当然、ID番号とあるはずなので
ここのところで、下部の「抽出条件」のところへ
[FORMS]![Aフォーム名]![AフォームのなかでのID番号につけている名前] を入力すると そのときのAフォームに表示されている
ID番号の値と同じレコードを選択しなさい
という意味になります
Bを開くマクロ命令の時にフイルター指定でこのクエリー名を入れます
    • good
    • 0
この回答へのお礼

丁寧な回答ありがとうございました。これでなんとか悩んでいたことが解決できそうです。助かりました。

お礼日時:2006/04/21 21:07

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