'dbnull'에서 'string'유형으로 변환을 처리하는 방법은 유효하지 않습니다.

StackOverflow https://stackoverflow.com/questions/536212

  •  22-08-2019
  •  | 
  •  

문제

다음을 처리하는 방법에 대한 조언이 필요합니다 .- 데이터 필드 MISC_TEXT_2 타입 VARCHAR (25)가 있고 NULL을 허용합니다. 이제 다음 구문을 사용하는 경우

<asp:Label ID="lblPrinter" runat="server"  Text='<%# iif(eval("misc_text_2") is dbnull.value, "", iif(eval("misc_text_2") like "NA", "None", iif(eval("misc_text_2") like "KP1", "Kitchen Printer 1", iif(eval("misc_text_2") like "KP2", "Kitchen Printer 2", iif(eval("misc_text_2") like "KP3", "Kitchen Printer 3", iif(eval("misc_text_2") like "BP1", "Bar Printer 1", iif(eval("misc_text_2") like "BP2", "Bar Printer 2", iif(eval("misc_text_2") like "BP3", "Bar Printer 3", Eval("misc_text_2")))))))))%>'></asp:Label>

오류 예외 세부 정보를 계속 얻습니다. System.InvalidCastException : 'DBNULL'에서 'String'유형으로 변환하는 것은 유효하지 않습니다.

내가 뭔가를 놓치고 있다는 걸 알아요.

미리 감사드립니다

도움이 되었습니까?

해결책

SQL 쿼리에서 iSNull (misc_text_2, '')을 사용하여 dbnull 대신 빈 문자열을 반환 할 수 있습니다.

다른 팁

명시 적으로 확인해야합니다 DBNull.Value 그리고 전환을 직접하십시오.

다시 말해, 당신을 위해 변환을 수행 할 방법을 구축하고 DBNull.Value 계정에.

질문에 대답하지 않고 : 변환을 수행하는 메소드 뒤에 코드를 만들어야합니다. 따라서 코드를 이해하고 디버그하기 쉽게 만들어 코드를 재사용 할 수 있습니다.

평가를 사용할 때마다 어떻게 든 게으른 평가를해야합니다. 그렇게하려면 다음의 각 인스턴스를 바꾸십시오.

iif(eval("misc_text_2") like ...

~와 함께

iif(IsDbNull(eval("misc_text_2")) OrElse eval("misc_text_2") like ...

그만큼 OrElse dbnull의 부울로의 전환 시도를 방지합니다. 그러나보다 근본적인 관점에서 Bang은 가장 수정되었습니다. 이것은 아마도 ItemDatabound (또는 RowDatabound) 이벤트 핸들러에서 코드-비만을 수행해야합니다.

더 반성 할 때 ...

OP는 또한 사용할 수 있습니다 Convert.ToString() 그의 코드의 메소드는 dbnulls를 string.empty로 변환합니다.

MS-Dynamics (Solomon)를 위해 설정된 레거시 데이터베이스가 있기 때문에 NULL을 처리하는 방법은 ASP 또는 VB.NET 코드에서 NULL 문자열로 변환하는 것입니다. 즉

Trim$(misc_text_2 & " ")

VB의 모든 버전에 대한 문제를 제거합니다.

데이터 세트 디자이너를 사용하는 경우이 오류를 제거하는 가장 쉬운 방법은 존중 된 열의 속성을 변경하는 것입니다.

"Throw Exception"대신 "빈"에 대한 nullValue 예외.

이것이 여러분 모두에게 도움이되기를 바랍니다.

DBNULL 또는 ISDBNULL을 변환하려면 다음과 같은 방법을 시도 할 수 있습니다.

  1. dbnull을 빈 문자열로 변환하십시오

    (dbnullobj) .TOSTRING

  2. DBNULL 변환기 기능을 만듭니다

    public function convertdbnulltoString (dbnullobj as object)으로 문자열로

    ISDBNULL (DBNULLOBJ)이면

    반품 ""

    끝 If

    dbnullobj를 반환합니다

    엔드 기능

SpiritUmtp가 제안한 바와 같이, 데이터 세트 디자이너를 사용하는 경우 Datacolumn.nullValue를 "Throw Exception"에서 "Empty"또는 "Nothing"으로 변경하십시오. 후자를 선택했고 문제가 해결되었습니다. 나는 이제 아무것도 확인하지 않았는지 확인합니다 (is is is is is is nonthing (columnfax) 그런 다음 ...)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top