2016-11-14 2 views
0

У меня есть набор данных, называемый «dts_Material_Report», который используется для генерации отчетов. В этом наборе данных у меня есть tableAdapter, называемый «dt_report_Received_Materials».Загрузка данных в набор данных из таблицы данных в 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); 

Теперь я хочу, чтобы загрузить эти данные из «dt_mat_cost» в мои TableAdapter «dt_report_Received_Materials». Есть способ сделать это.

Спасибо заранее.

+0

Ну, если вы хотите заменить DataTable в DataSet другим DataTable, вы можете сначала удалить старое, а затем добавить новое. –

+0

Метод generate_report() выглядит так, что это заставит вас написать код, который ужасно уязвим для атак с SQL-инъекциями. –

ответ

0

Одним из способов решения этой проблемы было бы поместить DataTable в DataSet, а затем запустить хрустальный код, как показано ниже. Возможно, вы сможете просто установить ReportSource в datatable, но я не вспоминаю его с головы, если это сработает.

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(); 
Смежные вопросы