2016-10-11 26 views
0

我很難過。我有一個數據從3個數據表被寫入到一個文本文件,但是當我正在寫一個表到這個文件時它正在寫重複,我不知道爲什麼。streamwriter寫重複行到文件

下面的代碼寫入到

 public void writeCharge2(StreamWriter sw, string dos1, int i) 
    { 
     getCharges(dos1, SqlCon); 
     foreach (DataRow row in chargeTable.Rows) 
     { 
      for (int n = 0; n <= chargeTable.Rows.Count -1; n++) 
      {      
       ChargeLine = chargeTable.Rows[n][0].ToString(); 

       writeCharge(sw, dos1, i, ChargeLine); 
       sw.WriteLine(); 
       payChart.Reset(); 
       payGraph.Reset(); 
      } 

     } 
     chargeTable.Reset(); 
    } 

    public void writeCharge(StreamWriter sw, string dos2, int i, string CPTLine) 
    { 
     getPayments(ChargeLine, SqlCon, dos2); 
     string description = getDesc(CPTLine, SqlCon); 
     sw.WriteLine(" Description: " + CPTLine + " - " + description); 
     sw.WriteLine("-----------Payments-----------"); 

     if (i < payGraph.Rows.Count) 
     { 
      foreach (DataRow row in payGraph.Rows) 
      { 
       for (i = 0; i < row.ItemArray.Length -1; i++) 
       { 
        DateTime payDate = Convert.ToDateTime(payGraph.Rows[i][0].ToString()); 
        string payDate1 = payDate.ToString("MM/dd/yyyy"); 
        decimal money = Convert.ToDecimal(payGraph.Rows[i][1].ToString()); 
        string money1 = money.ToString("C"); 
        string payer = payGraph.Rows[i][2].ToString(); 

        sw.Write("Payment Date: " + payDate1 + " | "); 
        sw.Write("Amount: " + money1 + " | "); 
        sw.Write("Payer: " + payer); 
        sw.WriteLine(); 
       } 

       sw.WriteLine(); 
      } 
     } 

    } 

     public void writeData(StreamWriter sw) 
    { 
     clearTables(); 
     getDos(SqlCon); 
     int i = 0; 

     foreach(DataRow row in servicetable.Rows) 
     { 
      string dosNow = Convert.ToString(servicetable.Rows[i][0]); 

      setupPat(sw, i); 
      writeCharge2(sw, dosNow, i); 
      sw.WriteLine(Environment.NewLine); 
       i++; 

     } 

下面是它是如何被寫入,你可以看到被寫入重複行

服務日期的文件的文件:2012年8月22日
描述:76775 - 美國RETROPERITONEAL有限公司
-----------付款-----------
付款日期:09/10/2012 |金額:23.14美元|付款人:保險
付款日期:09/24/2012 |金額:5.78美元|付款人:保險

付款日期:09/10/2012 |金額:23.14美元|付款人:保險
付款日期:09/24/2012 |金額:5.78美元|付款人:保險


說明:93922 - 下肢無創1個或2級
----------- -----------付款
付款日期:09/10/2012 |金額:9.74美元|付款人:保險
付款日期:09/24/2012 |金額:$ 2.43 |付款人:保險

付款日期:09/10/2012 |金額:9.74美元|付款人:保險
付款日期:09/24/2012 |金額:$ 2.43 |付款人:保險


說明:76775 - 美國腹膜後LIMITED
----------- -----------付款
付款日期:09/10/2012 |金額:23.14美元|付款人:保險
付款日期:09/24/2012 |金額:5.78美元|付款人:保險

付款日期:09/10/2012 |金額:23.14美元|付款人:保險
付款日期:09/24/2012 |金額:5.78美元|付款人:保險

+0

刪除此行** for(i = 0; i GSP

回答

1

這是因爲foreach循環在writeCharge2函數中是不需要的。您使用foreach迭代行,然後在每次迭代中打印所有行,因此對於2行,它們將被打印兩次,對於3行 - 3次等。

相關問題