- ベストアンサー
MS Access2000のフォームについて
たとえば、Aという表形式のフォームがあります。 項目名は、氏名、生年月日、年齢です。 そのフォームのレコードごとの右端にはコマンドボタンがあります。 そのコマンドボタンをクリックすると、Bというフォームが開きAで選択したデータの詳細(氏名、生年月日、年齢、住所、電話番号等々)が表示されるようにしたいのですが、そのやり方をどなたか教えていただけないでしょうか。 VBA初心者ですが、簡単なものならわかるのでVBAを使用したものでもOKです。 どうぞよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
私も初心者なので詳しいことは言えないのですが、氏名、生年月日、 年齢とBの(氏名、生年月日、年齢、住所、電話番号等など)は同じ テーブルなのでしょうか? もし同じテーブルであれば Dim lngID As Long lngID = Me.id.Value 'フォームのidフィールドの値を変数に格納 DoCmd.Close’Aのフォームを閉じます。 DoCmd.OpenForm "テストB", acNormal, , "id=" & lngID 'OpenFormの第4引数に抽出条件をセットします。 私の少ない経験上このような感じでした。解説するとidというテキスト Boxを付けてあげてキーとします。 それを元に同じ内容のBのFormを開くことが出来ます。 そうではなくて検索の場合は Dim dte As String Dim strSQL As String If IsNull(Me.txt3) = True Then MsgBox "抽出条件が入力されていません!(^o^;)" Exit Sub End If ’txt3というTextBoxに抽出条件が入っていない場合はErr dte = Me.txt3.Value strSQL = "SQNO='" & dte & "'" 'SQL文のWhereの中味を抽出条件として入れる。 '(フィルタプロパティの性質でWhereの中味のみ条件設定が出来る) With Me.subList.Form 'メインフォームの中のサブフォームを指定 .Filter = strSQL .FilterOn = True End With 上記のような検索方法もあります。 上記はサブフォームの一覧を検索するため私が作ったものなので あまりお役には立てないのかもしれません。
その他の回答 (1)
AとBの表示元のレコードが同じだとして。 (1)Aフォームにはレコードの全フィールド(表示・非表示問わず)を持つ。 (2)Bフォームを開いたら、Aの各フィールドの値をBの各表示フィールドに代入。 この場合、データの編集はできません。 編集させるなら (1)Aのフォームには表示させたい項目と主キー(非表示可)を持つ。 (2)Bフォームを開く前に、選択レコードの主キーでもってBフォームのレコードソースのクエリ(テーブルですか?フィルタとかだっけ?忘れた)のSQLを編集する。 (3)Bフォーム開く あーアバウトっ。 あまりに途方にくれたらまたレス付けてください。
お礼
回答ありがとうございます。 早速試してみます。 もし、うまくいかないようでしたらまた、よろしくお願いいたします。 ありがとうございました。
お礼
早速のアドバイスありがとうございます。 テーブルは同じですので、早速使わせていただきます。 また、大変勉強になりましたありがとうございます。