2016-04-12 11 views
0

ユーザ支払いが現金として選択され、チェックデートがマスクされたテキストボックスを使用して空に挿入される場合、ヌルデートをアクセスデータベースに挿入したいと思います。私のインサートコードを教えてください。アクセスにヌルデータを挿入する方法

string bank = txtbankname.Text; 
      bank = ""; 
      string cheque = txtchequeno.Text; 
      cheque = ""; 


      string billno = txtbillno.Text; 
      billno = ""; 


      string codecreate = txtcodecreator.Text; 
      codecreate = ""; 

      string connetionString = null; 
      connetionString = ConfigurationManager.ConnectionStrings["AccessConnectionString"].ConnectionString; 
      cnn.ConnectionString = connetionString; 

      string SqlString = "Insert Into Billing([FormNo],[Date],[TruckNo],[Office_Code],[Party_Code],[Party_Code1],[Location],[Supplier],[Item],[Invoice_no],[Invoice_date],[Package],[Weight],[Invest_Amount],[Percentage],[Amount],[Total_Amount],[Payment_Amount],[Payment_Type],[Bank_Name],[Cheque_No],[Cheque_Date],[Bill_No],[Bill_Date],[Code_Create]) Values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
      using (cmd = new OleDbCommand(SqlString, cnn)) 
      { 
       cnn.Open(); 
       cmd.CommandType = CommandType.Text; 
       cmd.Parameters.AddWithValue("@FormNo", txtformno.Text); 
       cmd.Parameters.AddWithValue("@Date", txtdate.Text); 
       cmd.Parameters.AddWithValue("@TruckNo", txttruck.Text); 
       cmd.Parameters.AddWithValue("@Office_Code", txtofficecode.Text); 
       cmd.Parameters.AddWithValue("@Party_Code", txtpartycode.Text); 
       cmd.Parameters.AddWithValue("@Party_Code1", txtpartycode1.Text); 
       cmd.Parameters.AddWithValue("@Location", txtlocation.Text); 
       cmd.Parameters.AddWithValue("@Supplier", txtsupplier.Text); 
       cmd.Parameters.AddWithValue("@Item", txtitem.Text); 
       cmd.Parameters.AddWithValue("@Invoice_no", txtinvoice.Text); 
       cmd.Parameters.AddWithValue("@Invoice_date", DateTime.Parse(txtmaskinvoice.Text)); 
       cmd.Parameters.AddWithValue("@Package", txtpackage.Text); 
       cmd.Parameters.AddWithValue("@Weight", txtwieght.Text); 
       cmd.Parameters.AddWithValue("@Invest_Amount", Convert.ToDouble(txtinvestamount.Text)); 
       cmd.Parameters.AddWithValue("@Percentage", txtpercentage.Text); 
       cmd.Parameters.AddWithValue("@Amount", Convert.ToDouble(txtamount.Text)); 
       cmd.Parameters.AddWithValue("@Total_Amount", Convert.ToDouble(txttotalamount.Text)); 
       cmd.Parameters.AddWithValue("@Payment_Amount", Convert.ToDouble(txtpaymentamount.Text)); 
       cmd.Parameters.AddWithValue("@Payment_Type", txtpaymenttype.Text); 
       if (txtbankname.Text == "") 
       { 
        cmd.Parameters.AddWithValue("@Bank_Name", bank); 

       } 

       else 
       { 
        cmd.Parameters.AddWithValue("@Bank_Name", txtbankname.Text); 
       } 


       if (txtchequeno.Text == "") 
       { 
        cmd.Parameters.AddWithValue("@Cheque_No", cheque); 
       } 
       else 
       { 

        cmd.Parameters.AddWithValue("@Cheque_No", txtchequeno.Text); 
       } 


       DateTime chequeDate; 
       var value = (object)DBNull.Value; 
       if (DateTime.TryParseExact(txtmaskchequedate.Text,"dd/MM/yyyy",null,System.Globalization.DateTimeStyles.None, out chequeDate)) 
       { 



        value = chequeDate; 
        cmd.Parameters.AddWithValue("@Cheque_Date", value); 

       } 
       else 
       { 

        cmd.Parameters.AddWithValue("@Cheque_Date",(txtmaskchequedate.Text)); 

       } 

       if (txtbillno.Text == "") 
       { 
        cmd.Parameters.AddWithValue("@Bill_No", billno); 

       } 
       else 
       { 
        cmd.Parameters.AddWithValue("@Bill_No", txtbillno.Text); 


       } 

       DateTime BillDate; 
       var value1 = (object)DBNull.Value; 
       if (DateTime.TryParseExact(txtmaskbilldate.Text, "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out BillDate)) 
       { 



        value1 = BillDate; 
        cmd.Parameters.AddWithValue("@Bill_Date", value1); 

       } 
       else 
       { 

        cmd.Parameters.AddWithValue("@Bill_Date", (txtmaskbilldate.Text)); 

       } 



       if (txtcodecreator.Text == "") 
       { 
        cmd.Parameters.AddWithValue("@Code_Create", codecreate); 
       } 
       else 
       { 
        cmd.Parameters.AddWithValue("@Code_Create", txtcodecreator.Text.ToString()); 
       } 



       int n = cmd.ExecuteNonQuery(); 
       cnn.Close(); 
       if (n > 0) 
       { 
        MessageBox.Show("Data Inserted Successfully", "Data Inserted ", MessageBoxButtons.OK, MessageBoxIcon.Information); 
       } 

答えて

0

あなたのテキストボックスコントロールに有効な日付が入力されているかどうかチェックインします。しかし、そうでなければ、とにかくパラメータ値としてテキストボックスの内容を使用してください。 - これは確かに正しいことではありません。

valueはDBNullに初期化されていますが、いずれの場合でもパラメータを追加でき、コードのelse部分はまったく必要ありません。あなたのコードを変更し :

DateTime chequeDate; 
var value = (object)DBNull.Value; 
if (DateTime.TryParseExact(txtmaskchequedate.Text,"dd/MM/yyyy",null,System.Globalization.DateTimeStyles.None, out chequeDate)) 
{ 
    value = chequeDate; 
} 
cmd.Parameters.AddWithValue("@Cheque_Date", value); 

それが無効であってもテキストボックスからテキストを追加すると正確に同じ問題を、@Bill_Dateパラメータのために存在します。私のサンプルに合わせて、そのパラメータのコードを書き直してください。

+0

まだ同じ例外があります。私はこのDateTime chequeDateのようなコードを変更しました。 var値=(オブジェクト)DBNull.Value; if(DateTime.TryParseExact(txtmaskchequedate.Text、 "dd/MM/yyyy"、null、System.Globalization.DateTimeStyles.None、out chequeDate)) { value = chequeDate; } cmd.Parameters.AddWithValue( "@ Cheque_Date"、value);私もデバッガを置くが、デバッガはcmd.Parameters.AddWithValue( "@ Cheque_Date"、value);この行はマスクされたテキストボックスが空の場合にのみ – Atul

+0

同じエラー – Atul

+0

私は答えでコードをテストしました。どちらの場合でも動作します。私はあなたがデバッガであなたのコードを進めるべきだと思います。 ... Parameters.AddWithValue ...の行は常に実行されます。 – PhilS

関連する問題