Access2002でTEXTBOXに値を表示させる方法

このQ&Aのポイント
  • Access2002で、コンボボックスの入力値に応じてテキストボックスに値を表示させる方法を教えてください。
  • テーブルAとテーブルBのリレーションを利用して、コンボボックスの選択値に応じてテキストボックスに関連する値を表示させる方法を教えてください。
  • Access2002で、コンボボックスAとコンボボックスBの入力値に応じてテキストボックスに関連する値を表示させる方法を教えてください。
回答を見る
  • ベストアンサー

Access2002で力をお貸しください

ACCESSで、TEXTBOXに値を表示させたいと考えています。 画面から、二つのコンボボックス項目 A B を選択入力させます この値をキーに テーブルA 項目A1 項目A2 項目A3 A      A     10 A      B     22 B      B     30 を検索し、 テーブルBの 項目B1 項目B2 10     ああ 22     いい 33     うう 項目A3と項目B1はリレーション で項目B2の値を、 コンボボックスA,Bの入力値にあわせて、 テキストボックス表示でを変更させたい。 と考えています。 どうすれば実現できますか? どうか教えてください。

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

  • ベストアンサー
noname#140971
noname#140971
回答No.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関数をここで紹介しても構わないのですが、いずれにしろ、仮定の上での話しなので・・・。

groovyreality
質問者

お礼

ご丁寧にありがとうございました。 チャレンジしてみます。

その他の回答 (1)

noname#140971
noname#140971
回答No.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関数のエラー対策です。 ※二つのコンボボックスのそれぞれの値に応じての<値集合ソース>は、多分、クエリを利用すれば・・・。

関連するQ&A

  • Accessでの入力で。

    「一覧」テーブル ・名前 [テキスト] ・項目1 [コンボボックス/項目] ・項目1の評価 [コンボボックス/評価] ・項目2 [コンボボックス/項目] ・項目2の評価 [コンボボックス/評価] としてあり、 「評価」テーブルは5~1の値が入っている状態です。 「項目」テーブルには何も入っていなく、 テーブルの「項目1」や「項目2」で値が入力されたら、その値をどんどん追加していきたいのです。 そしてその「項目」テーブルの値を「項目1」や「項目2」で使用して・・・と相互させたいのです。 このようなことを実現させる方法は何でしょうか?

  • ACCESSでコントロールできますか?

    相変わらず、アクセス初心者の者です。 Accessで、以下のテーブルが三つ用意されています。 テーブル1 Aid A名称 テーブル2 Bid Aid B名称 テーブル3 Bid C名 Cid ここで、同一項目名で書いた物は、以下の件数条件でリンクしています。 Aid<Bid<Cid 1<n<n+の関係です テーブル3のC名をコンボボックスCで選択入力できるようにします。 コンボボックスで選択内容を変える毎に、あるいはDBを読み込み表示しているデータが変わる毎に、別に設置したテキストボックスAに、A名称を表示するようにしたいのですが、可能でしょうか? どのようにすれば、実現できますか? ややこしい説明ですが、宜しくお願いします。

  • vb6のコンボボックスの操作について

    おはようございます。 vb6+MDBの環境下で、コンボボックスについて質問です。 マスタとなるテーブルA(都道府県など)と、一般的(?)なデータを日々貯めていくテーブルBがあり、 Bに、Aのキーとなる値が保存されています。 テーブルデータBの表示・更新画面を作っているのですが、 テーブルAの内容を画面上のコンボボックスに選択項目としてADDして表示するところまでは出来たのですが、以下のことを実現するには、コンボボックスにどういう記述で実現するのかわかりません。 1.テーブルBに持っているAの都道府県コードに該当する項目を、Bのデータ選択時に表示したい。 【テーブルA】 Aのキーコード,都道府県名 【テーブルB】 Bのキーコード,Aのキーコード,住所… このような場合、イベント時にコンボボックスをどのように処理するようにソースを書けば実現できますか?

  • ACCESSコンボボックスの初歩的な質問ですが…

    初歩的な質問ですいません。最近ACCESSを始めたのですがわからないことがあったので教えてください。 入力フォームを使ってテーブルにデータを入力しようとしています。 そこでコンボボックスを3つ利用して項目を選択して入力する方法を考えました。 ただ、コンボボックス1である項目を選択したらコンボボックス2でそれに対応した項目しか表示されないようにしたら 入力ミスを防げると思ったのですがこれを実現するにはどのような手順を踏めばいいでしょうか? 更に予定としてはコンボボックス2で選んだ項目によってコンボボックス3で選択できる項目も絞り出したいと思っています。 要するに教えてgooの質問をするときのカテゴリ選択みたいにしたいのです。 よろしくお願いします。

  • Accessのフォームについて

    Accessで、テーブルへのデータ入力を簡易化するための、フォームを作成しています その中で、コンボボックスのなかから項目を入力したら 別に用意されているテーブルから 一致する項目をテキストボックスに 自動的に値を入力できるようにしたいのですが、 どのようにしたらいいのか、わかりません。 ~フォームに入力する項目~ 氏名、年齢、地区(コンボボックス)、地区コード、地区番号、住所、電話番号  等 ~地区テーブル~ 地区コード、地区、地区番号 調べてみたところ、プロパティのコントロールソースというところで、 値を持ってくるための式を作成するということでしたが・・・ 実践してみたのですが、初心者ゆえ、あまりよく理解できませんでした どうかよろしく御願いします。

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

    Access2000(2002のライセンスがあったのでアップグレード予定)で、プログラムを作ることになりました。 フォームAに、テキストボックスで文字を入力させます。 その文字をキーにして、データベースを検索し、 その情報をフォームBに上記キーをヘッダにテキストボックスで表示し、 複数業の表形式で、データを全て表示・スクロールしたいと思っています。 その時に、どのようにしてこのキーを利用していけば実現できるのか、イメージできないで困っています。 フォームAのテキストの値をキーにデータベースを読み、 該当するレコードを、全て、表形式のフォームBに表示する。 同時に、フォームAのテキストの値であるキーはヘッダ部に表示し、値が変更され、更新ボタンを押せば、検索しなおして、表示しなおす。 表示された明細には、変更ボタンを儲けて、 変更フォームで表示して更新させて、終わったら画面が表形式に戻ってくる。 こんな機能なのですが・・・。 パラメータ値であるAの値の受け渡しがうまくいかず困っていますので、どうしたら、実現できるか教えてくださいませ。 ややこしくてすみません。 アドバイス宜しくお願いします。

  • アクセスで同じ値を引き出してくる方法

    アクセス初心者です。 フォームのテキストボックス(txt開催日)に『12345』と言う値が入っています。 テーブル(T_受講料)で『12345』は『5000』と言うテーブルを作っています。(他、多数のデータがあります) そのテーブルは単独でリレーションを結んでいません。(構造上無理なため) どうやったら、フォームに新たに作ったテキストボックスに『5000』を入力できるのでしょうか? よろしくお願いします。

  • Accessのサブフォームから値を参照する方法について

    いつも拝見させて頂いております。 現在、Access97のフォームに以下のようなコントロールを配置しています。 1.フォームにサブフォームAを配置  1-1.サブフォームAにテキストボックスAを配置(入力用) 2.フォームにサブフォームBを配置  2-1.サブフォームBにテキストボックスBを配置(表示用) ※フォームは一つです。 <実現したい事> サブフォームA内のテキストボックスAの値をサブフォームB内の テキストボックスBに表示したいのですが、なかなかうまくいきません。 サブフォームA内のテキストボックスAの値を変更するとサブフォームB内の テキストボックスBも変更するようにしたいので、テキストボックスBの ControlSourceに[Form]![フォーム]![サブフォームA].[Form]![テキストボックスA] としましたが実現できませんでした。 どのような方法をとれば実現できるでしょうか? 宜しくお願いします。

  • アクセスでコンボボックスに表示されるリストの順番が狂ってしまう!

    アクセスでコンボボックスに表示されるリストの順番が狂ってしまう! アクセスのフォームでコンボボックスを使用しています。コンボボックスで表示されるデータは他のテーブルの値を表示させているんですが、その値が勝手に昇順?に並べ替えられてしまい困っています。テーブル作成時に入力した順番か、もしくは任意に表示させる方法はないでしょうか? ちなみにアクセス2000です。どうぞよろしくお願いいたします。

  • テキストボックス内に記入されたデータの取得方法

    お願いします。 画面にテキストボックスが500あります。 そのなかに入力されたデータだけを動的に取り出したいと思っています。 ※取り出してデータベース(mysql)へインサートします。 詳しくは、tableが複数あり其の中にそれぞれ特定のテキストボックスが存在しているようになっていますので、特定のテーブル単体では毎回列名は固定されています。 たとえば、一画面にAとBテーブルがあったとして、AとBのテーブル内に ○A→3つのテキストボックス(列名のこと) ○B→6つつのテキストボックス(列名のこと) があったとして、 まず、Aのテーブル内のテキストボックス2つに値を入力されたとします。(3つめのテキストボックスは入力されていない) また、同時にBテーブルのボックス3つに入力されたとします。(残り3ボックスは入力されていません) その際、入力されたAテーブルの2つのボックスに対応する列名(データベース内の)とVALUESの値(テキストボックス内に記入されたデータ)がINSERT文に記述されるような事を考えています。 また、Bテーブルでも同様にしたいと考えています。 つまり、入力されたボックスに焦点をあてて動的にINSERT文を作れないか?という事で、入力されていないテキストボックス名はINSERT文から省きたいと考えています。これを動的にしたいのです。 >strSql = strSql & "'" & textbox1.Text & "'," 上の文の「 textbox1.Text  」を入力されたテキストボックスから動的に変更出来ないのかが気になっています。 例えば 、3つのテキストボックスがありそのうち、1番目と2番目に入力があったとき、変数をiとして 1 と 2 が入るようにしたいので以下のように文が書けるのだろうか?? 「 textbox[i].Text 」 と思っています。