子报表中的明细ai中透视网格怎么取消操作

君,已阅读到文档的结尾了呢~~
锐浪报表使用技巧,锐浪报表,锐浪报表插件,锐浪报表 注册,锐雯技巧,锐雯对线技巧,迈锐宝使用技巧,锐雯光速qa技巧,lol锐雯技巧,锐雯连招技巧,锐雯跳墙技巧
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
锐浪报表使用技巧
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口4228人阅读
生活(30)

一直以来,锐浪报表做的不错,尤其是适用于国内的状况。加上不是很满意rdlc的功能,查遍网络,很少有这方面的介绍。所以整理常用功能,以备使用。水平有限,大家根据自身情况来学习。
一、&&&&&&&&&&&&&套打技巧
(1)&&&&&& 扫描原件电子版作为报表背景
(2)&&&&&& 在报表上面依据背景画出控件位置
(3)&&&&&& 根据字段可以设计数据库和报表的连接进行自动大批量打印
二、&&&&&&&&&&&&&多表头
三、&&&&&&&&&&&&&锐浪报表使用(单数据连接)
数据连接有两种模式(推模式、拉模式),推模式就是由程序代码把连接字符串、SQL语句推送给报表;拉模式则是在明细网格中根据填好的连接字符串、SQL语句由报表自身自主查询(不建议,连接语句包含在报表中,不太安全)。
GridppReportReport = new
GridppReport();//1.定义一个新报表
public voidshowreport()
&&&&&&& {&&&&&&&&&&&
&&&&&&&&&&& //2.载入报表模板数据
&&&&&&&&&&& //Report.LoadFromFile(GridppReportDemo.Utility.GetReportTemplatePath()+ &program\\ParamQuerySQL2.grf&);
&&&&&&&&&&&Report.LoadFromFile(Application.StartupPath+
&\\1.grf&);
&&&&&&&&&&& //3.设置与数据源的连接串,因为在设计时指定的数据库路径是绝对路径。&&&&&&&&&&&
Report.DetailGrid.Recordset.ConnectionString =
&Provider=SQLOLEDB.1;Password=PersistSecurity Info=TUser ID=Initial Catalog=ry_DataSource=192.168.8.18;Use Procedure for Prepare=1;Auto Translate=TPacketSize=4096;Workstation ID=UNCLE13;Use Encryption for Data=FTag with columncollation
when possible=False&;
//4.连接报表取数事件
Report.Initialize += new
_IGridppReportEvents_InitializeEventHandler(MyReport);
//5.设定查询显示器要显示的报表
axGRPrintViewer1.Report = R&&&&&&&&
voidMyReport()//报表查询条件
&&&&&&&&&&& string startdate = dateTimePicker1.Value.ToString(&yy-MM-dd 0:00:00&);
&&&&&&&&&&& string enddate = dateTimePicker2.Value.ToString(&yy-MM-dd 23:59:59&);
&&&&&&&&&&& string SQL =
&SELECT* FROM production_material_lose WHERE unit= '& + comboBox1.Text +
&' ANDunit_2 = '& + comboBox2.Text + &'AND materialtype = '& + comboBox3.Text +
&'AND typedetail = '& + comboBox4.Text +
&'and uploaddate& &= '& +startdate + &' and uploaddate& &='& + enddate +
//用拉模式为报表提供数据,将按条件生成的SQL设置到报表上
Report.DetailGrid.Recordset.QuerySQL = SQL;
四、&&&&&&&&&&&&&子报表意义及说明
因为主报表只能定义一个数据连接,但是有时候我们要做多个查询,分别做几个报表是可以的,但是会显得比较乱,所以我们在主报表中添加一个或多个子报表来实现。
主要用途:
1、将多个不同的报表集中在一起打印,且每个报表的页面设置可以不一样,如纸张大小与纸张方向。
2、希望多个报表集中导出到一个文件。
3、实现在导出Excel时,将不同的报表分别导出在不同的工作表(sheet)中。设置子报表的“导出到新工作表”属性为“是”,这个子报表在导出Excel时将单独产生在一个新工作表中。
五、&&&&&&&&&&&&&多个数据连接(子报表)
实现方法:
public GridppReport Report =new GridppReport();//定义主报表
public GridppReport SonReport1 = newGridppReport();//定义子报表
public void showreport()
& && &&&{&&
Report.LoadFromFile(Application.StartupPath +&\\1.grf&);//载入报表模板数据&
&//设置与数据源的连接串,因为在设计时指定的数据库路径是绝对路径。& && && && &
Report.DetailGrid.Recordset.ConnectionString =&Provider=SQLOLEDB.1;Password=r545;Persist Security Info=TUserID=Initial Catalog=Data Source=111;Use Procedure forPrepare=1&;&&&
Report.FetchRecord += new_IGridppReportEvents_FetchRecordEventHandler(Reportaaa);
Report.ControlByName(&SubReport1&).AsSubReport.Report= SonReport1;//定义子报表SubReport1的名字为SonReport1,并且作为Report的一部分
SonReport1.DetailGrid.Recordset.ConnectionString= &Provider=SQLOLEDB.1;Password=r545;Persist Security Info=TUserID=Initial Catalog=Data Source=111&;& &
SonReport1.FetchRecord +=new _IGridppReportEvents_FetchRecordEventHandler(Reportbbb);&
//设定查询显示器关联的报表
axGRPrintViewer1.Report = R
& && &&&private void&Reportaaa()
& && &&&{&
& && && &&&string SQL = &SELECT * FROM aaa&;& &&&& && &
& && && &&&Report.DetailGrid.Recordset.QuerySQL = SQL;
& && &&&privatevoid&Reportbbb()
& && &&&&&string SQL = &SELECT * FROM bbb&;&&& && && &
& && && &&&SonReport1.DetailGrid.Recordset.QuerySQL = SQL;
//3.连接报表事件
rptProductList.FetchRecord += new_IGridppReportEvents_FetchRecordEventHandler(MyReport);
六、&&&&&&&&&&&&&主报表子报表参数关联
参数前边加上一个:号,select * from Customerswhere City=:City
见4d.子报表主子关联.grf
报表要形成类似excel的统计类型也是可以的,首先一般都有”明细网格”,我们把想要设置的列设置为“自由格”,然后在自由格中插入“综合文字框(memoBox)”,在“综合文字框(memoBox)”完成统计。
4.折线图、二维码
折线图(其他类似,柱图、)
1.X轴y轴名字(必选)
2.图表标题(可选)
3.数据序列数
4.数据组数x轴数据列数目)
5.x轴(x轴标签、x轴刻度间隔、最小值、最大值)
6. y轴(y轴标签、y轴刻度间隔、最小值、最大值)
7.图表数据(所有数据)
实现方法:
1.建立图表,设置
voidmyreport()
&&&&&&&&&&& IGRChart pChartBar = Report.ControlByName(&ChartBar&).AsC //柱形图
&&&&&&&&&&& FillNormalValues(pChartBar);//填充值方法,见下
&&&&&&&&&&& SetCustomGraphFillColor(pChartBar);//颜色方法,参见chart例子,用处不大
&&&&&&&&&&& IGRChart pChartPie = Report.ControlByName(&ChartPie&).AsC //饼图
&&&&&&&&&&& FillNormalValues(pChartPie);
&&&&&&&&&&& IGRChart pChartScatter = Report.ControlByName(&ChartScatter&).AsC
&&&&&&&&&&& FillXYValues(pChartScatter); //随机散点图
&&&&&&&&&&& IGRChart pChartScatterLine = Report.ControlByName(&ChartScatterLine&).AsC //折线图
&&&&&&&&&&& FillXYValues2(pChartScatterLine);
//向柱图、叠加柱图、连线图与饼图提供数据
&&&&&&& protected
static void FillNormalValues(IGRChartpChart)
&&&&&&&&&&&pChart.SeriesCount = 3;//数据序列数(有几种数据)
&&& &&&&&&&&pChart.GroupCount = 4;//数据组数(x轴数据列数目)
&&&&&&&&&&& //pChart.XAxisMinimum = 0;
&&&&&&&&&&& //pChart.XAxisMaximum = 60;
&&&&&&&&&&& //pChart.XAxisSpace = 15;
&&&&&&&&&&& pChart.set_SeriesLabel(0,&张三&);
&&&&&&&&&&& pChart.set_SeriesLabel(1,&李四&);
&&&&&&&&&&& pChart.set_SeriesLabel(2,&王五&);
&&&&&&&&&&
&&&&&&&&&&& pChart.set_GroupLabel(0,&一&);
&&&&&&&&&&& pChart.set_GroupLabel(1,&二&);
&&&&&&&&&&& pChart.set_GroupLabel(2,&三&);
&&&&&&&&&&& pChart.set_GroupLabel(3,&四&);
&&&&&&&&&&& pChart.set_Value(0,0, 1000);
&&&&&&&&&&& pChart.set_Value(0,1, 1200);
&&&&&&&&&&& pChart.set_Value(0,2, 1500);
&&&&&&&&&&& pChart.set_Value(0,3, 800);
&&&&&&&&&&& pChart.set_Value(1,0, 1500);
&&&&&&&&&&& pChart.set_Value(1,1, 1800);
&&&&&&&&&&& pChart.set_Value(1,2, 2000);
&&&&&&&&&&& pChart.set_Value(1,3, 1200);
&&&&&&&&&&& pChart.set_Value(2,0, 800);
&&&&&&&&&&& pChart.set_Value(2,1, 1000);
&&&&&&&&&&& pChart.set_Value(2,2, 700);
&&&&&&&&&&& pChart.set_Value(2,3, 500);
//下面方法以随机数填充折线图,折线图采用下面的思路,双for循环读取数据库或者参数生成图表
//提供散点连线图的数据,产生随机坐标点数据,保持X值是递增的,并自定义XY轴刻度位置与显示文字
&&&&&&& protected
static void FillXYValues2(IGRChartpChart)
&&&&&&&&&&& Random MyRandom =
newRandom();
&&&&&&&&&&& pChart.EmptyXYValue();
&&&&&&&&&&& for (short i=0;i&pChart.SeriesC ++i)
&&&&&&&&&&& {
&&&&&&&&&&&&&&& double x = 0;
&&&&&&&&&&&&&&& int DataCount = MyRandom.Next(30);
&&&&&&&&&&&&&&& for (short j=0;j&DataC ++j)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& x+= MyRandom.NextDouble() * 10;
&&&&&&&&&&&&&&&&&&& double y = MyRandom.NextDouble() * 300;
&&&&&&&&&&&&&&&&&&& pChart.AddXYValue(i,x, y);
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
&&&&&&&&&&& //设置纵坐标刻度文字
&&&&&&&&&&& pChart.EmptyYAxisText();
&&&&&&&&&&& pChart.AddYAxisText(0,&0&);
&&&&&&&&&&& pChart.AddYAxisText(50,&50&);
&&&&&&&&&&& pChart.AddYAxisText(100,&100&);
&&&&&&&&&&& pChart.AddYAxisText(200,&200&);
&&&&&&&&&&& pChart.AddYAxisText(300,&300&);
&&&&&&& &&& pChart.AddYAxisText(400,
&&&&&&&&&&& //设置横坐标刻度文字
&&&&&&&&&&& pChart.EmptyXAxisText();
&&&&&&&&&&& pChart.AddXAxisText(0,&0&);
&&&&&&&&&&& pChart.AddXAxisText(10,&10&);
&&&&&&&&&&& pChart.AddXAxisText(30,&30&);
&&&&&&&&&&& pChart.AddXAxisText(40,&40&);
&&&&&&&&&&& pChart.AddXAxisText(60,&60&);
&&&&&&&&&&& pChart.AddXAxisText(80,&80&);
&&&&&&&&&&& pChart.AddXAxisText(100,&100&);
子表中应该定义同名的参数。子表中的参数会自动取主表中同名字段或参数的值。
子表中的字段不会自动从主表获取数据。
设置报表明细记录集的连接串与查询SQL
Report.DetailGrid.Recordset.ConnectionString =&...&;
Report.DetailGrid.Recordset.QuerySQL = &...&;
如何用代码设置正确的连接串:先在报表中用向导自动产生连接串,观察向导自动产生的连接串,然后就能明白如何用代码产生连接串了。向导自动产生的连接串一般比较长,中间包含了很多默认值项与空值项,这些项在用代码产生的连接串时可以省略掉,通过多次尝试就可以获取到最简洁的连接串。
Report.DetailGrid.Recordset.ConnectionString = yourBuildConnectionS
用代码设置参数的数据(报表上已存在该参数)
Report.ParameterByName(&Parameter1&).AsString = &...&;
Report.ParameterByName(&Parameter1&).AsBoolean =
Report.ParameterByName(&Parameter1&).AsDateTime = ...;
Report.ParameterByName(&Parameter1&).AsFloat = 9.78;
Report.ParameterByName(&Parameter1&).AsInteger = 95;
用代码设置部件框的数据(报表上已存在该部件)
Report.ControlByName(&StaticBox1&).AsStaticBox.Text= &...&;
Report.ControlByName(&MemoBox1&).AsMemoBox.Text = &...&;
Report.ControlByName(&PictureBox1&).AsPictureBox.LoadFromFile(&%参数为图像文件的文件路径或URL%&);
Report.ControlByName(&Barcode1&).AsBarcode.Text = &...&;
用代码设置字段的值(报表上已存在该字段)
Report.DetailGrid.Recordset.Edit();& //准备修改当前记录的值
//或者: Report.DetailGrid.Recordset.Append();& //增加新记录,通常在 FetchRecord 事件中调用
Report.FieldByName(&Field1&).AsString = &...&;
Report.FieldByName(&Field2&).AsBoolean =
Report.FieldByName(&Field3&).AsDateTime = ...;
Report.FieldByName(&Field4&).AsFloat = 9.78;
Report.FieldByName(&Field5&).AsInteger = 95;
Report.DetailGrid.Recordset.Post();
备注:在设置字段值之前,必须要调用 Edit 或 Append方法,最后要调用 Post 方法。如果是在 Edit 方法之后设置字符串类型的字段,必须要设置此字段的“长度(Length)”属性为非0。
设置打印相关参数
Report.Printer.PaperSize = ...;
Report.Printer.PaperName = ...;
Report.Printer.PaperWidth = ...;
Report.Printer.PaperLength = ...;
Report.Printer.PaperOrientation = ...;
Report.Printer.PrintDuplex = ...;
Report.Printer.LeftMargin = ...;
Report.Printer.RightMargin = ...;
Report.Printer.TopMargin = ...;
Report.Printer.BottomMargin = ...;
Report.Printer.PrinterName = ...;
设置报表中设计时页面设置相关参数
Report.DesignPaperSize = ...;
Report.DesignPaperName = ...;
Report.DesignPaperWidth = ...;
Report.DesignPaperLength = ...;
Report.DesignPaperOrientation = ...;
Report.DesignLeftMargin = ...;
Report.DesignRightMargin = ...;
Report.DesignTopMargin = ...;
Report.DesignBottomMargin = ...;
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:33193次
排名:千里之外
原创:15篇
转载:21篇
(1)(1)(1)(1)(2)(1)(1)(1)(1)(1)(3)(2)(1)(2)(5)(1)(5)(2)(1)(1)(1)(2)(4)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'君,已阅读到文档的结尾了呢~~
锐浪报表使用技巧,锐浪报表,锐浪报表插件,锐浪报表破解版,锐浪报表尚未注册,锐浪报表 破解,锐浪报表教程,锐浪报表官网,锐浪报表插件下载,锐浪报表插件5.0下载
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
锐浪报表使用技巧
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口安全检查中...
请打开浏览器的javascript,然后刷新浏览器
< 浏览器安全检查中...
还剩 5 秒&明细网格子报表 - Grid++Report报表开发论坛 - Powered by Discuz!
Grid++Report报表开发论坛
标题: 明细网格子报表
作者: q123126& & 时间:
标题: 明细网格子报表数据库是有主表,子表,通过主键关联,一条主表数据对应N条子表数据,在报表上体现的效果是
[attach]4372[/attach]
并且子报表高度可以根据具体内容扩展。
作者: support& & 时间:
具体有什么问题?
也可以不用子报表,就要分组来实现更简单。
作者: support& & 时间:
设计分组单元格合并(占列式分组)报表:参考帮助文档“设计报表-&明细网格-&分组单元格合并(占列式分组)
作者: q123126& & 时间:
设计分组单元格合并(占列式分组)报表:参考帮助文档“设计报表-&明细网格-&分组单元格合并(占列式分组)
主表有几十个字段,虽然占列式可以达到效果,但是太麻烦。
现在我是这样写的。
Report.OnProcessRecord = OnProcessR
function OnProcessRecord() {
& & var picCtl = Report.ControlByName(&SubReport1&);
& & if (picCtl != null)
& && &&&picCtl.AsSubReport.Report.LoadDataFromURL(“”);
效果是:所有的子报表数据都堆积到第一条主报表数据上面去了。并不是一一对应的。
[attach]4375[/attach]子报表的第三条数据其实应该是主报表的第二行的。
作者: q123126& & 时间:
本帖最后由 q123126 于
16:20 编辑
设计分组单元格合并(占列式分组)报表:参考帮助文档“设计报表-&明细网格-&分组单元格合并(占列式分组)
占列式分组还不能合计,因为我这个需求要做占列式分组,数据库返回的数据就得更多,合计就不对了。麻烦管理员看看。这个问题怎么解决。
不知道问题是不是跟这个帖子一样,我是用的自由格,他是用的自由表格。
作者: support& & 时间:
占列式分组肯定也能合计。
用子报表,还是模仿例子去做,有表中表的例子。
参考:C:\Grid++Report 6\WebSamples\。。。\06.SubReport
作者: q123126& & 时间:
本帖最后由 q123126 于
15:59 编辑
占列式分组肯定也能合计。
用子报表,还是模仿例子去做,有表中表的例子。
例子我有研究过了,例子是子报表和明细数据是分开的,达不到效果而且例子的子报表是用拉模式,是web的,只能用推模式。
我那个脚本测试结果是一直获取的子报表都是第一行数据的子报表对象,导致数据全部累加到第一行。
还有就是如果用占列式分组,合计是可以,但是数据必须重新组织,比如主表有3条数据,与之对应的子表有4条数据,那么得关联出4条数据才能用占列式,而4条数据的合计必然不再等于原来的3条数据。
a字段& &其他字段
001& && & 100
002& && & 100
003& && & 100
a字段& &b字段
001& && &b001
001& && &b002
002& && &b002
003& && &b003
关联之后报表获得的结果是:
a字段& &b字段 其他字段
001& && &b001& && & 100
001& && &b002& && & 100
002& && &b002& && & 100
003& && &b003& && & 100
如果用占列式分组,统计行数/汇总能统计出原本3行的数据吗?按照占列式分组的合计,其他字段的结果是400,但是结果要是300才是对的。
作者: support& & 时间:
例子我有研究过了,例子是子报表和明细数据是分开的,达不到效果而且例子的子报表是用拉模式,是web的, ...
例子也是推模式,我只能说再参考例子,其它没法再进一步说明了。
作者: support& & 时间:
再次强烈建议用分组去做,要简单很多!!!
欢迎光临 Grid++Report报表开发论坛 (/bbs/)
Powered by Discuz! X3}

我要回帖

更多关于 ai中透视网格怎么取消 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信