2012-07-20 8 views
0

이 코드 세트는 서버에서 일정 기간 동안 데이터를 검색하고 메모장에 표시하는 것입니다. 왜 확실하지 않은 이유는 메시지 상자 "char", "money"및 "nvarchar"를 계속 나타냅니다. 당신은 MessageBox가 여러에게 데이터 형식 MessageBox ES를보고있는 이유는 루프 내부에 표시되고있는 자사의 경우 바보 같은 질문messagebox의 무한 루프

SqlCommand objCmd = new SqlCommand("SELECT CONVERT(char(80), InvDate,3) AS InvDate,InvoiceNo,EmployerCode,TaxAmount + SubTotal AS Amount,'' AS Payment FROM Invoice WHERE (InvDate >= CONVERT(datetime, '"+dtpFrom.Text +"', 0)) AND (InvDate <= CONVERT(datetime, '"+dtpTo.Text+"', 0))", objConn); 

     SqlDataReader objReader; 
     objReader = objCmd.ExecuteReader(); 

     System.IO.FileStream fs = new System.IO.FileStream("C:\\CMSExportedData\\Sales-" + DateTime.Now.ToString("dd-MM-yyyy") + ".txt", System.IO.FileMode.Create); 
     System.IO.StreamWriter sw = new System.IO.StreamWriter(fs, System.Text.Encoding.Default); 

     int count = 0; 
     while (objReader.Read()) 
     { 

      for (int i = 0; i < 5; i++) 
      { 
       if (!objReader.IsDBNull(i)) 
       { 
        string s; 
        s = objReader.GetDataTypeName(i); 
        MessageBox.Show(s); 
        if (objReader.GetDataTypeName(i) == "char") 
        { 
         sw.Write(objReader.GetString(i)); 
        } 
        else if (objReader.GetDataTypeName(i) == "datetime") 

        { 
         sw.Write(objReader.GetSqlMoney(i).ToString()); 
        } 
        else if (objReader.GetDataTypeName(i) == "nvarchar") 
        { 
         sw.Write(objReader.GetString(i)); 
        } 
       } 
       if (i < 4) 
       { 
        sw.Write("\t"); 
       } 

      } 
      count = count + 1; 
      sw.WriteLine(); 

     } 
     sw.Flush(); 
     fs.Close(); 
     objReader.Close(); 
     objConn.Close(); 
     MessageBox.Show(count + " records exported successfully."); 
     this.Close(); 
    } 

    private void groupBox1_Enter(object sender, EventArgs e) 
    { 

    } 

    private void dtpTo_ValueChanged(object sender, EventArgs e) 
    { 

    } 
+0

'돈'유형의 열을 처리하지 않으시겠습니까? – Aphelion

+0

나의 좋은 선생님 !! 나는 술을 살 수 있니? u는 대단해 !! – Newbie

+0

@Aphelion 선생님, 제 잘못, 돈이라고 생각합니다. 그 나쁜 코드에 대한 내 잘못은 – Newbie

답변

4

실례합니다. 당신이 정말로 그들을보고 싶지 않으면, 바로 다음 줄을 제거 :

MessageBox.Show(s); 
+0

당신의 멋진! 감사합니다!!! 당신이 내 일을 구했어! – Newbie

1

귀하의 데이터 소스는 유형 Money의 열이 포함되어 있습니다. 돈형을 처리하지 않는다는 점에 유의하십시오. 그런 이유로 messageBox 중 하나에 'Money'텍스트가 포함되어 있습니다.