【VB6.0】複数のコンボボックスにデータベースから取り出した値をコンボボックスに入れたい への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 たすく  (社会人) 投稿日時 2009/8/20 23:29:22
neptune様・daive様

お世話になります。
回答していただき、まことにありがとうございます!!

 
'countryテーブルをオープン 
myrec.Open "select * from country", myADOcon

myrec.MoveFirst

Do Until myrec.EOF
Comb1.AddItem myrec.Fields("country_name").Value
Comb2.AddItem myrec.Fields("country_name").Value
Comb3.AddItem myrec.Fields("country_name").Value
Comb4.AddItem myrec.Fields("country_name").Value
Comb5.AddItem myrec.Fields("country_name").Value      

myrec.MoveNext
Loop

End Sub


でやってみたのですが、nullが不正です、というエラーが返ってきたため、
テーブルの設定を確認したところ、country_nameのNOTNULLにチェックが入っていました。
チェックをはずすと、5つのコンボボックスに同じ値を表示することが出来ました。

テーブル設計は明確ではないといけませんね・・・。



daive様

アドバイスありがとうございます!
なるほど、そういうことも出来るんですね。
いま各コンボボックスのプロパティを確認したところ、
DataSource
DataMenber
DataFiled
がありました。
少し余裕があるとき、また同じシステムのプログラムを組み直し、
こちらの方法でデータリンクしてみたいと思います。
投稿者 daive  (社会人) 投稿日時 2009/8/20 17:55:55
VB6であれば、付属コントロールの
Microsoft ADO データコントロール Version 6.0 
が、使えないかどうか、試して見てください。
ADO データコントロールが使用出来る場合は、
ADO データコントロールへ、正しく接続文字列の設定他、をしてあげれば、
各コントロールのプロパティ設定
DataSource
DataMenber
DataFiled
で、ADOコントロール経由で、データベースのテーブルを使用できるようになります。
プロパティ設定での、データベースアクセスが出来るようになると、
データベース関係のコーディング量も減りますし、変更、改造も楽になります。
例えば、ADO コントロールと、DataGrid の連携は、
DataSource へ Adodc1 などと設定するだけです。

VB6用の ADO コントロールの使い方については、書きませんので、
興味がある場合は、検索すれば、いろいろ出てきますので、検索してみてください。
投稿者 neptune  (社会人) 投稿日時 2009/8/20 07:37:22
見易くするために、投稿欄の上にある
投稿で使用できる特殊コードの説明。を読んで置いてください。いろんなことができますから。

コードを見ればVB6と想像付きますが、きちんとVBのバージョンも書いて下さい。

>サイトを参考にし、一つのコンボボックスからはデータの取り出しが出来ました。
>しかし、残り4つのコンボボックスの値取得に関しては、まだ出来ておりません。
>いろいろ試しては見ましたが、なかなかうまくいきません。
どううまくいかないか書いて下さいね。判りませんから。
>下記は、一つのコンボボックスからはデータの取り出しが出来たコーディングです。
UPされたコードを見る限りコンボボックスからデータは取り出してませんけど?

Comb1、Comb2、Comb3、Comb4、Comb5に同じレコードの同じフィールドのデータを
追加するなら以下。


    Do Until myrec.EOF
        Comb1.AddItem myrec.Fields("country_name").Value             'country_nameフィールドを読み出し 
        Comb2.AddItem myrec.Fields("country_name").Value
        '以下Comb5までのコンボボックスについて書く。 
        
        myrec.MoveNext
    Loop


今回の質問には関係なさそうですが、Mysqlは知りませんので一応書いておきます。
投稿者 たすく  (社会人) 投稿日時 2009/8/20 05:10:26
先日はお世話になりました。おかげさまでコンボボックスについて理解を深めることが出来ました。

今回ご質問させていただくのは、Mysqlからのデータの呼び出しについてです。

フォーム上に5つのコンボボックスがあり、
(オフジェクト名:Comb1、Comb2、Comb3、Comb4、Comb5)
フォームを読み込んだ際、コンボボックスの値をMysqlサーバから取得する
プログラムを作成しています。
それぞれのコンボボックスには、同じフィールドを参照し、同じ値が入るようにしたいです。
(国名が表示されるコンボボックス)

サイトを参考にし、一つのコンボボックスからはデータの取り出しが出来ました。
しかし、残り4つのコンボボックスの値取得に関しては、まだ出来ておりません。
いろいろ試しては見ましたが、なかなかうまくいきません。
下記は、一つのコンボボックスからはデータの取り出しが出来たコーディングです。


Private Sub Form_Load()

Dim myADOcon As ADODB.Connection
Dim myrec As ADODB.Recordset

Set myADOcon = New ADODB.Connection
Set myrec = New ADODB.Recordset

'MySQLODBC:MySQL ODBC 3.51、サーバ名:×××、データベース名:testdb、ユーザー名:user、パスワード:9999に接続
myADOcon.Open "Driver={MySQL ODBC 3.51 Driver};SERVER = ×××;DATABASE=testdb;UID=user;PWD=9999;"

'countryテーブルをオープン
myrec.Open "select * from country", myADOcon

myrec.MoveFirst

Do Until myrec.EOF
Comb1.AddItem myrec.Fields("country_name").Value       'country_nameフィールドを読み出し

myrec.MoveNext
Loop

End Sub

どのように付け加えれば、5つのコンボボックスに同じ値を取得させることが出来ますでしょうか?
言葉足らず、汚いコードで大変申し訳ないですが、
ご教授のほど、よろしくお願いします。