|
分類:[C# (Windows)]
2007/07/03(Tue) 16:14:25 編集(投稿者)
いつもここの掲示板にはお世話になっています。
本題なのですが、TextBox1とTextBox2に日付を入力、その範囲にあるデーターをSQLで呼び、ListBoxに表示させています。 ここまではいいのですが、次にリストボックスで複数選択されたアイテムをDataGridに表示させたいのですが、「値をNullにすることはできません。」とエラーが出てしまいます。
下記のようにコーティングしているのですが、どこか間違っている場所などがあったらお教え願えないでしょうか?
private void botton1_Click(object sender, System.EventArgs e) { try { if(DateTime.Parse(textBox1.Text) > DateTime.Parse(textBox2.Text)) { MessageBox.Show("日付を正しく入力してください。"); return; } else { OleDbDataAdapter oleda; DataSet dataSet11 = new DataSet("SHOP"); dataSet11.Tables.Add("SHOP"); oleda = new OleDbDataAdapter("SELECT DISTINCT SHOPNAME FROM SHOP WHERE TO_CHAR(SALEDATE,'yyyy/mm/dd') BETWEEN '" + textBox1.Text + "' AND '" + textBox2.Text + "'",olecon); oleda.Fill(dataSet11.Tables["SHOP"]); if (dataSet11.Tables["SHOP"].Rows.Count == 0) { MessageBox.Show("店舗が見つかりませんでした。"); return; } listbox.DataSource = dataSet11.Tables["SHOP"]; listbox.DisplayMember = "SHOPNAME"; listbox.ValueMember = "SHOPNAME"; } } catch { MessageBox.Show("日付を正しく入力してください"); } }
private void botton2_Click(object sender, System.EventArgs e) { int i; int c; string str = null; c = listbox.Items.Count;
for (i = 0; i < c; i++) { if (listbox.GetSelected(i) == true) { System.Data.DataRowView drv = this.listbox.Items[i] as System.Data.DataRowView; str = str + ", '" + drv[0].ToString() + "'"; }
str = str.Substring(2);
OleDbDataAdapter oleda; DataSet dataSet11= new DataSet("SHOP"); oleda = new OleDbDataAdapter("SELECT DISTINCT SHOPNAME FROM SHOP WHEWE SHOPNAME = IN('" + str + "') AND TO_CHAR(SALEDATE,'yyyy/mm/dd') BETWEEN '" + textBox1.Text + "' AND '" + textBox2.Text + "'",olecon); oleda.Fill(dataSet11.Tables["SHOP"]);←ここで上記のエラーがでます。 dataGrid1.DataSource = dataSet11.Tables["SHOP"];
|