2016-08-21 10 views
0

同じ列名の2つのテーブルを含む2つのオブジェクトがあります。 ssisのscript takを使用して、これらのテーブル値をメール本文に表示する必要があります。 メールには、テーブル1の最初の行が含まれ、2番目のテーブルの行の下にそれが含まれている必要があります。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

最初のテーブルをそれぞれのループとして歩き、2番目のテーブルは最初のテーブル行のインデックス位置を使用してテストし、行が存在するかどうかを確認して、ループごとに1つずつ歩くのではなく、ちょうどあなたが、私はあなたがたときにやりたいかもしれないものをヒントするいくつかのコメントに入れたいどの文字列を構築

  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 
      } 

だから最後にあなたの最初のループの内側だけのようなものを追加します。そして、データテーブル変数の名前を2番目のテーブル変数に変更します。私がどこに提案しているかを知るために、コード全体は次のようになります:

 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>"; 
    } 
関連する問題