アイデアは、新しいフィールドを入力して、レポートに表示することです http://www.mediafire.com/view/6sla63hpecx2cc9/workflow.PNG mediafire.com/view/1juiekfr5gbk48d/theproplem.GIF
私は DataSet でテーブルをフィルタリングし、データを表示すると仮定します。DataGridView で完璧に動作します。データグリッドを埋めるのと同じデータセットでレポートを埋める方法を見つけたいと思っています。
public partial class bill : Form
{
SqlConnection cn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=G:\I.S\C#\C#(Projects)\Nothin\billingSystem\billingSystem\Store.mdf;Integrated Security=True;User Instance=True");
public bill(string Cusn,string su,string am,string to,string Di, string Cnum)
{
InitializeComponent();
label1.Text = Cusn;
label2.Text = su;
label3.Text = am;
label4.Text = to;
label5.Text = Di;
label6.Text = DateTime.Now.ToString("d/M/yyyy");
label7.Text = Cnum;
}
private void bill_Load(object sender, EventArgs e)
{
LoadReport();
}
private void LoadReport()
{
int R = Convert.ToInt32(label7.Text);
SqlDataAdapter ADAP = new SqlDataAdapter("Select * from Newbill where Con = '" + R + "'", cn);
DataSet DS = new DataSet();
ADAP.Fill(DS, "Store");
dataGridView1.DataSource = DS.Tables["Store"];
// TODO: This line of code loads data into the 'DataSet10.NewBill' table. You can move, or remove it, as needed.
this.NewBillTableAdapter.Fill(this.DataSet10.NewBill, R);
this.reportViewer1.RefreshReport();
ReportParameter[] allPar = new ReportParameter[5]; // create parameters array
ReportParameter parSu = new ReportParameter("Summation", label2.Text);
ReportParameter parDiscount = new ReportParameter("Discount", label5.Text);
ReportParameter parDisA = new ReportParameter("DiscountAmount", label3.Text);
ReportParameter parTotal = new ReportParameter("Total", label4.Text);
ReportParameter parCus = new ReportParameter("CustomerName", label1.Text);
allPar[0] = parSu; //assign parameters to parameter array
allPar[1] = parDiscount;
allPar[2] = parTotal;
allPar[3] = parDisA;
allPar[4] = parCus;
this.reportViewer1.LocalReport.SetParameters(allPar);
this.reportViewer1.RefreshReport();
// TODO: This line of code loads data into the 'DataSet1.NewBill' table. You can move, or remove it, as needed.
//this.NewBillTableAdapter.Fill(this.DataSet1.NewBill, R, O);
//this.reportViewer1.RefreshReport();
}
}
これを見た : http://www.verious.com/qa/how-can-i-load-datatable-as-report-data-source/
実際には、クエリを使用して DB からデータを表示し、レポート内のデータをフィルター処理する手順が必要です。Google で見つけたものは次のとおりです: http://www.codeproject.com/Articles/31862/Dynamic-Binding-Of- RDLC-To-ReportViewer ですが、新しいフィールドが挿入されたときに機能しません。
これはどうですか、データセットを更新して、テーブルで発生した変更を含めようとします(私の場合、新しい行「新しいデータ」を挿入します)しかし、それは私に与えます:
A data source instance has not been supplied for the data source 'DataSet 10_NewBill'.
private void LoadReport()
{
int R = Convert.ToInt32(label7.Text);
this.reportViewer1.LocalReport.DataSources.Clear();
DataTable dt = new DataTable();
dt = this.NewBillTableAdapter.GetData(R);
ReportDataSource rprtDTSource = new ReportDataSource(dt.TableName, dt);
this.reportViewer1.LocalReport.DataSources.Add(rprtDTSource);
this.reportViewer1.RefreshReport();
// TODO: This line of code loads data into the 'DataSet10.NewBill' table. You can move, or remove it, as needed.
this.NewBillTableAdapter.Fill(this.DataSet10.NewBill,R );
this.reportViewer1.RefreshReport();
ReportParameter[] allPar = new ReportParameter[5]; // create parameters array
ReportParameter parSu = new ReportParameter("Summation", label2.Text);
ReportParameter parDiscount = new ReportParameter("Discount", label5.Text);
ReportParameter parDisA = new ReportParameter("DiscountAmount", label3.Text);
ReportParameter parTotal = new ReportParameter("Total", label4.Text);
ReportParameter parCus = new ReportParameter("CustomerName", label1.Text);
allPar[0] = parSu; //assign parameters to parameter array
allPar[1] = parDiscount;
allPar[2] = parTotal;
allPar[3] = parDisA;
allPar[4] = parCus;
this.reportViewer1.LocalReport.SetParameters(allPar);
this.reportViewer1.RefreshReport();
}
この
int R = Convert.ToInt32(label7.Text);
SqlDataAdapter ADAP = new SqlDataAdapter("Select * from Newbill where Con = '" + R + "'", cn);
DataSet DS = new DataSet();
ADAP.Fill(DS, "Store");
DataTable dt = new DataTable();
dt.TableName = "Store";
cn.Open();
ADAP.Fill(dt);
reportViewer1.ProcessingMode = ProcessingMode.Local;
ReportDataSource source = new ReportDataSource("Store", dt);
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(source);
reportViewer1.DataBind();
reportViewer1.LocalReport.Refresh();
cn.Close();
エラー 'Microsoft.Reporting.WinForms.ReportViewer' には 'DataBind' の定義が含まれておらず、タイプ 'Microsoft.Reporting.WinForms.ReportViewer' の最初の引数を受け入れる拡張メソッド 'DataBind' が見つかりませんでした
使用する際に必要な参照は何ですか?