2016-11-14 5 views
0

私は "dts_report_Received_Materials"というtableAdapterを持っています。C#のデータテーブルからデータセットにデータをロード

以前、私は、コードを次のようにそのテーブルアダプタに

private void generate_report(string qry) 
    { 

     string query, qry1; 
     query = qry; 
     int pr_id = Form_Common_PCM.pr_id;    

     clz_Common_SqlConnection con = new clz_Common_SqlConnection(); 
     SqlDataAdapter sda = new SqlDataAdapter(query, con.ActiveCon()); 
     DataSet dts = new DataSet(); 
     sda.Fill(dts, "dt_report_Received_Materials");    


     rdc.SetDataSource(dts); 
     crystalReportViewer1.ReportSource = rdc; 
     crystalReportViewer1.DisplayToolbar = true; 
     crystalReportViewer1.Show(); 
    } 

をデータをロードしている。しかし、現在、私は「dt_mat_cost」と呼ばれる私のデータテーブルのいずれかでレポートを生成するために必要なすべてのデータを持っています。

int Ref_ID_s_category; 
      Ref_ID_s_category = Convert.ToInt16(cbo_sub_category .SelectedValue); 
      int pro_id = Form_Common_PCM.pr_id; 
      clz_Received_Material_Summary rms = new clz_Received_Material_Summary(); 
      DataTable dt_mat_cost = rms.Summary_Material_Cost_Filter_By_Project_By_Sub_Category(Ref_ID_s_category); 

は今、私はこれを行うにはどのような方法が.Is私のTableAdapterの「dt_report_Received_Materials」を「dt_mat_cost」からこれらのデータをロードします。

ありがとうございました。

+0

DataSetのDataTableを別のDataTableに置き換える場合は、まず古いものを削除してから新しいものを追加することができます。 –

+0

generate_report()メソッドは、SQLインジェクション攻撃に対して脆弱なコードを強制的に作成するように見えます。 –

答えて

0

これを解決する1つの方法は、DataTableをDataSetに配置し、次に示すようにクリスタルコードを実行することです。 ReportSourceをデータテーブルに設定することはできますが、それが機能するのであれば私の頭の上を思い出すことはありません。

DataTable dt_matCost = rms.Summary_Material_Cost_Filter_By_Project_By_Sub_Category(Ref_ID_s_category); 

DataSet dts = new DataSet(); 
dts.Tables.Add(dt_matCost); 
//ds.Tables[0].TableName = "Whatever CR thinks it is"; // may need to set for CR 

rdc.SetDataSource(dts); 
crystalReportViewer1.ReportSource = rdc; 
crystalReportViewer1.DisplayToolbar = true; 
crystalReportViewer1.Show(); 
関連する問題