こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Accessフォームパラメータについて

Access2000(2002のライセンスがあったのでアップグレード予定)で、プログラムを作ることになりました。

フォームAに、テキストボックスで文字を入力させます。

その文字をキーにして、データベースを検索し、
その情報をフォームBに上記キーをヘッダにテキストボックスで表示し、
複数業の表形式で、データを全て表示・スクロールしたいと思っています。

その時に、どのようにしてこのキーを利用していけば実現できるのか、イメージできないで困っています。

フォームAのテキストの値をキーにデータベースを読み、
該当するレコードを、全て、表形式のフォームBに表示する。
同時に、フォームAのテキストの値であるキーはヘッダ部に表示し、値が変更され、更新ボタンを押せば、検索しなおして、表示しなおす。

表示された明細には、変更ボタンを儲けて、
変更フォームで表示して更新させて、終わったら画面が表形式に戻ってくる。

こんな機能なのですが・・・。
パラメータ値であるAの値の受け渡しがうまくいかず困っていますので、どうしたら、実現できるか教えてくださいませ。

ややこしくてすみません。
アドバイス宜しくお願いします。

投稿日時 - 2007-11-10 13:53:32

QNo.3505667

すぐに回答ほしいです

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

フォームBをサブフォームを使ったフォームにしては?


話しやすくするため、元になる適当なデータを作ります。
テーブル1
フィールド1 フィールド2 フィールド3
フィールド1が主キーまたは重複の無いフィールド、フィールド2が検索するデータのフィールドとします。

そこに適当にデータを入れておきます。
フィールド1 フィールド2 フィールド3
1 あ ああ
2 い いい
3 あ うう
4 あ ええ
5 い おお


フォームBリスト(フォームBの中のサブフォーム用)
フォームのプロパティを設定します。
「既定のビュー」を「データシート」にします。
「レコードソース」を「テーブル1」にします。
「更新の許可」を「いいえ」にします。
「削除の許可」を「いいえ」にします。
「追加の許可」を「いいえ」にします。
テーブル1の全てのフィールドをフォームBに貼り付けます。(実際は表示したい物だけ)
これを保存しておきます。


フォームB
サブフォーム/サブレポートと、テキストボックスと、コマンドボタンを貼り付けます。
名前を例えば、
検索結果(サブフォーム/サブレポート)
検索データ(テキストボックス)
修正(コマンドボタン)(表題も同じ)
閉じる(コマンドボタン)(表題も同じ)
とします。

検索結果(サブフォーム)のプロパテイーで、
「ソースオブジェクト」を「フォームBリスト」にします。
「リンク子フィールド」を「フィールド2」にします。
「リンク親フィールド」を「検索データ」にします。

各コマンドボタンのクリック時を
Private Sub 修正_Click()
DoCmd.OpenForm "フォームC", , , "フィールド1=""" & 検索結果!フィールド1 & """" 'フィールド1が文字列の場合
End Sub
Private Sub 閉じる_Click()
DoCmd.Close acForm, Me.Name
End Sub
にする。


フォームA
テキストボックスと、コマンドボタンを貼り付けます。
検索データ(テキストボックス)
検索(コマンドボタン)(表題も同じ)
コマンドボタンのクリック時を
Private Sub 検索_Click()
DoCmd.OpenForm "フォームB"
Forms!フォームB.検索データ = 検索データ
End Sub


フォームC(データ修正用)
フォームのプロパティを設定します。
「レコードソース」を「テーブル1」にします。
「削除の許可」を「いいえ」にします。
「追加の許可」を「いいえ」にします。
テーブル1の全てのフィールドをフォームCに貼り付けます。(実際は表示したい物だけ)
修正(コマンドボタン)(表題も同じ)
中止(コマンドボタン)(表題も同じ)
各イベントのクリック時を
Private Sub 修正_Click()
DoCmd.Close acForm, Me.Name
End Sub
Private Sub 中止_Click()
Me.Undo
DoCmd.Close acForm, Me.Name
End Sub
にする。


これでフォームAを表示してみてください。
フォームAで、テキストボックスに「あ」または「い」または他の文字を入れて、「検索」ボタンを押すと、フォームBが表示されます。
フォームBで、表示されているデータを選択して修正を押すと、フォームCが表示されます。

こんな感じでしょうか?
あと、エラーチェックが必要ですが・・・

p.s.
キーを入力するテキストボックスもフォームBに置いた方が使いやすいような気もしますが・・・

投稿日時 - 2007-11-11 14:29:30

お礼

アドバイスを元に、試行錯誤しながら、やってきました。
なんとか、実現できました。
ありがとうございました。

投稿日時 - 2007-11-13 16:22:58

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問