2011-10-25 10 views
0

nullの日付値が返されたときにクラッシュするASP.NETアプリケーションがあります。vb.netの日付フィールドでnullを確認する

コード行は次のとおりです。

excelWorksheet.Cells("A" & xlRowCounter).Value = IIf(IsDBNull(dRow("sysdate")), "", Format(dRow("sysdate"), "MM/dd/yyyy")) 

エラーメッセージ:

ERROR: System.ArgumentException: Argument 'Expression' is not a valid value.

私は私のアプリで "" 空の日付をチェックし、でそれに代わる方法は?

答えて

2

ではなくIf([condition], [true-part], [false-part])を使用してみてください:

If(IsDBNull(dRow("sysdate")), "", Format(dRow("sysdate"), "MM/dd/yyyy")) 

あなたは何のためにテストするための余分なチェックが必要な場合は、あなたがこれを行うことができます:

If(dRow("sysdate") Is Nothing Or IsDBNull(dRow("sysdate")), "", String.Format("{0:MM/dd/yyyy}", dRow("sysdate"))) 
+0

10kを超えることができたら嬉しいです... JJをおめでとう!! – DotNetRookie

+0

うわー!!ありがとう!神は私がそれのために働いたことを知っている! –

2

適切なIf文または新しいif演算子を使用します。 if演算子はte old IIF関数とまったく同じ構文を持ちますが、必要な引数だけを評価します。 IIF関数は常にすべての引数を評価します。したがって、dRow( "sysdate")がnullの場合でも、IIF関数の最後の引数が評価され、エラーが発生します。

+0

私は文を書くことを好きですが、if文は1行好きです。8-) – DotNetRookie

+0

@DotNetCookie:if文を1行書くことができます。欠陥のあるメソッドを1.1から削除すると、VBには実際の三項演算子が追加されます。 – jmoreno

+0

@jmoreno - if演算子を忘れました。私は私の答えを更新しました。私は長すぎるの.NET 2に立ち往生してきた! :) – pipTheGeek

0

をStringクラスはIsNullOrEmptyメソッドを持っています。 真っ先に空の文字列を入力すると、最初にセルをチェックすることができます。

Dim sysdate As DateTime? = dRow.Field(Of DateTime?)("sysdate") 
Dim result As String = If(sysdate.HasValue, sysdate.Value.ToString("MM/dd/yyyy"), "") 

私はドラウは、私は同じ問題を抱えているが、私はvb.netを使用していますよDataTableの

0

はまた、null許容のDateTimeを使用することができます。 oledbを使用してExcelワークシートから値を取得する場合は、最初にセルの書式をチェックして値を取得します。この場合、フォーマットはExcelのワークシートの日付であり、Chris Dunwayによって提供された方法は完了しました。

0

からのDataRowであることを推測:

関連する問題