2016-08-21 19 views
0

表的顯示其他行我有含有具有相同的列名的兩個表的兩個對象。 我需要在ssis中使用腳本tak在郵件正文中顯示這些表值。 郵件應該包含,表1的第一行及其下方應該是第二個表的行。在SSIS

下面寫的查詢只顯示單個表值。

oleDA.Fill(Obj_Duration, Dts.Variables["User::Obj_Duration"].Value); 
     foreach (DataColumn col in Obj_Duration.Columns) 
     { 
      Mail = Mail + "<th bgcolor='#7A378B' align='center'><font color='#FFFFFF'>" + col.ColumnName + "</font></th>"; 
     } 

     foreach (DataRow row in Obj_Duration.Rows) 
     { 



      sMail = sMail + "<tr>"; 

      foreach (DataColumn col in Obj_Duration.Columns) 
      { 


       sMail = sMail + "<td align = 'center'>" + row[col.Ordinal].ToString() + "</td>"; 
      } 

      sMail = sMail + "</tr>"; 
      Mail = Mail + sMail; 
      sMail = ""; 
      Mail = Mail + "<br>"; 
     } 

     sMail = ""; 
     Mail = Mail + "</table>"; 
     Mail = Mail + "<br>"; 

需要更改此查詢。

+0

@Marc - 需要幫助。 – rahul

回答

0

先走表作爲foreeach環和第二臺只使用第一表行的索引位置進行測試,看看是否行存在,並從中獲取信息,而不是試圖走的是一個作爲每個循環

所以最終你的第一個循環內只需要添加類似:

  int i = Obj_Duration.Rows.IndexOf(row); 
      if (AlternatingDataTableName.Rows.Count - 1 >= i) 
      { 
       DataRow alternatingRow = AlternatingDataTableName.Rows[i]; 
        //Start TR 

       foreach (DataColumn col in AlternatingDataTableName.Columns) 
       { 
        //Start TD 
        //alternatingRow[col.Ordinal].ToString() 
        //End TD 
       } 

       // end TR 
      } 

只是建立你怎麼想我提出一些意見,暗示你可能想要做什麼的時候字符串。並將數據變量的名稱更改爲第二個表變量。爲了確保您知道我在暗示的位置,您的整個代碼將如下所示:

 oleDA.Fill(Obj_Duration, Dts.Variables["User::Obj_Duration"].Value); 
     foreach (DataColumn col in Obj_Duration.Columns) 
     { 
      Mail = Mail + "<th bgcolor='#7A378B' align='center'><font color='#FFFFFF'>" + col.ColumnName + "</font></th>"; 
     } 

     foreach (DataRow row in Obj_Duration.Rows) 
     { 



      sMail = sMail + "<tr>"; 

      foreach (DataColumn col in Obj_Duration.Columns) 
      { 


       sMail = sMail + "<td align = 'center'>" + row[col.Ordinal].ToString() + "</td>"; 
      } 

      sMail = sMail + "</tr>"; 
      Mail = Mail + sMail; 
      sMail = ""; 
      Mail = Mail + "<br>"; 

      int i = Obj_Duration.Rows.IndexOf(row); 
      if (AlternatingDataTableName.Rows.Count - 1 >= i) 
      { 
       DataRow alternatingRow = AlternatingDataTableName.Rows[i]; 
        //Start TR 

       foreach (DataColumn col in AlternatingDataTableName.Columns) 
       { 
        //Start TD 
        //alternatingRow[col.Ordinal].ToString() 
        //End TD 
       } 

       // end TR 
      } 


     } 

     sMail = ""; 
     Mail = Mail + "</table>"; 
     Mail = Mail + "<br>"; 
    }