对象引用未设置为对象的实例(Validation for

时间:2013-11-06 00:48:40

标签: c# windows

我尝试对不存在的客户ID进行验证。如果ID存在,则报告将显示ID的记录,如果不存在,则会提示错误。但即使我尝试输入存在的客户ID,错误也会提示出来。

  

错误:对象引用未设置为对象的实例。

string sql = "SELECT whbal.customer, customer.imp_license_no, customer.psq_level, " +     
"CONVERT(DECIMAL(8,3),SUM(CASE WHEN whbal.warehouse='SKW' THEN (CONVERT(DECIMAL(8,3),whbal.qty_good) +     CONVERT(DECIMAL(8,3),whbal.qty_slack)) * CONVERT(DECIMAL(8,3),whbal.std_weight) /1000 ELSE 0.0 END)) AS SENOKO, " +

  "FROM customer INNER JOIN whbal ON whbal.customer=customer.customer AND whbal.date_create<=@date1 " +
  "INNER JOIN stktype ON whbal.stock_type=stktype.stock_type " +
  "WHERE whbal.customer BETWEEN @cust1 AND @cust2 AND whbal.stock_type=@type " +
  "GROUP BY whbal.customer, customer.imp_license_no,customer.psq_level";

    SqlCommand custcom = new SqlCommand(sql, myconnection);

    custcom.Parameters.AddWithValue("@cust1", cboFrom.SelectedValue.ToString());
    custcom.Parameters.AddWithValue("@cust2", cboTo.SelectedValue.ToString());
    custcom.Parameters.AddWithValue("@type", cboStk.SelectedValue.ToString());
    custcom.Parameters.AddWithValue("@date1", dateTimePicker1.Value);

    SqlDataAdapter da = new SqlDataAdapter(custcom);
    DataSet1 ds = new DataSet1();
    da.Fill(ds, "customer1");

    DataTable dt = new DataTable();
    da.Fill(dt);

    myconnection.Close();
    if (dt.Rows.Count > 0)
    {     
           code...
    }
    else if (dt.Rows.Count <= 0)
    {
        MessageBox.Show("Customer not existed.");
    }

有谁知道这是什么问题,请指导和建议。

2 个答案:

答案 0 :(得分:1)

Combobox,似乎你正在开发Window Application。如果你想要输入值,请尝试使用SelectedText,否则如果可以省略手动输入,建议避免使用。

答案 1 :(得分:1)

解释答案here

  

原因是comboBox中的cboFrom.SelectedValue.ToString()。你   必须设置Combobox控件的DataSource属性   想要使用DisplayMember和ValueMember属性。如果你   目前使用comboBox1.Items.AddRange添加查找只是尝试   将comboBox1.Items.AddRange(Lookup);替换为 comboBox1.DataSource=Lookup;

或者,如果你能做同样的事情,你可以解决这个问题。

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            List<MyListItem> item = new List<MyListItem>();
            item.Add(new MyListItem{Text = "A", Value ="1"});
            item.Add(new MyListItem { Text = "B", Value = "2" });
            item.Add(new MyListItem { Text = "C", Value = "3" });
            comboBox1.DataSource = item;
            comboBox1.DisplayMember = "Text";
            comboBox1.ValueMember = "Value";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // This one not throw the null refference exception
            var ss = comboBox1.SelectedValue.ToString();
        }
    }
    struct MyListItem
    {
        public string Text { get; set; }
        public string Value { get; set; }
    }