2017-01-06 6 views
1

cell(Datetime)の値を空または "None"と比較したい。空でないか、それ以外の場合はパラメータを追加する。あなたの助けのDatetimeの値をCのヌルまたは特定のテキストと比較する#

おかげで、それは私が

command.Parameters.AddWithValue("@pin", row.Cell(2).GetValue<string>()); 
command.Parameters.AddWithValue("@Amount", row.Cell(3).GetValue<int>()); 
if(row.Cell(4).GetValue<DateTime>() == "" || row.Cell(4).GetValue<DateTime>() =="none") 
{ 
} 
command.Parameters.AddWithValue("@Expirydate", row.Cell(4).GetValue<DateTime>()); 
          command.ExecuteNonQuery(); 
+0

これはExcelファイルのようなスプレッドシートに関するものですか? – Jake

+0

可能な複製:http://stackoverflow.com/a/4604459/3270427 – McNets

+0

Yeas、Jake Excelシートからデータを読み取っています –

答えて

0

最初に文字列として読み取ってください。を確認してから、をDateTimeに変換してください。

var s = row.Cell(4).GetValue<String>(); 
is (s != null && s != "" && s != "none") 
{ 
    var d = DateTime.Parse(s); 
    command.Parameters.AddWithValue("@Expirydate", d); 
} 

問題を再考してください。代わりにmagic numberに頼るの、ちょうどそれがそうのように、有効な日付である時はいつでも有効期限を移入:「なし」以来

var s = row.Cell(4).GetValue<String>(); 
DateTime d; 
if (DateTime.TryParse(s, out d)) 
{ 
    command.Parameters.AddWithValue("@Expirydate", d); 
} 

と「」これは動作しますが、有効な日付ではありませんし、またそうなります誰かが「なし」、「N/A」、「決して」などを入れても機能し続けます。

+0

ありがとう、しかし、私は自分のやり方でやりました。 'var expiry = row.Cell(4).GetValue (); if(expiry!= "none" && expiry!= "") { command.Parameters.AddWithValue( "@ Expirydate"、DateTime.Parse(expiry))); } else { command.Parameters.AddWithValue( "@ Expirydate"、Convert.DBNull); } ' –

1

あなたは日時を変換し、文字列でcomapre解析することにより

(DateTime.Parse(date).ToString()=="None" || DateTime.Parse(date).ToString()==String.Empty())?true:False 

を次のようにするか、使用することができますすることができ、文字列のエラーに日時を変換することはできません提供しますcatchブロックを試して検証してください。

+0

Goshこれはうまくいきません.DateTime.Parse(row.Cell( 4).GetValue ())。ToString()== "None" || ToString()== String.Empty()) ' –

関連する問題