プロが教えるわが家の防犯対策術!

OSは98SEでACCESS2000を使用しています。

Aという帳票フォームとBという単票フォームがあります。
A帳票フォームには製造指示日、原料番号、原料種類、原料重量という項目があり、データが表示されています。

B単票フォームには製造指示日、原料番号、原料種類、原料重量、開始日時、労務時間等A帳票フォームの詳細があります。

A帳票フォームのデータ1をクリックすると、Bという単票フォームに移動してデータ1の詳細が表示される様にしたくていろいろやってみようと思ったのですが、どの様にしたらよいかさっぱりわかりません。
どなたか教えていただけないでしょうか。
簡単なVBAはわかりますが、やさしく教えていただけるとうれしいです。
どうぞよろしくお願いいたします。

A 回答 (4件)

コマンドボタンのウィザードを使いましょう。



1.A帳票フォームの詳細セクションにコマンドボタンを配置しする。
2.(ウィザードが立ち上がる)
3.フォームを開くを選択しB単票フォームを選ぶ
4.特定のレコードを表示するを選択し
5.どのカラムで関連付けるか選択する。

生成されたコマンドは以下のようになります。
------------------------------
Private Sub コマンド1_Click()
On Error GoTo Err_コマンド1_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "B単票"

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

Exit_コマンド1_Click:
Exit Sub

Err_コマンド1_Click:
MsgBox Err.Description
Resume Exit_コマンド1_Click

End Sub
---------------------------------------
    • good
    • 0
この回答へのお礼

storkさん回答ありがとうございます。
また、わかりやすい説明で助かりました。
早速使わせていただきました。
自分の中で、さっぱりわからないこともあり難しく考えていたので、
Storkさんの回答をいただいたときは、えっ?これでできるの?というかんじでしたf^^;
本当に助かりました、今後ともよろしくお願いいたします。
ありがとうございました。

お礼日時:2001/08/21 18:22

補足します。


サブフォームの作り方
・新規作成からフォームウィザードで必要なテーブルを選択する。
・必ず単票形式で作成する。
・サブフォームをデザインビューで開けて、フォームのプロパティ
の中から書式→既存のビューで「データシート」を選択します。

メインの作り方
・新規作成→デザインビューで新たにメインフォームを作成。
・デザインビューでツールボックスからサブフォーム/サブレポート
を選択し貼り付けるサブフォームのプロパティでデータのソースオ
ブジェクトを先に作ったサブフォーム名を選択する。

原料番号が単票形式だと1テキストボックスだけになるのでプロパ
ティのイベントのダブルクリック時に↓を記述する。

Private Sub 番号_DblClick(Cancel As Integer)

Dim lngID As Long

lngID = Me.原料番号.Value 'フォームの原料番号フィールドの値を変数に格納
DoCmd.Close acForm, "フォームA" 'Aのフォームを閉じます。
DoCmd.OpenForm "フォームB", acNormal, , "原料番号=" & lngID
'フォームBを開く際にフォームAの原料番号とフォームBの原料番号を「=」にする。

End Sub

これでWクリックした原料番号がフォームBに返されます。
上記の記述は応用が利きます。ので色々使って見てください。

もし間違っていたら追記してください。
    • good
    • 0
この回答へのお礼

補足ありがとうございます。
初心者な私にはちょっとわからないところがあったのですがとても参考になりました。
今回は急いでいることもあり、storkさんの方を使わせていただこうと思います。
また、教えていただいたやり方を自分なりに勉強させていただき、後々活用させていただこうと思ってます。
本当にありがとうございました。

お礼日時:2001/08/21 18:14

詳しい状況がわからないので


簡単な検索閲覧方法を記述します。

1.帳票フォームにフォームフッターを右クリックから選択して付
けます。そこにコンボボックスを付け原料番号を検索キーとして
プロパティの『データ』の値集合ソースを「...」から選択し原料
番号「元テーブル名」に設定します。
『書式』の列数を2にして、列幅を1cm;2cmにして、リスト幅を4cmに
します。
↑でコンボボックスが完成し選択も出来るはずです。
まだ連結していませんので↓

Private Sub 移動先_AfterUpdate()

DoCmd.ShowAllRecords
DoCmd.GoToControl "原料番号"
DoCmd.FindRecord Me![移動先], acAnywhere, , acDown

End Sub

フォームを「デザインビュー」に戻し、[移動先]コンボボックスの
[更新後処理]イベントプロシージャに記述します。
以上が簡単な検索方法です。
この後に前に記述した↓

>Dim lngID As Long

>lngID = Me.id.Value 'フォームのidフィールドの値を変数に格納
>DoCmd.Close’Aのフォームを閉じます。
>DoCmd.OpenForm "テストB", acNormal, , "id=" & lngID
> 'OpenFormの第4引数に抽出条件をセットします。

>解説するとidというテキストBoxを付けてあげてキーとします。
>それを元に同じ内容のBのFormを開くことが出来ます。

を連動させると次フォームが開けます。
(例)
Private Sub 移動先_AfterUpdate()
Dim lngID As Long

DoCmd.ShowAllRecords
DoCmd.GoToControl "原料番号"
DoCmd.FindRecord Me![移動先], acAnywhere, , acDown
'↑必要があればのお話です。
lngID = Me.原料番号.Value 'フォームの原料番号フィールドの値を変数に格納
DoCmd.Close acForm, "フォームA" 'Aのフォームを閉じます。
DoCmd.OpenForm "フォームB", acNormal, , "原料番号=" & lngID
End Sub

正しい方法では無いと思いますが、最初に覚えた方法なので・・・ご了承ください。
上記の方法を転用すると仮定してクリックした居場所の「クリック時イベント」に
記述すれば使えるかと・・・思います。



もしそれ以上をご希望ならばサブフォームを使用する方法が効率的
だと思います。
(例)サブフォームを作る方法
1.TBL・クエリをデータシートで作成しておきます。
2.新しいフォームをデザインビューから作成しツールボックスから
サブフォーム/サブレポートを選択し最初に作成したサブフォームを
選択します。
3.検索キーもしくはサブフォーム内のクリック動作で次フォームに
移動するのが良いと思います。
※ただし、説明がだいぶ長くなりますのでご希望であれば追記して下さい。
注意)自信はありませんので・・・。
    • good
    • 0
この回答へのお礼

丁寧なアドバイスありがとうございます。
早速試して見たいと思います。
不明な点等また質問させてください。

お礼日時:2001/08/21 14:09

よくわからないけれど、


フォーム選択    → デザインクリック → プロパティ表示 →
イベントタブクリック→ クリック時...ボタンクリック
で、
コードビルダを立ち上げて、

データ1_click()
show B

じゃだめですか?
Aを見せたくないなら

  hide A

とか・・・。

もっと簡単な方法があるのかなぁ?
全然やりたいこと違ったらごめんなさい。
    • good
    • 0
この回答へのお礼

早速のアドバイスありがとうございます。
早速試してみたいとおもいます。
また、よろしくお願いいたします。

お礼日時:2001/08/21 12:59

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

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