提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|其它|编辑:郝浩|2011-01-20 15:41:09.000|阅读 3239 次
概述:本文主要介绍关于使用ActiveReport报表的若干问题及解决方法,希望对大家有帮助。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
1、打印预览时表格的边框是很淡的,但打印出来变成很粗了!请问这如何解决?我打的报表要求表格的边框的颜色要很淡,不要太粗!
如果是报表边框的话
Me.PageBorder.LeftStyle = ddBLExtraThickSolid
Me.PageBorder.RightStyle = ddBLExtraThickSolid
Me.PageBorder.TopStyle = ddBLDouble
Me.PageBorder.BottomStyle = ddBLDouble
具体粗细你看吧
我设置了field的边框,
Field1.Border.TopStyle = ddBLSolid
Field1.Border.TopColor=颜色
打印预览时候field的边框的颜色是很淡的,但打印出来就变成很粗了。这是什么回事?
还有这样一种情况,就是设置两个相连的字段边框时,两个相交的地方也设置了两次,可能会导致你说的问题。如果是这样的话,只要注意公用边框只要设置一次,不要两个都设置。
2、如何在ActiveReport 中控制纸张的规格?
使用ActiveReport1.Printer.PaperSize属性来设置纸张大小(假定你的ActiveReports控件叫ActiveReport1)。要在事前设定printdevice=0,再设置papersize属性设置纸张大小。
3、请问如何使用ActiveReport设计一个报表,内有每页的各项本页总计和本页累计(累计到该页止的所有记录的总计),最后一页在本页总计和本页累计再来一个各项总计?
只要加一个字段,然后设置字段的SummaryFun属性为0-Sum,设置SummaryType为2-PageTotal。进行各页总计只需将SummaryType设为1-GrandTotal就可以了。
每页累计要稍微复杂一些。首先象上面一样建立一个每页总计字段fdPageTotal,再建立一个字段fdSum,不与任何字段捆绑。我们假定这两个字段都放在PageFooter中。切换到代码部分,在(General)部分定义变量:
Dim dblSum As Double
然后输入以下代码:
Private Sub ActiveReport_ReportStart()
dblSum = 0
End Sub
Private Sub PageFooter_Format()
dblSum = dblSum + fdPageTotal
fdSum.DataValue = dblSum
End Sub
4、我在使用ActiveReports控件使用,使用ACTIVEREPORTS1.PrintReport True打印后,在更新数据源后,再次掉用它时,发现无法更新它的数据,它打印的仍是打印第一张时的数据。
在 ActiveReport.PrintReport True前加上一句ActiveReport.Restart 即可。例如:
ActiveReport.Restart
ActiveReport.PrintReport True
5、ACTIVEREPORT 能否向FOXPRO的报表一样,添加打印条件,比如若该字段值为0则不打印。
Private Sub Detail_Format()
If txtEmployeeSales.DataValue = 0 Then
lblOutstanding.Visible = False
End If
End Sub
6、我想用VB6.0的报表设计器设计发票这样的表格。表格里的数据是根据动态的查询语句从数据表中检索出来。一张发票可能对应多种货物。
用ActiveReport可以很容易地做出发票样式的报表,连发票中的空白项都能做出来。
首先在ReportStart事件中设置数据源,建立含有发票数据的单一记录集,发票上的每种商品(明细)均为一条记录,各种抬头信息(如发票号,单位, 税号等)等应当包含在每条记录中(这种重复信息在报表中便于分组);同时使用set me.printer.papersize设置好纸张大小。
接下来,在设计器中建立一个分组(Group1),将分组字段设为发票号,并在分组中放置抬头字段,画好抬头部分的表格线,然后在该分组中再插入一个分组 (Group2),在其中画出固定空栏(用于填写商品明细,具体行数自已定)的表格线。然后在明细段(detail)中放置商品明细字段,不画表格线。
接下来关键的一步是:设置Group2的UnderlayNext属性为True,它表示下一报表段(detail)将从本报表段(Group2)的起始位置开始输出;同时设置detail的backstyle属性为Transparent(透明)。
运行报表,可能发现商品明细显示的位置不太准确,这时可以通过调节各报表段的尾部大小来调整,而且还可以调节明细显示的最大行数,超过可以自动生成第二张发票,当然必须设置group1和group2的repeat属性为OnPage(即每页都显示)。
7、为什么会每打印一页内容总会间隔一页空白的纸张,例如,我要打印两页内容,打印机会出来四张纸,其中两张是空白的。
其实只要适当调整 PageLeftMargin和PageRightMargin两个属性的值即可。有时会看见打印预览中会出现一根红线,这就是ActiveReport 告诉你要分成两张纸了。但是,问题就出在这里,有时这根红线在纸的边缘,你根本看不见,所以就导致了你以为不要分页,但却分了页的结果。
8、如何获得打印机当前选定的纸张型号及尺寸
可以使用Printer对象的PaperSize获得纸张型号(在帮助中有更详细的说明),使用Printer对象的Height 和 Width属性获得纸张大小。
Printer对象表示当前系统默认打印机,如果你想知道它在Printers中的序号,可以使用下面的代码:
For i = 0 To Printers.Count - 1
If Printers(i).DeviceName = Printer.DeviceName Then
Print i
End If
Next
9、 ActiveReports能横向预览吗?
可以修改Orientation属性。
10、如何检测系统中是否安装了打印机
VB有个Printers对象,要知道是否安装了打印机,只需要看Printers.Count的值就可以了,它表示系统安装的打印机的数目。还有个打印驱动名称的属性Printer.DeviceName="" 表示没有安装默认打印机。
11、怎樣設置上,下,左,右邊距及橫向打印
Dim Act As ActiveReport '设置纸的类型及尺寸
Act.Printer.PaperSize = 255
Act.Printer.PaperHeight = 21 / 2.54 * 1440 '21cm
Act.Printer.PaperWidth = 29 / 2.54 * 1440 '29cm
Act.PageSettings.LeftMargin = 1 / 2.54 * 1440 '1cm ' 设置边宽
Act.PageSettings.RightMargin = 1 / 2.54 * 1440 '1cm
Act.PageSettings.TopMargin = 1 / 2.54 * 1440 '1cm
Act.PageSettings.BottomMargin = 1 / 2.54 * 1440 '1cm
ActiveReport有如下4个属性是控制页边距的:
PageBottomMargin
PageTopMargin
PageLeftMargin
PageRightMargin
也可以通过ActiveReport的菜单来更改:File->Page Setup...
12、如何在activereports中实现手动分页?
两种比较简单的方法:
1,首先在可能需要分页的地方插入分页符,然后在代码中控制它的Enabled属性,如:
Private Sub PageHeader_Format()
Static x As Long
x = x + 1
Disables the page break for all but the first page
If x > 1 Then
Me.PageBreak1.Enabled = False
End If
End Sub
当然你可以插入很多分页符分别控制.
2,用运行时添加控件的方式在需要时添加分页控件.运行时添加控件的方法请参见AR自带的VB sample中的Print MS FlexGrid.
13、如何在报表分组后,分页显示分组后的内容,即每页只单独显示一种内容!
1、設置frouphead的new page屬性after
2、把Detail往下多拉一点,够长的时候就自动分页了
14、在程序中设定字段
Dim RptRs As ADODB.Recordset
Dim ret As Integer
Dim report1 As RptTop8
Set report1 = New RptTop8
report1.DataControl1.Connection = ADODBConnection
Set report1.DataControl1.Recordset = frmscore.GridEX1.ADORecordset
Set RptRs = frmscore.GridEX1.ADORecordset
report1.FldName.DataField = RptRs(0)
RptRs.MoveFirst
report1.DataControl1.Recordset.MoveFirst
report1.Restart
report1.ItemTitle.Text = "ddddd"
ret = MsgBox("打印?", vbYesNo + vbQuestion, "提示")
If ret = vbYes Then
report1.Show
End If
其中,FldName是细节带区的一个Field。rptrs是Recordset,确认打开有记录。报表也可以显示出,如果有3条纪录,显示三行,但显示的不是字段的值,而是FldName的Text属性值。
report1.FldName.DataField = RptRs.fields(0).name 改成這句试试
15、ActiveRepor做报表,有一些列是和上一条记录重复的,请问能让这些重复的列不显示吗?
需在隐藏原来的数据字段,然后在上面在一个Label1来显示.
在上面定义一个局部变量:
private strNN as string
在报表加在时
strNN =""
Label1.Caption=""
在Detail_Format事件中
if strNN="" then
strNN=trim(数据字段.text)
Label1.Caption=strNN
else
if strNN=trim(数据字段.text) then
Label1.Caption= ""
else
strNN=trim(数据字段.text)
Label1.Caption=strNN
end if
end if
或者:你可以用代码实现,在FetchData写代码,用一个数组变量存储上一个记录,如果发现当前记录有一个列与上个记录相同,则把该列赋值为空.
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:网络转载面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
亚洲畅销的.NET报表控件,20万用户的选择,可在应用程序中生成各种报表,十多年来一直荣获应用程序的优秀报表生成控件。
ActiveReports COMActiveReports COM是一款强大和极易使用的ActiveX报表控件,完全集成在Visual Basic开发环境,提供了强大的报表设计器
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢