2017-07-18 58 views
0

なぜこのエラーが発生するのか理解できますか?私は自分のPCに同じコードを持っていますが、うまくいきますが、私の友人のノートパソコンでは動作しません。私たちは同じSQL Server日時フォーマットを持っています。私はすでに、SQL Serverの日付形式と同じ文字列の日付形式を変換しようとしましたが、それでも動作しません。nvarcharデータ型をdatetimeデータ型に変換すると、範囲外の値が返されます。

EDIT:間違ったコードを投稿しました。

 DateTime paymentCashDate = Convert.ToDateTime(txtPaymentCash.Text).AddDays(1).AddSeconds(-1); 
     DateTime orderDate = Convert.ToDateTime(lblDate.Text); 

     if (orderDate < paymentCashDate) 
     { 
      cmd.CommandText = "UPDATE Orders SET [email protected], [email protected], [email protected], [email protected] WHERE [email protected] AND Status='Pending'; " + 
      "UPDATE OrderDetails SET [email protected] WHERE [email protected] AND Status='Pending';"; 
      cmd.Parameters.AddWithValue("@Status", "Approved"); 
      cmd.Parameters.AddWithValue("@PaymentStatus", "Payment Accepted"); 
      cmd.Parameters.AddWithValue("@PaymentDate", paymentCashDate.ToString()); 
      cmd.Parameters.AddWithValue("@PaymentAmount", txtAmountCash.Text); 
      cmd.Parameters.AddWithValue("@OrderNo", orderNo); 

      cmd.ExecuteNonQuery(); 
      con.Close(); 
      addProject(orderNo); 
      Response.Redirect("Default.aspx"); 
     } 
     else 
     { 
      errorPayment.Visible = true; 
     } 
+1

DB内のdatetimeの場合、なぜ文字列を渡すのですか?また、なぜあなたは24時間の時間を使用していないので、比較を行うために 'DateTime'オブジェクトを文字列にフォーマットしていますか? – juharr

+0

[あなたは既にAddWithValue()を使用して停止できますか?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/)をチェックしてください。 '.AddWithValue()'の使用を止めます - 予期しない驚くべき結果につながる可能性があります... –

+0

'2017-06-31'のような無効な日付を渡す場合もありますが、これも変換中に同じエラーにつながります日時に変換する。 –

答えて

0

あなたは、DateTime列にstringnvarchar)を更新しようとしています。 変更:

cmd.Parameters.AddWithValue("@PaymentDate", paymentCashDate.ToString()); 

へ:

cmd.Parameters.AddWithValue("@PaymentDate", paymentCashDate); 

もう一つ、私は(あなたがDateTimeにテキストをキャストしているので、そのOK)日付を保持するためにTextBoxコントロールを使用している参照して、しかし、私はお勧めあなたはDateTimePickerコントロールを使用するには、キャストする必要がなくなり、ユーザーはより良いUXを得ることができます。

Introduction to the Windows Forms DateTimePicker Control

+0

これはうまくいきました!くそっ、1時間lmaoのためにこれを考え出していた。私は同じSQLデータベースを持っているにもかかわらず、このコードは私のPCにエラーがどのように来て、それは私の友人のラップトップ上に持っているのか質問することができます –

+0

あなたのfreind OSの日付テキストの形式があなたOS 12/12/2012 vs 12-dec-12 .. – jonathana

+0

大丈夫、ありがとう! –

関連する問題