博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# WinfForm 控件之dev报表 XtraReport (四) 动态绑定主从关系表
阅读量:5060 次
发布时间:2019-06-12

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

一般的单据都是由主从关系的,比如部门与人员、单据表头与表身、仓库与存货、分类与档案等等 所以主从关系是报表用的最多的

1.准备数据库 简单方便

--主表create table RdRecord (id int primary key identity(1,1),BillCode nvarchar(32) unique not null,BillVenOrCus nvarchar(64),BillDate datetime default (getDate()))--从表create table rdrecords(autoid int primary key identity(1,1),id int not null,InvCode nvarchar(32),Quantity decimal(18,3) default 0)insert into rdrecord (BillCode,BillVenOrCus) values('001','华为')insert into rdrecord (BillCode,BillVenOrCus) values('002','长虹')insert into rdrecords(id,invCode,Quantity) values(1,'彩电',2000)insert into rdrecords(id,invCode,Quantity) values(1,'手机',2000)insert into rdrecords(id,invCode,Quantity) values(1,'手表',2000)insert into rdrecords(id,invCode,Quantity) values(4,'彩电',5000)insert into rdrecords(id,invCode,Quantity) values(4,'手机',20)insert into rdrecords(id,invCode,Quantity) values(4,'手表',100)

 

1.窗体还用上节的form1,报表新建一个ParentAndSonReport 控件有点多 我就用图表示了。 

2 form1 加一个button 一个textBox 双击button2写下代码 查出主从表,并确定关系

private void btnPAndS_Click(object sender, EventArgs e)        {            using (SqlConnection con = new SqlConnection("server=.;uid=sa;pwd=123;database =test"))            {                DataSet ds = new DataSet();                int iID;                if (int.TryParse(textBox1.Text, out iID))                {                }                else                { iID = 0; }                con.Open();                SqlCommand cmd = new SqlCommand("select * from rdrecord  --where id =@id "); //可查询单个数据 这个就不说了 这样 主从体现不出来 所以注释掉了                cmd.Connection = con;                cmd.Parameters.Add(new SqlParameter("@id", iID));                SqlDataAdapter ada = new SqlDataAdapter(cmd);                ada.Fill(ds, "RD");//查出 主表 填充 dataset 名为RD                  cmd = new SqlCommand("select * from rdrecords  --where id =@id    ");//同上                cmd.Connection = con;                cmd.Parameters.Add(new SqlParameter("@id", iID));                  ada = new SqlDataAdapter(cmd);                ada.Fill(ds, "RDS");//细表 同上                //建立主从关系                DataColumn ParentColumn = ds.Tables["Rd"].Columns["ID"];                DataColumn ChildColumn = ds.Tables["Rds"].Columns["id"];                DataRelation rel = new DataRelation("Rel", ParentColumn,ChildColumn);                ds.Relations.Add(rel);                ParentAndSonReport psr = new ParentAndSonReport(ds);                documentViewer1.DocumentSource = psr;                psr.CreateDocument();            }        }

3.报表重载构造函数 数据绑定

namespace XtrReportLearn{    public partial class ParentAndSonReport : DevExpress.XtraReports.UI.XtraReport    {        public ParentAndSonReport()        {            InitializeComponent();        }        //重载 最好复制无参构造函数再修改 我总会忘掉初始化        public ParentAndSonReport(DataSet ds)        {            InitializeComponent();            //如果出现 只有一条数据问题那么绑定出问题了 要检查下边的绑定            this.DataSource = ds;            this.DataMember = "RD";                        this.DetailReport.DataMember = "Rel";//这个地方一定要是关系的名字 不然 从表数据就全出来了 分不开了            this.DetailReport.DataSource = ds;            RDID.DataBindings.Add("Text", ds, "rd.ID");            BillCode.DataBindings.Add("Text", ds, "rd.BillCode");            BillDate.DataBindings.Add("Text", ds, "rd.BillDate");            RDIDs.DataBindings.Add("Text", ds, "Rel.ID");            InvCodoe.DataBindings.Add("Text", ds, "Rel.InvCode");            Quantity.DataBindings.Add("Text", ds, "Rel.Quantity");        }    }}

 是终效果图:

 

转载于:https://www.cnblogs.com/SoftWareIe/p/8805688.html

你可能感兴趣的文章
基于iSCSI的SQL Server 2012群集测试(一)--SQL群集安装
查看>>
list 容器 排序函数.xml
查看>>
存储开头结尾使用begin tran,rollback tran作用?
查看>>
Activity启动过程中获取组件宽高的五种方式
查看>>
java导出Excel表格简单的方法
查看>>
SQLite数据库简介
查看>>
利用堆实现堆排序&优先队列
查看>>
Mono源码学习笔记:Console类(四)
查看>>
Android学习路线(十二)Activity生命周期——启动一个Activity
查看>>
《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
查看>>
CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
查看>>
windows下编译FreeSwitch
查看>>
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
c#自定义控件中的事件处理
查看>>
App.config自定义节点读取
查看>>
unity3d根据手机串号和二维码做正版验证
查看>>
二十六、Android WebView缓存
查看>>
django Models 常用的字段和参数
查看>>
linux -- 嵌入式linux下wifi无线网卡驱动
查看>>