C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: SQLの結果をListBox、ConboBoxに二項目表示


(過去ログ 15 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■5326 / inTopicNo.1)  SQLの結果をListBox、ConboBoxに二項目表示
  
□投稿者/ せんべい (1回)-(2007/07/10(Tue) 17:19:09)

分類:[C#] 

2007/07/11(Wed) 11:27:30 編集(投稿者)
2007/07/11(Wed) 08:59:18 編集(投稿者)

こんにちは、始めましていつもここの掲示板の方々にはお世話になっております。

早速、質問なのですが、SQLのSELECT構文を使い、店舗名、店舗所在地を取得、それらをListBox、ConboBoxに表示させたいのですが
このときに

店舗名|店舗所在地

といったように、一つの行に二つ表示させたいのですが、どのようにすればいいでしょうか?

OleDbConnection olecon = new OleDbConnection();
olecon.ConnectionString = "Provider=MSDAORA;User ID=scott; password=tiger; Data Source = test;Persist Security Info=false";

OleDbDataAdapter oleda;
DataSet dataSet11 = new DataSet("SHOP_MASTER");
dataSet11.Tables.Add("SHOP_MASTER");
oleda = new OleDbDataAdapter("SELECT SHOP_NAME,SHOP_ADDRESS FROM SHOP_MASTER",olecon);
oleda.Fill(dataSet11,"SHOP_MASTER");

ListBox.DataSource = dataSet11.Tables["SHOP_MASTER"];

このような形でコーティングしています。

何か指摘などしてくださると助かります。

よろしくお願いします。


すいません、急いで書いたためいろいろミスがあったみたいでした・・・
引用返信 編集キー/
■5328 / inTopicNo.2)  Re[1]: SQLの結果をListBox、ConboBoxに二項目表示
□投稿者/ 魔界の仮面弁士 (336回)-(2007/07/10(Tue) 18:01:03)
2007/07/11(Wed) 00:26:17 編集(投稿者)
No5326 (せんべい さん) に返信
> それらをListBox、ConboBoxに表示させたいのですが
ConboBox → ComboBox ですね。

> dataSet11.Tables.Add("SHOP_MASTR"); 
SHOP_MASTER で無いのが、微妙に気になる…。

> ListBox.DataSource = dataSet11.Tables["SHOP_MST"];
あれ? さっきは SHOP_MASTR だったのに、こちらは SHOP_MST ですか?

> oleda = new OleDbDataAdapter("SELECT SHOP_NAME,SHOP_ADDRESS",olecon); 
FROM 句は?

> このときに
> 店舗名|店舗所在地
> といったように、一つの行に二つ表示させたいのですが、どのようにすればいいでしょうか?

案1) SQL 側を修正し、「店舗名|店舗所在地」形式の列を含めるようにする。


案2) DataTable 側を修正し、「店舗名|店舗所在地」な式列を追加する。
  dataSet11.Tables["SHOP_MASTR"].Columns.Add("結合列", typeof(string), "SHOP_NAME + '\t' + SHOP_ADDRESS");
  listBox1.DataSource = dataSet11.Tables["SHOP_MASTR"];
  listBox1.DisplayMember = "結合列";


案3) データベース処理部分には手を加えず、コントロール側をオーナドローする。
  listBox1.DrawMode = DrawMode.OwnerDrawFixed;
  listBox1.DrawItem += delegate(object listBox, DrawItemEventArgs args)
  {
    string itemText = String.Empty;
    if (args.Index >= 0)
    {
      DataRowView rowView = listBox1.Items[args.Index] as DataRowView;
      if (rowView != null)
      {
        DataRow row = rowView.Row;
        itemText = String.Format("{0}\t{1}", row["SHOP_NAME"], row["SHOP_ADDRESS"]);
      }
    }
    args.DrawBackground();
    using (Brush b = new SolidBrush(args.ForeColor))
    {
      args.Graphics.DrawString(itemText, args.Font, b, args.Bounds);
    }
  };

==================
> 2007/07/10(Tue) 23:46:10 編集
> すいません、急いで書いたためいろいろミスがあったみたいでした・・・
との事で、再チェック。

> olecon.ConnectionString = "Provider=MSDAORA;User ID=scott; password=tiger; Data Source = test;Persist Security Info=false";
Microsoft OLE DB Provider for Oracle で接続するよりも、
ODP.NET または OracleClient で繋いだ方が良いかも知れません。

おまけ。
http://support.microsoft.com/kb/834905/ja


> DataSet dataSet11 = new DataSet("SHOP_MASTRE");
> dataSet11.Tables.Add("SHOP_MASTR");
> oleda = new OleDbDataAdapter("SELECT SHOP_NAME,SHOP_ADDRESS FROM SHOP_MASTER",olecon);

SHOP_MASTRE と
SHOP_MASTER と
SHOP_MASTR がまだ混在しているようですが……適当に読みかえておきますね。(^^;

引用返信 編集キー/
■5347 / inTopicNo.3)  Re[2]: SQLの結果をListBox、ConboBoxに二項目表示
□投稿者/ せんべい (3回)-(2007/07/11(Wed) 11:28:41)
2007/07/11(Wed) 11:28:56 編集(投稿者)
No5328 (魔界の仮面弁士 さん) に返信
> 2007/07/11(Wed) 00:26:17 編集(投稿者)
> ■No5326 (せんべい さん) に返信
>>それらをListBox、ConboBoxに表示させたいのですが
> ConboBox → ComboBox ですね。
>
>>dataSet11.Tables.Add("SHOP_MASTR");
> SHOP_MASTER で無いのが、微妙に気になる…。
>
>>ListBox.DataSource = dataSet11.Tables["SHOP_MST"];
> あれ? さっきは SHOP_MASTR だったのに、こちらは SHOP_MST ですか?
>
>>oleda = new OleDbDataAdapter("SELECT SHOP_NAME,SHOP_ADDRESS",olecon);
> FROM 句は?
>
>>このときに
>>店舗名|店舗所在地
>>といったように、一つの行に二つ表示させたいのですが、どのようにすればいいでしょうか?
>
> 案1) SQL 側を修正し、「店舗名|店舗所在地」形式の列を含めるようにする。
>
>
> 案2) DataTable 側を修正し、「店舗名|店舗所在地」な式列を追加する。
> dataSet11.Tables["SHOP_MASTR"].Columns.Add("結合列", typeof(string), "SHOP_NAME + '\t' + SHOP_ADDRESS");
> listBox1.DataSource = dataSet11.Tables["SHOP_MASTR"];
> listBox1.DisplayMember = "結合列";
>
>
> 案3) データベース処理部分には手を加えず、コントロール側をオーナドローする。
> listBox1.DrawMode = DrawMode.OwnerDrawFixed;
> listBox1.DrawItem += delegate(object listBox, DrawItemEventArgs args)
> {
> string itemText = String.Empty;
> if (args.Index >= 0)
> {
> DataRowView rowView = listBox1.Items[args.Index] as DataRowView;
> if (rowView != null)
> {
> DataRow row = rowView.Row;
> itemText = String.Format("{0}\t{1}", row["SHOP_NAME"], row["SHOP_ADDRESS"]);
> }
> }
> args.DrawBackground();
> using (Brush b = new SolidBrush(args.ForeColor))
> {
> args.Graphics.DrawString(itemText, args.Font, b, args.Bounds);
> }
> };
>
> ==================
>>2007/07/10(Tue) 23:46:10 編集
>>すいません、急いで書いたためいろいろミスがあったみたいでした・・・
> との事で、再チェック。
>
>>olecon.ConnectionString = "Provider=MSDAORA;User ID=scott; password=tiger; Data Source = test;Persist Security Info=false";
> Microsoft OLE DB Provider for Oracle で接続するよりも、
> ODP.NET または OracleClient で繋いだ方が良いかも知れません。
>
> おまけ。
> http://support.microsoft.com/kb/834905/ja
>
>
>>DataSet dataSet11 = new DataSet("SHOP_MASTRE");
>>dataSet11.Tables.Add("SHOP_MASTR");
>>oleda = new OleDbDataAdapter("SELECT SHOP_NAME,SHOP_ADDRESS FROM SHOP_MASTER",olecon);
>
> SHOP_MASTRE と
> SHOP_MASTER と
> SHOP_MASTR がまだ混在しているようですが……適当に読みかえておきますね。(^^;



ありがとうございます!案2の方法で無事解決しました。

いろいろお恥ずかしいところをお見せしてすいませんでした(*ノノ
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -