2011-10-25 2 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

다행 10,000 이상을 넣어 하나가 될 수 있습니다 ... 축하의 JJ! – DotNetRookie

+0

우! 감사! 하나님은 내가 그 일을 위해 일했다는 것을 알고있다! –

2

적절한 If 문이나 새로운 if 연산자를 사용하십시오. if 연산자는 te old IIF 함수와 정확히 같은 구문을 갖지만 필요한 인수 만 평가합니다. IIF 함수는 항상 모든 인수를 평가합니다. 따라서 dRow ("sysdate")가 null 인 경우에도 IIF 함수의 마지막 인수가 평가되고 오류가 발생합니다.

+0

나는 것 ... 문하지만 만약 내가 한 줄 사랑 | 8) – DotNetRookie

+0

@DotNetCookie : 당신이 문 경우 한 줄을 가지고, 그것은 단지 I의 중 하나를 삭제, 삭제 작업을 할 수 있습니다 ... IIF가있다 결함이있는 메서드를 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 허용 날짜 시간을 사용할 수 있습니다. oledb를 사용하여 Excel 워크 시트의 값을 가져 오려면 먼저 셀 형식을 확인하여 값을 가져옵니다. 이 경우 형식은 Excel 워크 시트의 날짜이며 Chris Dunway가 제공하는 방식은 완료되었습니다.

0

에서 DataRow를 것을 가정 :

관련 문제