我尝试对不存在的客户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.");
}
有谁知道这是什么问题,请指导和建议。
答案 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; }
}