2012-03-22 3 views
0

데이터 테이블 (고객 주소)이있는 데이터 테이블이 있습니다. 경우에 따라 열 ADDR3에는 값이없고 열 ADDR2에는 값이 없습니다. ADDR3의 값을 확인하려고 시도하고 값이없는 경우 ADDR2의 값을 ADDR3에 복사 한 다음 ADDR2를 비 웁니다. 아래 코드를 사용하려고했지만 작동하지 않습니다. 내 'if'문 다음에 중단 점을 배치했지만 프로그램이 중단되지 않습니다. 그러나 많은 행에 null ADDR3 필드가 있다는 사실을 알고 있습니다. 아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까?데이터 테이블의 특정 열의 값을 검사하는 것처럼 보이지 않습니다. 왜?

  foreach (DataRow row in dataSet11.DataTable1.Rows) 
      { 
       object value = row["ADDR3"]; 
       if (value == DBNull.Value) 
       { 
        row["ADDR3"] = row["ADDR2"]; 
        row["ADDR2"] = " "; 
       } 
      } 
+3

if 문에 중단 점 *을 넣고 'value'가 DBNull인지 확인하십시오. –

+0

그래, 그 생각. ADDR3에 null 값이있는 데이터를 가져 오기 전에 몇 백 행을 처리해야합니다. 그러나 그것이 그것이 나의 유일한 의지라면, 나는 그것을 할 것입니다. 하지만, 제 코드가 작동하는 한, 작동해야합니까? null이 아니고 ""와 같은 다른 값이있는 경우 일 수 있습니까? – Kevin

+2

중단 점을 마우스 오른쪽 버튼으로 클릭하고 필터 ...를 클릭 한 다음 널 값보다 큰 값을 선택하여 수백 행을 통과하지 못하게하십시오 – Oliver

답변

2

그것은 당신의 row["ADDR3"] 값이 DbNull.Value 결코 동일 가능성이 높습니다. 이것은 웹 서비스를 통해 전송 된 데이터 테이블의 경우가 많습니다 (예 : XML 변환으로 인해 null 대신 빈 문자열이 있음).

if 전에 중단 점을 넣고 그 값이 무엇인지 정확하게 찾으십시오. row["ADDR3"] == null 또는 string.IsNullOrWhiteSpace(row["ADDR3"].ToString())

+0

그랬어! 공백이었습니다. null이 아닙니다. 정말 고마워! 타이머가 끝나면 답변을 표시합니다. 다시 한 번 감사드립니다! – Kevin

0

DBNull.Value가 아닌 null 값을 비교해 보았습니까? DBNull.Value 특정 데이터베이스 개체에 대한 독점적 인 및 데이터 집합/datatable 읽을 일단 나타나지 않습니다 믿습니다.

+0

나는 그것을 시도하고 무슨 일이 일어나는 지 볼 것이다. 감사! – Kevin

0

이 시도 :

foreach (DataRow row in dataSet11.DataTable1.Rows) 
{ 
    if (
     row.IsNull("ADDR3") // True if the value is null 
     || 
     String.IsNullOrWhitespace(row["ADDR3"]) // True if the value is "", " ", etc. 
     ) 
    { 
     row["ADDR3"] = row["ADDR2"]; 
     row["ADDR2"] = " "; 
    } 
} 
관련 문제