rdlc报表随笔心得 ,基本结构和一些表达式。
Dataset | Form | RDLC |
主要放数据集的文件夹 | 存放窗体的文件夹 | 存放各种报表的文件夹 |
第一部,创建报表结构
首先添加数据集项
添加完成之后我们会看到这个页面
之后我们在上面添加一些数据集
数据源的连接要自己设定
之后我们可以输入要编译的sql语句,因为是报表,主要用来查询,一般情况只用select语句就可以
生成之后是这样的一些模型
中间的灰色部分可以双击,进去之后我们能自定义编写一些方法
//用这个方法查询时可以进行拼sql拼接查询,一般不写这个的话是不可以拼接查询的
//加粗部分要根据你不同数据集下的小的数据模型名字不同进行变换
partial class MemberTransferShopTableAdapter
{
internal int FillWhere(MC.MemberTransferShopDataTable dataTable, string whereSql, params SqlParameter[] commandParameters)
{
string sql = this.CommandCollection[0].CommandText;
sql = sql.Substring(0, sql.LastIndexOf("WHERE"));
sql += " WHERE 1=1 " + whereSql;
this.CommandCollection[0].CommandText = sql;
this.Adapter.SelectCommand = this.CommandCollection[0];
this.CommandCollection[0].Parameters.Clear();
foreach (SqlParameter p in commandParameters)
{
this.CommandCollection[0].Parameters.Add(p);
}
dataTable.Clear();
int returnValue = this.Adapter.Fill(dataTable);
return returnValue;
}
}
下面展示两种Form中的连接数据的方法
this.MemberTransferShopTableAdapter.Fill(this.cashier.MemberTransferShopDtl, A参数, A参数,A参数); //参数是你写语句时的参数,报表普遍用这种方法
以下是Fillwhere拼接的方法,拼接方法省去了在数据库里判断的过程,可以减少where后查询的判断,从而加快一定速度。
当然如果没有where条件限制查询速度反而会变慢。主要是减少 CASE WHEN THEN 的试用。
string strWhere = "";
if (strClubID != "")
{
strWhere += " ";
}
if (strIsChainStore != "")
{
strWhere += " ";
}
if (strIsAdvanceSale != "")
{
strWhere += " ";
}
strWhere += " ";
this.waterBarCashierPaymentDtlTableAdapter.FillWhere(this.cashier.WaterBarCashierPaymentDtl, strWhere
, new SqlParameter("@ClubID", strClubID)
);
点击数据模型中间灰色部分我们可以看到属性 ,
我们点击其下面的白色部分也可以看到属性
相信所有人都看到了上图的Parameters ,点击他就会出来窗体,如果你where后有参数的话,我们可以在这里面设置他的类型等属性
到此数据集DataSet文件夹的一些基本操作就叙述完毕
二.Form文件夹下窗体的设置
这里面DataSet 和 BindingSource比较重要
首先是Dataset
选择你要连接的数据集,然后将 BindingSource拉倒窗体上,设置 BindingSource
DataSource属性用来选择连接的DataSet数据集
DataMember选中数据集下的模型
之后他们会自动生成一下的东西
这是窗体上应该具备的东西
这是一个外部空间需要引用,具体我还没自己引用过,我做项目时都是人家引用好了的
这里主要是你在rdlc报表中还可以设置参数,主要是用来页面显示的
//查询
private void btnSeach_Click(object sender, EventArgs e)
{
strWhereOne += " ";
strWhereOne += " ";
this.memberChangeOverToShopTableAdapter.FillWhere(this.mc.MemberChangeOverToShop, strWhereOne
, new SqlParameter("@p_AreaID", strAreaID)
, new SqlParameter("@p_ClubID", ClubID));
//// TODO: 这行代码将数据加载到表“mc.MemberChangeOverToShop”中。您可以根据需要移动或删除它。
//this.memberChangeOverToShopTableAdapter.Fill(this.mc.MemberChangeOverToShop,
// strAreaID,
// strClubID);
if (strIsAdvanceSale != "")
{
strWhere += " AND MC_1.IsAdvanceSale=@isAdvanceSale";
}
strWhere += " ";
this.memberTransferShopTableAdapter.FillWhere(this.mc.MemberTransferShop, strWhere
, new SqlParameter("@p_AreaID", strAreaID)
, new SqlParameter("@p_ClubID", ClubID)
);
//// TODO: 这行代码将数据加载到表“mc1.MemberTransferShop”中。您可以根据需要移动或删除它。
//this.memberTransferShopTableAdapter.Fill(this.mc.MemberTransferShop,
// strAreaID,
);
}
catch (Exception ex)
{
if (strIsAdvanceSale != "")
{
strWhereOne += " AND MC_1.IsAdvanceSale=@isAdvanceSale";
}
strWhereOne += " AND (@p_Mobile = @p_Mobile) AND (B.Mobile = (CASE WHEN @p_Mobile = '' THEN B.Mobile ELSE @p_Mobile END))";
this.memberChangeOverToShopTableAdapter.FillWhere(this.mc.MemberChangeOverToShop, strWhereOne
, new SqlParameter("@p_AreaID", strAreaID)
, new SqlParameter("@p_ClubID", ClubID)
);
//// TODO: 这行代码将数据加载到表“mc.MemberChangeOverToShop”中。您可以根据需要移动或删除它。
//this.memberChangeOverToShopTableAdapter.Fill(this.mc.MemberChangeOverToShop,
// strAreaID,
// strClubID,
);
}
this.rv.RefreshReport();
}
三.Rdlc文件夹下报表的创建
我们可以在报表中创建各种图表和数据表
其中最重要就是组,分为父组和子组,从字面意思理解实际上就是父子关系的意思
右键点击表格中的一格 ,我们可以添加组
插入行,列,总计等
同事组又分为行组和列组,从字面意思理解即可
组实际上就是group by ,将数据按组显示
例如省份是父组,市就是子组 ,父组和子组都可以无限创建
分组的不同显示的数据也不同,有时候之所以数据显示的不全,在数据库查看时没问题的情况下,就是没有设置分组或分组不正确。
点击组会有很多属性,大家可以研究一下,最近感觉还没有什么用处
有时候我们常常要给数据加上一些序号这时也与分组有一点关系
=RowNumber("AreaName") //这就是表达式 用来给表添加序号的 按顺序依次往下填的,括号里的名字是你分组的名字。
一般放在最大的区域后面。举个列子,假如你有省最大下面有多个市,我想给多个市前面加上按顺序自动排序的1到9999的数字,那么这个时候我们就在
省后面添加这个表达式就好了
分组实际上海有一个高级模式在列组的右侧
这里插一句常报的错误(真的是随笔,随便写的),,这个一般是你没引用这个Microsoft.SqlServer.Types.dll或者是你的传进报
表的参数和rdlc文件的参数类型不符合等。
类似这种就是报表主要用来显示数据的形式,表蓝色部分偶尔会有一种现象 ,就是第一页的时候他是有的,到第二页第三页就不显示了。这是因为分组的一些问题导致的。
不要让他这个样
大多数要让他这样
具体这里搞的很烦,我的方法就是创建行组的时候小心谨慎将上面标题行,不包含在组里这样他就会一直显示了。
下面显示数据比较重点的就是表达式了
右键点击表格的一格,能打字的状态哦,会出现创建占位符。
创建站位符就是,创建表达式主要用来显示数据。
当然先看这个比较重要 ,报表数据,你要点击一下报表页面才会出现。
右键点击数据集能添加数据源和数据集
参数也同样可以自己添加这里的参数是给页面使用的于前面的
是相对应的。
点击报表的表格我们可以看到DataSetName 属性,选择本表中要连接的数据源
我们继续说表达式
这就是我们的占位符的表达式,他可以进行一些判断和数据类型的转换来显示数据
单机字段就是我们要显示的数据中的个个字段我们可以将他们加入各种列中
运算符合常见函数经常使用
这里我们说几个我经常用的
例如IIF 位置在程序流中
IIF就是三目运算符,真二假三。
Val 用这个转换的原因是我们在计算时警察出线错误,也就是当你显示数据时显示乱码或不显示很大可能是你的表达错误,很大可能是类型的错误。
Reportitems!表格中任意一个格的名字的名字.value主要用来获取表达格子的值方便显示或计算数据
右键点击站位符,会出现站位符属性,我们有时会需要里面数字操作较多,例如让他以百分号形式显示
到这我的报表简单介绍就算结束了,里面可能还有一点点遗漏的,还有更多超多我不懂不会的关于报表的奇葩
错误和一些有用的知识,希望有人看到我这篇文章给一些指点。最好是文字形式的资料,博客园,CSDN等学习
网站的一些资料吧。
确实是随笔,很随意的就写出来。
今晚乌拉圭对法国 我赌乌拉圭赢, 巴西对比利时 我赌巴西赢。
谢谢观赏
rdlc报表随笔心得 ,基本结构和一些表达式。的更多相关文章
- 会员管理系统的设计和开发(2)-- RDLC报表的设计及动态加载
在上篇<会员管理系统的设计和开发(1)>介绍了关于会员系统的一些总体设计思路和要点,经过一段时间开发,软件终于完成并发布.在这期间,碰到了不少技术难点,并积累了不少开发心得和经验,本篇继续 ...
- 【机房系统知识小结】微软自带RDLC报表,数据汇总设计
在做机房系统报表的时候,借鉴 八期崔成龙学长的博客< VB.NET rdlc 报表的使用>,照虎画猫的敲了一遍,但是在“汇总项”中,出现了一点小问题. 具体的设计方法在这里就不做介绍了,请 ...
- .Net SSRS(rdlc) 报表经验总结
排版 1. 可以利用表格来布局,以避免调整固定宽度的麻烦. 2. 一个表的表头里还可以嵌套表格. 3. 设置rdlc报表打印格式.首先打开RDLC报表设计器页面.在灰色部分点右键 -> 报表属性 ...
- RDLC报表系列(一) 简单的动态数据绑定和配置
RDLC系列链接 RDLC报表系列(一) 简单的动态数据绑定和配置 RDLC报表系列(二) 行分组 RDLC报表系列(三) 总计和折叠 RDLC报表系列(四) 矩阵 RDLC报表系列(五) 简单的图 ...
- ASP.NET MVC应用程序展示RDLC报表
原文:ASP.NET MVC应用程序展示RDLC报表 学习ASP.NET MVC这样久,在学习,练习与应用过程中,觉得很多知识与以前的ASP.NET多有区别,但是实现操作起来,细处又有许多相近的地方. ...
- 微软RDLC报表打印
关于微软RDLC报表打印时文字拉伸问题(Windows server 2003 sp2) 最近我们开发的打印服务频频出现打印文字拉伸问题,客户意见络绎不绝,最为明显的是使用黑体加粗后 “2.0份” 打 ...
- 水晶报表,快速报表,rdlc报表
感觉自己脑子里只剩下报表了,o(╥﹏╥)o.因为最近新换了公司,业务上有需要报表打印,水晶报表,快速报表,rdlc报表这三种以后可能都会用到.所以在没了解好业务流程,熟悉代码之前,就是看看这三种报表怎 ...
- 关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出”
问题:关闭rdlc报表打印预览后,关闭客户端,抛出异常“发生了应用程序级的异常 将退出” 办法:在容纳ReportViewer的窗体后台代码中,添加如下代码即可 protected override ...
- rdlc报表DEMO
rdlc报表demo .net 4.0 vs2013 文本框,图像控件,checkbox样式的打印 下载链接
随机推荐
- css动画和jq动画的简单区分
有很多不怎么用css3写动画的同学经常会对其中css3的transform,transition,translate,animation,@keyframes等等动画属性混淆错乱,经常使用了发现没有效 ...
- eclipse安装Android插件
1.首先下载Eclipse for android,点击进入.下载这个版本可以省去ADT配置() 2.下载符合你电脑的版本 2.现在Android SDK,地址:http://tools.androi ...
- 测试、集成等领域最好的Java工具
无论你是刚入门,还是进行了一段时间的开发,使用合适的工具编程都会让你事半功倍,它能够让你更快的编写代码,能够快速及时的为你识别出Bug,能够让你的代码质量更上一层楼. 如果你选择的编程语言是Java, ...
- Android UI组件----用相对布局RelativeLayout做一个登陆界面
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- [C# | XML] XML 反序列化解析错误:<xml xmlns=''> was not expected. 附通用XML到类解析方法
使用 XML 反化时出现错误: public static TResult GetObjectFromXml<TResult>(string xmlString) { TResult re ...
- Windows+Git+TortoiseGit+COPSSH 安装教程及问题收集
准备工作: 1. git-1.8.1.2-preview20130201.exe 下载地址: https://code.google.com/p/msysgit/downloads/list 2. C ...
- Jquery组织Form表单提交之Form submission canceled because the form is not connected
有时候导出Excel时需要根据某些条件筛选数据,然后将数据通过NPOI生成Excel并导出.组织数据时可以通过放到一个表单中,某些场景是使用脚本(如:jquery)组织一个form(通过字符串拼接), ...
- Azure Document DB Repository 的实现
阅读 需要大约 5 分钟. 前景: Azure Cosmos DB 由 Microsoft 提供,是全球分布式多模型数据库. 通过 Azure Cosmos DB 跨任意数量的 Azure 地理区域 ...
- wxpython 编程触发菜单或按钮事件
最近逐步熟悉wxpython,编写了几个小小功能的GUI程序,GUI中免不了会有在代码中触发控件事件的业务需求.在其他Gui界面的语言中有postevent.triggerevent 调用事件名称的函 ...
- 一键安装lnmp1.5
系统需求: CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin/Aliyun/Amazon/Mint Linux发行版 需要5GB以上硬盘剩余空间,MyS ...