2012-11-30 2 views
2

" 'DBNull'유형에서 '10 진수'유형으로 변환하면 올바르지 않습니다."라는 제목의 오류가 발생합니다. 코드'DBNull'유형을 '10 진수'유형으로 변환 할 수 없습니다.

_event.TotalDollars = IIf((dr("TotalDollars") Is DBNull.Value), "$0", CType(dr("TotalDollars"), Decimal).ToString("c")) 

_event.TotalDollars이 라인에서

왜 IIF 문의 세 번째 부분은 지금까지 평가 받고있다 하는 문자열입니다? 이 IIF의 요점은 DBNull 값이 십진수로 변환되지 않도록하기 위해서입니다.

답변

4

두 가지 문제 :

IIF는 반환하기 전에 참과 거짓 작업을 모두 평가한다.

은 VS의 버전에 따라이

는 또한, 당신은 테스트를 할 IsDbNull(condition)를 사용하는 것이 아마 더 좋을 것 같아 (하지 않는) 방금 대신 If(condition,true,false)를 사용할 수 있습니다.

+0

그 것을 알지 못했습니다. –

+0

그것의 일반적인 잡았다. –

+0

그것은'IIF'가 표준 함수 호출 일 뿐이니까요. 맞습니까? – Kratz

1

DatasetExtensions를 사용하면 nullable 십진 유형으로도이 작업을 수행 할 수 있습니다.

_event.TotalDollars = if(dr.Field(of Decimal?)("TotalDollars"),0).ToString("c") 
관련 문제