2010-08-11 8 views
2

나는 조건을 가진 데이터 테이블을 요약하기 위해 을 계산한다.. 때로는 Computable에서 예외를 얻으므로 내 기준과 일치하는 데이터 테이블 안에 행이 없습니다. 개체를 DBNull에서 다른 유형으로 캐스팅 할 수 없습니다.데이터 테이블에 일치하는 행이 있는지 확인하는 방법은 무엇입니까?

데이터 테이블을 확인/필터링하여 원하는 행이 있는지 확인하는 방법이 있습니까? 그렇다면 계산을 적용하십시오. 제발 조언.

total = Convert.ToDecimal(CompTab.Compute("SUM(Share)", "IsRep=0")); 

답변

3

object objCompute=CompTab.Compute("SUM(Share)", "IsRep=0"); 
if(objCompute!=DBNull.Value) 
{ 
total = Convert.ToDecimal(objCompute); 
} 
2

먼저 값을 객체에 할당합니다.이 값은 안전하게 처리 할 수 ​​있으며 null 값을 테스트합니다.

둘째로, 작동하지 않을 가능성이있는 경우 TryParse()를 사용하십시오.이 시나리오에서는 아마도 과장입니다. Compute 함수는 항상 아무 것도 변환 할 수없는 결과를 가져옵니다.하지만 나는 그것을하겠습니다. 그리고 그냥 좋은 습관 그래서 이미 코드를 입력했습니다.)

object oTotal = CompTab.Compute("Sum(share)", "IsRep=0"); 
Decimal total; 
if(oTotal != null) 
{ 
    if(!System.Decimal.TryParse(oTotal.ToString(), out total)) 
    { 
     // whatever logic you need to include if the TryParse fails. 
     // Should never happen in this case. 
    } 
} 
+0

당신에게 다윗을 감사하십시오. 그것은 매우 도움이되었습니다. –

+0

이봐, 'Operator'라고 써있어! ' 'object'유형의 피연산자에 적용 할 수 없습니다. –

+0

total = Convert.ToDecimal (dtSum)? 0;을 사용하면 어떻게됩니까? tryparse 대신에? –

관련 문제