本文共 2373 字,大约阅读时间需要 7 分钟。
本项目主要让学生学习"编程方式实现DataSet原理"和"水晶报表的动态显示"
(一)数据库设计
细节:
(二)主界面设计
(三)数据源设计
细节:
(四)报表设计
细节:
(五)报表界面设计
细节:
........
using System.Data.SqlClient; //自定义方法myDataView()会用到其中的类:SqlConnection、SqlDataAdapter
在此窗体类中,,输入以下代码:
DataView dv;
private void btnReport_Click(object sender, EventArgs e) { CRFundCross crFundCross = new CRFundCross(); DSCrossTable dsCrossTable = new DSCrossTable();string chooseString = ""; if (checkBox1.Checked) chooseString = chooseString + "基金简称='" + checkBox1.Text.Trim()+"'"; if (checkBox2.Checked) chooseString = chooseString + " or " +"基金简称='" + checkBox2.Text.Trim() + "'"; if (checkBox3.Checked) chooseString = chooseString + " or " + "基金简称='" + checkBox3.Text.Trim() + "'"; if (checkBox4.Checked) chooseString = chooseString + " or " + "基金简称='" + checkBox4.Text.Trim() + "'"; if (checkBox5.Checked) chooseString = chooseString + " or " + "基金简称='" + checkBox5.Text.Trim() + "'";
if (chooseString == "") { MessageBox.Show("请选择要显示的字段!"); return; }
if (chooseString.StartsWith(" or ")) chooseString = chooseString.Substring(4, chooseString.Length - 4);
dv.RowFilter = chooseString; //RowFilter 属性可以根据chooseString过滤数据
foreach (DataRowView drv in dv)
{ DataRow dr = dsCrossTable.Tables["DTFund"].NewRow(); dr[0] = drv[0]; dr[1] = drv[1]; dr[2] = drv[2]; dsCrossTable.Tables["DTFund"].Rows.Add(dr); }crvResult.Refresh(); crFundCross.SetDataSource(dsCrossTable.Tables["DTFund"]); crvResult.ReportSource = crFundCross;
}private DataView myDataView() { DataSet ds = new DataSet(); string connString = "Data Source=.;Initial Catalog=Test;User ID=sa"; string sqlString = "select 帐号,基金简称,购进数量 from 基金买入 a,基金 b where a.基金代码=b.基金代码"; SqlConnection sqlConn = new SqlConnection(connString); SqlDataAdapter sqlDA = new SqlDataAdapter(sqlString, sqlConn); sqlDA.Fill(ds,"Fund"); return ds.Tables["Fund"].DefaultView; }
private void frmCrossTableCReport_Load(object sender, EventArgs e)
{ dv = myDataView(); }(六)其它代码编写与运行调试
窗体调用代码:
private void 交叉表ToolStripMenuItem_Click(object sender, EventArgs e)
{ frmCrossTableCReport myfrmCrossTableCReport = new frmCrossTableCReport(); myfrmCrossTableCReport.MdiParent = this; myfrmCrossTableCReport.Show(); }