人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

visual basic 2005についての質問です。
始めたばかりでうまくコミュニケーションが取れないかもしれませんが、ご了承ください。

windowsアプリのリストボックスにデータを入れようとしています。

データベースからid,nameの2つのデータを取得してリストボックスにはnameを表示して、リストボックスのnameがクリックされたら当該idを取得できるようにしたいです。

listbox.items.add(name)

nameはこのように設定できるのですが、idをどのように設定すればよいのか分かりません。

データソースというのを使うと簡単に出来るようなのですが、リストボックスに表示する内容が条件次第で変わるので今回のケースは、これを使うことは出来ないようです。

何かヒントを頂けると助かります。

●質問者: southgate_01
●カテゴリ:コンピュータ 学習・教育
✍キーワード:ADD name Visual Basic Windows アプリ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pahoo
●30ポイント

name を検索キーとして、SQL 文でマッチする id を検索します。


使用しているDB、接続方式、テーブル構造が分からないのですが、ADO で実装するのであれば、「VB ADO + SQL 応用編 (その三) ADO レコード参照」が参考になるでしょう。

◎質問者からの返答

申し訳ありません、説明がとてもまずかったようです。

データベースからのデータの取得は出来ていて、ユーザーコントロール?への設定のところでつまずいています。

id : 1

name : hogehoge

hogehogeのみをリストボックスに表示させておいて、クリックされるとid=1を取得することが出来ずに困っています。


HTMLのセレクトメニューのようにnameとid(value)を簡単に設定できるんじゃないかと思っているのですが。


2 ● Mook
●30ポイント

データソースが全く使えないとは思えませんが、

http://www.atmarkit.co.jp/fdotnet/vblab/vsdbprog_01/vsdbprog_01_...


もともとの項目をデータベースから取っているのですから、選択されたデータをもとに

再度データベースから取得するといった方法ではできませんか。

リストのための条件が

SELECT name, id FROM table WHERE foo = 'bar';

であって選択された name が わかれば、

SELECT id FROM table WHERE foo = 'bar' AND name = "'" & listbox.items.item(listbox.SelectedIndex) & "'";

のような感じで取得できないでしょうか。


もしくは、name が一意ではない場合、name を add するのと同時に id を配列(例えば id_array)に格納しておき

(このときインデックスが一致するように注意)、

id_array(listbox.SelectedIndex);

で取得するようにするのも可能ではありますが、リスト作成時に処理が多少煩雑になります。

◎質問者からの返答

既に取得しているidのために再度SQLを発行するのはちょっと無駄なような気がします。

後者の方法をやってみようと思います。


3 ● freemann
●80ポイント ベストアンサー

VB.NETの構文はよくわからないですがC#使いから。

.NET Frameworkは同じなので論理は変わらないです。

DataSourceを使うと簡単です。

DBが何かわかりませんが、SQLServerならSqlDataAdapter、AccessならOleDbDataAdapter、OracleならOracleDataAdapterを使います。

adapterにはSELECT文を設定したSqlCommandなどを設定してください。

Dim adapter AS SqlDataAdapter

Dim dt AS DataTable

adapter.Fill(dt)

listbox.DataSource = dt

listbox.DisplayMember = "name" 'リストボックスに表示される値の指定

listbox.ValueMember = "id" 'リストボックスで選択されたものの値

これだけをコピーして使っても動きません。その辺はADO.NETの領域ですのでそのあたりを勉強されると今後にすごく役立つと思います。

もしよくわからないことがありましたら、その旨書いていただければ回答したいと思います。

◎質問者からの返答

ありがとうございます、バッチリできました。


データソースというのはコードの中で動的に作れるんですね。

本を見るとあらかじめ作っておかないといけないようでめんどくさいように見えたのですが、実に簡単に出来てとても助かりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ