博客
关于我
C#:项目三 基金信息管理系统
阅读量:334 次
发布时间:2019-03-04

本文共 2373 字,大约阅读时间需要 7 分钟。

 

本项目主要让学生学习"编程方式实现DataSet原理"和"水晶报表的动态显示"

(一)数据库设计

细节:

  1. 检查主从表的主(外)键的类型与长度要一致
  2. 添加记录时,按主表---->从表的顺序  (想一想为什么?)

 

(二)主界面设计

(三)数据源设计

细节:

  1. 此表在设计时应参照数据库表中的字段,注意C#数据类型和SQL数据类型的对应性
  2. 在运行时,此表的实例将成为内存(虚拟)表,接受数据的维护

(四)报表设计

细节:

  1. 交叉表的基本知识可以参考EXCEL中的"数据透视表"
  2. 注意行/列/汇总部分的字段拖放的位置和效果

(五)报表界面设计

细节:

  1. 这些名称主要是数据表中基金名称
  2. 这些都是设计时设置的,如何能实现动态从表中读出基金名称并显示出来呢?

........

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();
        }

 

 

你可能感兴趣的文章
Linux上TCP的几个内核参数调优
查看>>
解Bug之路-dubbo流量上线时的非平滑问题
查看>>
记一次讲故事机器人的开发-我有故事,让机器人来读
查看>>
从Linux源码看Socket(TCP)的listen及连接队列
查看>>
高德网络定位算法的演进
查看>>
高德算法工程一体化实践和思考
查看>>
为亿级用户的美好出行而战!高德地图首届算法大赛落幕 95后北邮在读博士带队夺冠
查看>>
重温网络编程——常识(三)
查看>>
判断一个数是否是2的幂
查看>>
js 闭包(新)
查看>>
vscode 编辑python 如何格式化
查看>>
正则表达针对html(九)
查看>>
seo 回忆录百度基本概念(一)
查看>>
重新整理数据结构与算法(c#)—— 算法套路二分法[二十四]
查看>>
【golang-GUI开发】qt之signal和slot(一)
查看>>
kettle 执行 kjb 临时文件夹 /tmp permission denied 问题
查看>>
Markdown使用笔记
查看>>
「从零单排HBase 06」你必须知道的HBase最佳实践
查看>>
「从零单排canal 04」 启动模块deployer源码解析
查看>>
用ThreadLocal来优化下代码吧
查看>>