- ベストアンサー
vb6のコンボボックスの操作について
- vb6+MDBの環境下で、コンボボックスについて質問です。テーブルデータBの表示・更新画面を作っているのですが、テーブルAの内容を画面上のコンボボックスに選択項目として表示するところまでは出来たのですが、以下のことを実現するには、コンボボックスにどういう記述で実現するのかわかりません。
- テーブルAの内容を画面上のコンボボックスに選択項目として表示する方法を教えてください。
- テーブルBのデータ選択時に、テーブルAの都道府県コードに該当する項目をコンボボックスに表示する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>都道府県コードに該当するものが文字列で MDB上でのインデックスの設定はフィールドのプロパティでインデックスを「はい(重複あり)」か「はい(重複なし)」にすることによって可能です。 関係ないかもしれませんが、私が良くやることで一番簡単だと思われる方法は、MS Hierarchical FlexGrid を使うものです。 DIM CON AS NEW ADODB.CONNECTION DIM RST AS NEW ADODB.RECORDSET strConMDB = "PROVIDER = MICROSOFT.JET.OLEDB.4.0; DATA SOURCE = C:\MDB\MDBFILE.MDB; PERSIST SECURITY INFO = FALSE" strSQL = "SELECT * FROM TABLEA" CON.OPEN strConMDB RST.OPEN STRSQL,CON,ADOPENKEYSET,ADLOCKOPTIMISTIC SET ME.MSHFLEXGRID1.RECORDSET = RST RST.CLOSE CON.CLOSE のような感じでTABLEAの全レコードをMSHFLEXGRID1に表示させることができます。 strSQL を "SELECT * FROM TABLEA WHERE PREFECTURECODE = '東京都'" とかえれば、対象レコードを東京都に限定して表示させることができます。
その他の回答 (1)
- ShowMeHow
- ベストアンサー率28% (1424/5027)
質問がうまく理解できている自信がないのですが、 コンボボックス上で行が選択(変更)されたときに、 その都道府県名を元にSQLをつくり (SELECT 都道府県コード FROM テーブルA WHERE 都道府県名 = '" & COMBO1.TEXTMATRIX.... & "'" のような) adoなどで該当レコードを探してくる。 のようなことですかね。
お礼
回答ありがとうございます 質問が変で、すいません。うまく表現できませんでした。 まず、コンボに表示するものが、都道府県テーブル(A)の中身です。 テーブルからデータを取得し、レコードセットをコンボにADDITEMしています。初期表示でコンボに一覧が出る事も確認しました。 次に、テーブルBの1レコードを表示した際に、そのレコードで持っている、都道府県コードの値にコンボの表示を変えたいというのが、お聞きしたかった点です。 今度は、少し伝わりますでしょうか? インデックスで指定してあげると表示が可能になりそうだというところまでは行ったのですが、都道府県コードに該当するものが文字列で、それをインデックスとして指定できないか悩んでおります。 もし、ご存知でしたら、また回答をお願いします。
お礼
たびたび回答をつけていただきありがとうございます。 インデックスという単語で認識に差があるようで、またまた文章が下手ですいません。 インデックスは、コンボのアイテムに付与できる数値を言っていました。 このインデックスは数値なので、文字列でデータを持っている都道府県コードと結びつける方法が無いかと模索していました。名前付き配列と近いものをイメージしています。 FLEXGRIDは、使った事がないのですが、後ほど時間が出来た時に試してみます。情報ありがとうございます。 今回は、マスタの数が極端に増える想定をしていないので、テーブル側データに連番等をつけて対応も考えてみます。