뒤에 문자열로 캐스팅하지만 난 단 한 줄의 코드로 문제를 추적 : 나는 Oracle 데이터베이스를 사용하고지능은 inadverantly이 원래 크리스탈 리포트에 문제가 있었다 내 다시
foreach (DataRow dr in ds.Tables["CurrentScheduleFields"].Rows)
if (dr["MY_FIELD"].ToString() == string.Empty)
dr["MY_FIELD"] = 0;
. 필드는 실제로 숫자 (2)입니다. 우리는이 경우 똑 바른 ADO.NET과 Nullable 타입을 사용하지 않습니다. 하나의 경우 해당 필드의 값이 int이고 위의 코드 줄이 좋습니다. 다른 경우, 필드의 값은 DBNull.Value이고 위 또는 일부는 0을 "0"(문자열)으로 변환합니다.
dr
하지
사람이 왜 알고 있나요 (ds.Tables [ "CurrentScheduleFields"]. 행에서의 DataRow의 DR)를`DataReader를 foreach 문 입니까?
내 브라우저에서 주석 달기를 클릭하지 않으므로 여기에 자료를 추가하고 있습니다. 왜 (dr [ "MY_FIELD"] == DBNull.Value) dr [ "MY_FIELD"] = 0; 디버거가 그 비트를 치고 0이 아닌 값이 "0"인 문자열로 변환됩니다. 첫 번째 응답이이 문제를 처리 할 것이라고 생각합니다. "문제는 첫 번째"MY_FIELD "가 null 일 수 있습니다. ADO.NET은 해당 열의 유형은 문자열입니다. " 이제는 DBNull이있는 문자열입니다. 값이 있습니까?
내 브라우저가 잠겨 있습니다. 이것을 편집하는 것 이외에는 아무 것도 클릭 할 수 없지만 : 답변 : 정수가 아닌이 값에 대한 문자열을 처리하는 수식을 변경하여 Crystal 측에서 처리하십시오. 그것은 작동합니다!
'dr'의 유형은 무엇입니까? –
'dr '은'DataReader'의 일종입니다. –
@Sam : 오라클이 변환 자체를 수행하지 않는다면이 코드가 필드를 "0"으로 설정하는 것은 거의 불가능하다고 생각합니다. –