- ベストアンサー
Access2002でTEXTBOXに値を表示させる方法
- Access2002で、コンボボックスの入力値に応じてテキストボックスに値を表示させる方法を教えてください。
- テーブルAとテーブルBのリレーションを利用して、コンボボックスの選択値に応じてテキストボックスに関連する値を表示させる方法を教えてください。
- Access2002で、コンボボックスAとコンボボックスBの入力値に応じてテキストボックスに関連する値を表示させる方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
補足: 仮にコンボボックスを2つ配置するもんだと仮定すると問題があります。 コンボ_A=SELECT [項目A1] FROM A GROUP BY [項目A1]; コンボ_B=SELECT [項目A2] FROM A GROUP BY [項目A2]; このように GROUP BY を使う必要があります。 (が、ここが質問に明記されていないです!) 仮に、GROUP BY を使うことを意図しているのであれば、テキストボックスの更新は次のようです。 Private Sub コンボ_A_AfterUpdate() テキスト0_Update End Sub Private Sub コンボ_B_AfterUpdate() テキスト0_Update End Sub Public Sub テキスト0_Update() Dim strSQL As String strSQL = "SELECT B.項目B2 " & _ "FROM A INNER JOIN B ON A.項目A3 = B.項目B1 " & _ "WHERE A.項目A1='" & Me.[コンボ_A] & "' AND A.項目A2='" & Me.[コンボ_B] & "'" Me.テキスト0 = DBLookup(strSQL) End Sub Access の DLookup関数は、単純なSelect文しか実行できません。 ですから、機能を拡張した DBLookup関数の類を用意し利用することになります。 ちなみに、テキストボックスには'ああ'か'いい'が表示されることになります。 <33=>30 のミスだとすると・・・> 'うう'を表示するには、また、別途に、複数レコードを取得する関数 DBSelect などが必要となります。 Public Sub テキスト0_Update() Dim strSQL As String strSQL = "SELECT B.項目B2 " & _ "FROM A INNER JOIN B ON A.項目A3 = B.項目B1 " & _ "WHERE A.項目A1='" & Me.[コンボ_A] & "' AND A.項目A2='" & Me.[コンボ_B] & "'" Me.テキスト0 = Replace(DBSelect(strSQL, True), ";", "") End Sub まあ、このようにケースによってやり方は色々。 DBLookup関数、DBSelect関数をここで紹介しても構わないのですが、いずれにしろ、仮定の上での話しなので・・・。
その他の回答 (1)
質問に曖昧な点があります。 >画面から、二つのコンボボックス項目 リスト0.値集合ソース= SELECT [B].[項目B2] FROM A INNER JOIN B ON [A].[項目A3]=[B].[項目B1] WHERE [A].[項目A1]=[Forms]![フォーム1]![コンボ0]; ここでは、コンボボックスに二つの項目と解釈。 二つのコンボボックスのそれぞれの値に応じても、要は、この値集合ソースが変わるだけ。 さて、仮に、テキストボックスではなくリストボックスに表示することとします。 Private Sub コンボ0_AfterUpdate() Me.[リスト0].Requery End Sub これでOKです。 どうしても、テキストボックスに表示したい時は、 Private Sub コンボ0_AfterUpdate() On Error Resume Next Dim I As Integer Dim N As Integer Dim T As String Me.[リスト0].Requery N = Me.[リスト0].ListCount - 1 For I = 0 To N T = T & Me.[リスト0].ItemData(I) & vbCrLf Next I Me.テキスト0 = Left(T, Len(T & "") - 1) End Sub この場合、リストボックスは単なるデータの中継をしていますので非表示に。 On Error Resume Next は、表示が空文の時のLeft関数のエラー対策です。 ※二つのコンボボックスのそれぞれの値に応じての<値集合ソース>は、多分、クエリを利用すれば・・・。
お礼
ご丁寧にありがとうございました。 チャレンジしてみます。