Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1296 / 2272 ツリー ←次へ | 前へ→

【7839】フォーム内での値参照 Satsuki 06/5/19(金) 16:55 質問[未読]
【7841】Re:フォーム内での値参照 まさ7251 06/5/19(金) 23:48 回答[未読]
【7842】Re:フォーム内での値参照 Satsuki 06/5/20(土) 11:56 お礼[未読]
【7845】Re:フォーム内での値参照 Satsuki 06/5/22(月) 15:42 質問[未読]
【7847】Re:フォーム内での値参照 まさ7251 06/5/22(月) 19:00 発言[未読]
【7849】Re:フォーム内での値参照 Satsuki 06/5/23(火) 10:43 お礼[未読]

【7839】フォーム内での値参照
質問  Satsuki  - 06/5/19(金) 16:55 -

引用なし
パスワード
   こんにちは、Satsukiと申します。
フォームはあまり使ったことがありませんので、初歩的なことがわかりません。
丸2日ほど、あちこち検索しましたが、どうしても見つかりませんでしたので、お願いいたします。

フォームA(データソース:クエリーA)の値A(テキストA)を参照して、クエリーBのBの値を同じフォーム内のテキストボックスCに表示させたいです。

値Aにはイベントプロジージャの更新後処理でクエリーBの再クエリーを設定してあり、テキストボックスCのコントロールソースには、クエリーBを指定しました。クエリーBの参照先には[forms]![フォームA]![テキストA]
が、実際開いてみるとテキストボックスCに#Name?とでます。
他にもDLOOKUP関数などを試してみましたが、上手くいきません。
どなたかアドバイスお願いできますでしょうか?

【7841】Re:フォーム内での値参照
回答  まさ7251  - 06/5/19(金) 23:48 -

引用なし
パスワード
   >フォームA(データソース:クエリーA)の値A(テキストA)を参照して、クエリーBのBの値を同じフォーム内のテキストボックスCに表示させたいです。
>
>値Aにはイベントプロジージャの更新後処理でクエリーBの再クエリーを設定してあり、
>テキストボックスCのコントロールソースには、クエリーBを指定しました。

コントロールソースに設定できるのは、
フォームのデータソース内にあるフィールドのみですよ。

>クエリーBの参照先には[forms]![フォームA]![テキストA]
>が、実際開いてみるとテキストボックスCに#Name?とでます。

よって、エラーが出るのは当然かと思われます。

>他にもDLOOKUP関数などを試してみましたが、上手くいきません。

DLookUpでやるしかないかと思いますが、
具体的にどのように試してみて、どううまくいかないのでしょうか?
とりあえず、ヘルプには、説明、使用例が載ってると思いますので、
そちらを確認してみてください。

それでもわからないのでしたら、
どのようにして試してみて、どううまくいかないのか。
その辺を詳しく書き込んでください。

【7842】Re:フォーム内での値参照
お礼  Satsuki  - 06/5/20(土) 11:56 -

引用なし
パスワード
   ▼まさ7251 さん:
>コントロールソースに設定できるのは、
>フォームのデータソース内にあるフィールドのみですよ。

そうなんですか。ご教示ありがとうございます。

>DLookUpでやるしかないかと思いますが、
>具体的にどのように試してみて、どううまくいかないのでしょうか?
>とりあえず、ヘルプには、説明、使用例が載ってると思いますので、
>そちらを確認してみてください。

DLookupでならやれるのですね!
どこかに載っていた使用例を見てやってみましたが、
指定方法が間違っていたかもしれません。

>それでもわからないのでしたら、
>どのようにして試してみて、どううまくいかないのか。
>その辺を詳しく書き込んでください。

ありがとうございます。
月曜日会社でもう一度試してみて、だめでしたら、また質問させて頂きます。

【7845】Re:フォーム内での値参照
質問  Satsuki  - 06/5/22(月) 15:42 -

引用なし
パスワード
   >DLookUpでやるしかないかと思いますが、
>具体的にどのように試してみて、どううまくいかないのでしょうか?
>とりあえず、ヘルプには、説明、使用例が載ってると思いますので、
>そちらを確認してみてください。

まさ7251さんありがとうございました。
Dlookupを使ったらできました。

ところで次の段階でまた行き詰ってしまいました。
具体的には、フォーム「表示」(データソース「選択」)のテキストボックス「CD」の値を参照し、テーブル「バンド」の中の「コード1」と照らし合わせて、「グループ」の値をテキストボックス「グループ表示」に表示するという形にやり直しました。

テキストボックス「グループ表示」のコントロールソースに
=DLookUp("グループ","バンド","コード1=" & [CD])と入力したらできたのですが、実際には、「バンド」というテーブルの中には、コード1、コード2、コード3・・・というようにフィールドが12個あり、その複数フィールドのどこかに「CD」と一致するものがあり、それに対応する「グループ」を表示しなければいけません。

DLookUpをORでつなげようとしたら、エラーになってしまうので、
どこかのページを参考にして、今度はテキストボックス「CD」の更新後処理のイベントプロジージャに
Private Sub CD_AfterUpdate()
  Dim Rst as DAO.Recordset

  S = Me.CD
  Set Rst = バンド
  Rst.MoveFirst

  Rst.FindFirst"[コード1] = '" & S & "'"
  Me![グループ表示] = "グループ"
  If Rst.NoMatch Then
  Rst.FindFirst"[コード2] = '" & S & "'"
  Me![グループ表示] = "グループ"
  If Rst.NoMatch Then
  Rst.FindFirst"[コード3] = '" & S & "'"
  Me![グループ表示] = "グループ"
    ・
    ・
    ・
End If

End Sub

と記述してみましたが、テキストボックス「グループ表示」の中は空欄のままです。
どこを直したらよいかご教示頂けないでしょうか?

【7847】Re:フォーム内での値参照
発言  まさ7251  - 06/5/22(月) 19:00 -

引用なし
パスワード
   >テキストボックス「グループ表示」のコントロールソースに
>=DLookUp("グループ","バンド","コード1=" & [CD])と入力したらできたのですが、実際には、「バンド」というテーブルの中には、コード1、コード2、コード3・・・というようにフィールドが12個あり、その複数フィールドのどこかに「CD」と一致するものがあり、それに対応する「グループ」を表示しなければいけません。
>
>DLookUpをORでつなげようとしたら、エラーになってしまうので、

Orで繋げるのが一番簡単とは思いますが。

>どこかのページを参考にして、今度はテキストボックス「CD」の更新後処理のイベントプロジージャに
>Private Sub CD_AfterUpdate()
>  Dim Rst as DAO.Recordset
>
>  S = Me.CD
>  Set Rst = バンド
>  Rst.MoveFirst
>
>  Rst.FindFirst"[コード1] = '" & S & "'"
>  Me![グループ表示] = "グループ"
>  If Rst.NoMatch Then
>  Rst.FindFirst"[コード2] = '" & S & "'"
>  Me![グループ表示] = "グループ"
>  If Rst.NoMatch Then
>  Rst.FindFirst"[コード3] = '" & S & "'"
>  Me![グループ表示] = "グループ"
>    ・
>    ・
>    ・
>End If
>
>End Sub

これって、エラーでませんか?

とりあえず、Databaseに関しての記述がない。
Rst への代入が間違っています。

【7849】Re:フォーム内での値参照
お礼  Satsuki  - 06/5/23(火) 10:43 -

引用なし
パスワード
   >>DLookUpをORでつなげようとしたら、エラーになってしまうので、
>
>Orで繋げるのが一番簡単とは思いますが。

ありがとうございました。ORでつなぐことができました。
条件欄だけをORにするのですね。
ご教示ありがとうございました。

1296 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078227
(SS)C-BOARD v3.8 is Free