2011-08-26 136 views
1

嗨有人可以帮我解决这个问题吗? 我想一个空值发送到从的DateTimePicker数据库,但它不工作,它不给一个错误,但每次我靠近取消对的DateTimePicker日期仍然进入:(在checbox谁能请与本从datetimepicker发送空值到数据库

private void BtnSave_Click(object sender, EventArgs e) 
    { 

     using (SqlConnection sqlConn = new SqlConnection("Data Source=TANYA-PC;Initial Catalog=biore1;Integrated Security=True")) 
     { 
      string sqlQuery = @"INSERT INTO cottonpurchase VALUES(@slipNo, @purchasedate, @farmercode, @farmername, @villagename, @basicprice, @weight, @totalamountbasic, @premium, @totalamountpremium, @totalamountpaid, @certstatus)"; 



      using (SqlCommand cmd = new SqlCommand(sqlQuery, sqlConn)) 
      { 
       cmd.Parameters.Add("@slipNo", SqlDbType.Int).Value = (!String.IsNullOrEmpty(TxtSlipNo.Text)) ? int.Parse(TxtSlipNo.Text) : (object)DBNull.Value; 
       cmd.Parameters.Add("@purchasedate", SqlDbType.DateTime).Value = Date.Text; 
       if (Date.Checked) 
        cmd.Parameters.AddWithValue("purchdate", Date); 
       else 
        cmd.Parameters.AddWithValue("purchdate", DBNull.Value); 
       cmd.Parameters.Add("@farmercode", SqlDbType.Int).Value = TxtFarmerCode.Text; 

       cmd.Parameters.Add("@farmername", SqlDbType.VarChar, 100).Value = TxtFarmerName.Text; 
       cmd.Parameters.Add("@villagename", SqlDbType.VarChar, 100).Value = TxtVillageName.Text; 
       cmd.Parameters.Add("@basicprice", SqlDbType.Int).Value = (!String.IsNullOrEmpty(TxtBasicPrice.Text)) ? int.Parse(TxtBasicPrice.Text) : (object)DBNull.Value; 
       cmd.Parameters.Add("@weight", SqlDbType.Int).Value = (!String.IsNullOrEmpty(TxtWeight.Text)) ? int.Parse(TxtWeight.Text) : (object)DBNull.Value; 
       cmd.Parameters.Add("@totalamountbasic", SqlDbType.Int).Value = (!String.IsNullOrEmpty(TxtTotalAmountBasic.Text)) ? int.Parse(TxtTotalAmountBasic.Text) : (object)DBNull.Value; 
       cmd.Parameters.Add("@premium", SqlDbType.Int).Value = (!String.IsNullOrEmpty(TxtPremium.Text)) ? int.Parse(TxtPremium.Text) : (object)DBNull.Value; 
       cmd.Parameters.Add("@totalamountpremium", SqlDbType.Int).Value = (!String.IsNullOrEmpty(TxtTotalAmountPremium.Text)) ? int.Parse(TxtTotalAmountPremium.Text) : (object)DBNull.Value; 
       cmd.Parameters.Add("@totalamountpaid", SqlDbType.Int).Value = (!String.IsNullOrEmpty(TxtTotalAmountPaid.Text)) ? int.Parse(TxtTotalAmountPaid.Text) : (object)DBNull.Value; 
       //d.Parameters.Add("@yeildestimates", SqlDbType.Int).Value = (!String.IsNullOrEmpty(TxtYeildEstimates.Text)) ? int.Parse(TxtYeildEstimates.Text) : (object)DBNull.Value; 
       cmd.Parameters.Add("@certstatus", SqlDbType.VarChar, 100).Value = comboBox1.Text; 
       sqlConn.Open(); 
帮助
+0

能否请您命名日期控制的其他东西,然后日期?您需要调试代码并找出“purchdate”没有被设置为NULL的原因。我将猜测默认情况下DateTime不能等于NULL。 –

回答

1

它看起来不像参数purchdate可以在任何地方使用。

也许尝试这样的事:

//cmd.Parameters.Add("@purchasedate", SqlDbType.DateTime).Value = Date.Text; 
    if (Date.Checked) 
     cmd.Parameters.AddWithValue("@purchasedate", Date); 
    else 
     cmd.Parameters.AddWithValue("@purchasedate", DBNull.Value); 
+0

谢谢你soo它的工作:)真的很伟大; 0 – tanya

+0

嗨我得到这个错误与此代码当我检查复选框它工作时,我发送datetime选择器为空,但不工作时,我发送一个值到数据库错误是:没有从对象类型System.Windows.Forms.Datetimepicker到已知托管提供程序朴素类型的映射 – tanya

0

难道不是有什么用下面的线?

cmd.Parameters.Add("@purchasedate", SqlDbType.DateTime).Value = Date.Text; 
if (Date.Checked) 
    cmd.Parameters.AddWithValue("purchdate", Date); 
else 
    cmd.Parameters.AddWithValue("purchdate", DBNull.Value); 

您正在设置@purchasedate PARAM的,如果外界,所以它总是设置好的。

如果这不是问题,你SH应该发布UI代码,让我们有更多的信息来回答。