vb报表设计
在VB中用数据报表设计器创建报表
在VB中用数据报表设计器创建报表数据环境设计器(Data Environment designer)与数据报表设计器(Data Report designer)均是Visual Basic 6.0的新增功能,它们的出现大大增强了Visual Basic处理数据的能力。
在以往的Visual Basic版本中,制作报表都是通过第三方产品来完成并通过ActiveX控件输出的。
这两种设计器的出现,使得Visual Basic程序员再也不用考虑选择一个什么样的第三方工具设计报表了,所有的设计全部在Visual Basic内部完成,再加上Visual Basic 6.0新增的开发IIS应用程序和开发DHTML应用程序功能,使得Visual Basic 6.0是一个名副其实的装备齐全的集成开发环境了。
下面我们以一个比较简单的报表为例,详细阐述如何使用数据环境设计器和数据报表设计器来设计一个数据报表。
一、数据环境设计器与数据报表设计器数据环境设计器提供了一个交互式的设计环境。
通过设置Connection对象和Command 对象的属性,可以快速完成到一个数据源的连接。
对于设置好的数据环境设计器,可以将它的对象拖放到表单上或是报表上,它会自动创建并完成数据绑定控件的设置。
数据报表设计器是一个极为灵活的设计报表的工具。
它以数据环境设计器作为数据源,能创建有层次的、汇总若干个关系型数据表数据的复杂报表。
除了像传统的报表设计工具那样能将报表通过打印机输出以外,数据报表设计器还能以HTML或文本文件的格式输出报表。
二、数据环境对象数据环境设计器包含以下几个对象:1. 数据连接(Connection)对象:连接对象表示到一个作为数据源的远端数据库或本地数据库的连接。
在数据环境中必须至少包含一个连接对象,要使用数据环境存取数据,必须首先创建连接对象。
2. 数据命令(Command)对象:命令对象定义了从数据库连接中将取回什么数据的详细信息。
VBA自动化报表的排版和样式设计方法
VBA自动化报表的排版和样式设计方法在现代商业环境中,报表在决策和分析中扮演着重要角色。
为了提供有效和准确的信息,报表的排版和样式设计至关重要。
VBA(Visual Basic for Applications)是微软Office套件的编程语言,它为自动化报表的排版和样式设计提供了强大的工具。
本文将向您介绍VBA自动化报表的排版和样式设计方法。
1. 排版方法排版是报表设计过程中的关键步骤之一。
通过使用VBA,您可以自动调整报表的布局,使其整齐、易读,并且视觉上吸引人。
下面是一些VBA排版方法的示例:1.1 行高和列宽的调整:使用VBA,您可以准确设置行高和列宽,以适应报表的内容。
通过调整行高和列宽,您可以确保报表中的文本和数据不会显示截断或混乱。
1.2 自动换行:在报表中,文本可能会因为太长而无法在一行中完全显示。
使用VBA的自动换行功能,您可以确保文本在超过单元格宽度时自动换行,并正确显示在连续的行中。
1.3 单元格合并:有时,您可能需要合并单元格以创建更大的标题或合计行。
通过使用VBA,您可以根据特定的条件合并单元格,并创建具有视觉吸引力和易读性的报表。
2. 样式设计方法样式设计是报表中另一个重要的方面。
通过使用VBA,您可以轻松地对文本、数字、背景颜色等元素进行样式设计。
以下是一些VBA样式设计方法的示例:2.1 字体样式:使用VBA,您可以选择并应用报表中的特定字体类型、字号和字形。
通过改变字体样式,您可以突出显示关键信息,提高报表的可读性。
2.2 文本颜色和背景颜色:通过使用VBA,您可以为文本和单元格选择合适的前景色和背景色。
这可以帮助您创建一个具有一致性和专业外观的报表。
2.3 边框和网格线:通过使用VBA,您可以自定义报表中单元格的边框和网格线。
这使您能够突出显示关键数据,并创建清晰的界限。
2.4 数字格式:使用VBA,您可以对报表中的数字进行格式化,如货币、百分比、科学计数法等。
告vb课程设计报表课程安排
告vb课程设计报表课程安排一、教学目标本课程的教学目标是使学生掌握VB报表的基本设计方法和技巧,能够独立完成报表的设计和制作。
具体包括以下三个方面:1.知识目标:学生需要掌握VB报表的基本概念、设计原则和常用控件的使用方法。
2.技能目标:学生能够运用所学知识,独立完成报表的设计和制作,包括数据源的连接、数据绑定、控件的添加和格式设置等。
3.情感态度价值观目标:通过完成报表设计任务,培养学生解决问题的能力,提高他们对计算机技术的兴趣和自信心,培养他们的创新精神和团队合作意识。
二、教学内容根据教学目标,本课程的教学内容主要包括以下几个部分:1.VB报表的基本概念和设计原则。
2.报表控件的添加和设置,包括文本框、标签、数据网格等。
3.数据源的连接和数据绑定。
4.报表的打印和输出。
5.实际案例分析和解题技巧。
三、教学方法为了达到教学目标,本课程将采用多种教学方法,包括:1.讲授法:讲解VB报表的基本概念、设计原则和控件的使用方法。
2.案例分析法:分析实际案例,引导学生学会解决实际问题。
3.实验法:学生动手实践,完成报表的设计和制作。
4.讨论法:学生分组讨论,分享学习心得和解决问题的方法。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选择一本合适的VB报表设计教材,作为学生学习的主要参考资料。
2.多媒体资料:制作PPT课件,生动展示报表设计的方法和技巧。
3.实验设备:提供计算机实验室,让学生能够动手实践,完成报表设计任务。
4.在线资源:推荐一些VB报表设计的在线教程和论坛,供学生课后自学和交流。
五、教学评估本课程的评估方式包括以下几个方面,以保证评估的客观性和公正性:1.平时表现:评估学生在课堂上的参与度、提问和回答问题的表现,以及学生的出勤情况。
2.作业:评估学生完成的报表设计作业的质量,包括设计的创意性、功能的完整性、代码的可读性等。
3.考试:进行期末考试,测试学生对VB报表设计知识的掌握程度和应用能力。
vb报表设计
VB 报表设计1、 工程->添加Data Report2、 工程->添加Data Environment3、 打开Data Environment (默认名为DataEnvironment1,可以修改),右击->添加连接,默认生成一个连接Connection14、 右击Connection1->选择属性->提供程序->选择Oracle OLE DB5、 连接属性设置如下,并测试连接。
6. 连接成功后,右击Connection1->添加命令,默认生成Command17. 右击Command1->属性,出现如下设置界面,选择数据库对象(表、视图、过程等)8. 建立DataReport 与Data Environment 的关联点击DataReport1,在属性设置中,将DataSource 设置为DataEnvironment1,DataMember为Command1.9. 设置检索结构在DataReport1上单击鼠标右键,选择“检索结构”命令,出现对话框“用新的数据层次代替现在的报表布局吗?” ,单击“是”按钮,将向报表设计器添加新的分组,分组与数据环境中的Command1命令对象有“一对一”的对应关系。
10.设置DataReport1的各个section(标头,细节等)。
在页标头(PageHeader)下,从控件箱中选择RptLabel控件,将Caption属性设置为“****明细”;·从数据环境设计器中将所需显示的字段拖放到细节(***_Detail)其中住院号:住院号。
前一表示标签(固定文本),后一项表示数据源中的字段·设置DataRe port1属性的“GridX”和“GridY”都为5;使用控件箱中的RptLine在分组注脚添加直线。
在页标头标签添加直线;11. 显示数据报表使用程序代码显示数据报表,在“工程资源管理器”窗口,双击“form1”窗体图标,并窗体上放置一个按钮cmdShow。
VB利用DataReport做报表详解
首先介绍下DataReport对象几个常用属性是DataSource用于设置个数据源通过该数据源数据使用者被绑定到个数据库; 2是DataMember从DataSource提供几个数据成员中设置个特定数据成员;3是LeftMargin、RightMargin、TopMargin、BottomMargin等用于指定报表左右上下页边距; 4是Sections即DataaReport报表标头、页标头、细节、页脚注、报表脚注5个区域如果加上分组(可以有多层分组)则增加对区域即分组标头、分组脚注其中DataSource般是个数据环境或是ADODB.Connection类型变量而DataMember则对应数据环境中Command或是ADODB.RecordSet类型变量推荐使用数据环境及Command页边界大家肯定都很清楚下面我主要介绍以下Sections这也是DataReport精髓所在Sections是个集合您可以为每个Section指定名称也可以用其缺省索引从上到下依次为1、2…每个Section均有Height和Visible属性您可以在定条件下使个Section不可见在Section中可以放置各种报表Control控件其中RptLabel、RptImage、RptShape和RptLine可以放在任意Section中用于输出各种文字、图形及表格线;RptTextBox只能放在细节中般用于绑定输出DataMemeber提供数据字段;RptFunction只能被放置在分组注脚中,用于输出使用各种内置计算出合计、最大值、最小值、平均值、记数等等上述报表Control控件中常用公共属性有用于控制位置及高度宽度Top、Left、Height、Width和控制可见性Visible;其中RptTextBox还有DataField、DataMember、DataFormat及Font属性;其他属性不再多说然后介绍下我使用经验是对想控制报表Control控件按类型有规律命名; 2是用RptShape矩形框做表格线框比用RptLine画框省事多了只有斜线才使用RptLine; 3是报表标题及报表中表头文字、日期及页码用RptLabel其中Caption属性支持转义%D为长格式日期%d为短格式日期%P为总页数%p为当前页码(注意:D和d,P和p大小写的区别); 4是对固定报表在设计窗口直接将报表Control控件摆放到位对于活报表应首先考虑报表最大情形将足够Control控件分别放置在区别区域位置大小可以不必深究然后在报表输出前用VBA代码对所有Control控件属性进行调整包括位置、高度、宽度、字体、对齐方式、显示格式、可见性等等相应对Section也应根据情况调整其高度和可见性最后用个例子模板来介绍说明其使用思路方法连接数据库With 数据环境.rsCommand名If .State = adStateOpen Then .Close .Source = SQL语句.Open 打开想输出数据库数据项以便输出End WithWith 报表名.DataSource=数据环境.DataMember=Command名这两行也可固定设好而不必每次设置设置页表头部分(RpttLabel…为报表Control控件名).Sections(2).Controls("RptLabelPage").Caption = "共%P页第%p页".Sections(2).Controls("RptLabelDate").Caption = "打印日期:%D".Sections(3).Controls("RptLabel1").Left=……设置细节部分(RptShapeX、RptTextBoxX为报表Control控件名).Sections(3).Controls("RptShape1").Left=….Sections(3).Controls("RptShape1").Top=….Sections(3).Controls("RptShape1").Height=….Sections(3).Controls("RptShape1").Width=….Sections(3).Controls("RptTextBox1").DataMember=Command名.Sections(3).Controls("RptTextBox1").DataField=字段1.Section s(3).Controls("RptTextBox1")=…….Sections(3).Controls("RptShapeN").Visible=False.Sections(3).Controls("RptTextBoxN").Visible=False…. Sections(3).Height=计算出或固定细节高度动态调整报表标题(RptLabelTitle为报表标签Control控件名).Sections(2). Controls("Rpt LabelTitle").Left=…….Sections(2). Controls("RptLabelTitle").Alignment=……调整完毕后.Show 或 .PrReportEnd With这样做优点是报表设计时简单调整方便、随意只需更改点代码而不必为了点点修改而费神在设计窗口调整半天vb6.0 中,用"datareport" 报表控件制作报表,纸张定义 A4 A3 <上一篇 | 下一篇> '在vb6.0中,用"datareport" 报表控件制作报表,当使用报表预览功能时,"datareport"'报表控件将使用"windows系统的当前默认打印机"的打印设置,若该打印设置纸张尺寸(如A4纸)小于"datareport"'报表控件所需纸张尺寸(如A3纸),则"datareport" 报表预览时将会出现"打印纸张尺寸小于报表宽度"错误,'请教如何用代码设置"windows系统的当前默认打印机"的打印机纸张尺寸,而不需用"公共对话框"的打印设置方法?Option ExplicitPublic Enum PrinterOrientationConstantsOrientPortrait = 2OrientLandscape = 1End Enum'Printer.PaperSize = vbPRPSA3Private Type DEVMODEdmDeviceName As String * 32dmSpecVersion As IntegerdmDriverVersion As Integer dmSize As IntegerdmDriverExtra As IntegerdmFields As LongdmOrientation As IntegerdmPaperSize As IntegerdmPaperLength As IntegerdmPaperWidth As IntegerdmScale As IntegerdmCopies As IntegerdmDefaultSource As Integer dmPrintQuality As Integer dmColor As IntegerdmDuplex As IntegerdmYResolution As IntegerdmTTOption As IntegerdmCollate As IntegerdmFormName As String * 32 dmUnusedPadding As Integer dmBitsPerPel As IntegerdmPelsWidth As LongdmPelsHeight As LongdmDisplayFlags As LongdmDisplayFrequency As Long End TypePrivate Type PRINTER_DEFAULTSpDataType As StringpDevMode As LongDesiredAccess As LongEnd TypePrivate Type PRINTER_INFO_2pServerName As LongpPrinterName As LongpShareName As LongpPortName As LongpDriverName As LongpComment As LongpLocation As LongpDevMode As LongpSepFile As LongpPrintProcessor As LongpDataType As LongpParameters As LongpSecurityDescriptor As LongAttributes As LongPriority As LongDefaultPriority As LongStartTime As LongUntilTime As LongStatus As LongcJobs As LongAveragePPM As LongEnd TypePrivate Const DC_PAPERNAMES = 16Private Const DC_PAPERS = 2Private Const DC_PAPERSIZE = 3Private Const DM_IN_BUFFER = 8Private Const DM_OUT_BUFFER = 2Private Const DM_ORIENTATION = &H1Private Const DM_PAPERSIZE = &H2&Private Const DMPAPER_A3 = 8 ' A3 297 x 420 mmPrivate Const DMPAPER_A4 = 9 ' A4 210 x 297 mmPrivate Const PRINTER_ACCESS_ADMINISTER = &H4Private Const PRINTER_ACCESS_USE = &H8Private Const STANDARD_RIGHTS_REQUIRED = &HF0000Private Const PRINTER_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or _ PRINTER_ACCESS_ADMINISTER Or PRINTER_ACCESS_USE)Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _(hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)Private Declare Function OpenPrinter Lib "winspool.drv" Alias _"OpenPrinterA" (ByVal pPrinterName As String, phPrinter As _ Long, pDefault As Any) As LongPrivate Declare Function ClosePrinter Lib "winspool.drv" _(ByVal hPrinter As Long) As LongPrivate Declare Function DocumentProperties Lib "winspool.drv" _Alias "DocumentPropertiesA" (ByVal hWnd As Long, ByVal hPrinter As Long, _ByVal pDeviceName As String, pDevModeOutput As Any, pDevModeInput As Any, _ByVal fMode As Long) As LongPrivate Declare Function GetPrinter Lib "winspool.drv" _Alias "GetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, _pPrinter As Any, ByVal cbBuf As Long, pcbNeeded As Long) As LongPrivate Declare Function SetPrinter Lib "winspool.drv" _Alias "SetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, _pPrinter As Any, ByVal Command As Long) As LongPrivate Declare Function DeviceCapabilities Lib "winspool.drv" _Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPort As String, _ByVal iIndex As Long, ByVal lpOutput As String, lpDevMode As DEVMODE) As LongFunction SetDefaultPrinterOrientation(ByVal eOrientation As _PrinterOrientationConstants, ByVal strPaperSize As String) As BooleanDim bDevMode() As ByteDim bPrinterInfo2() As ByteDim hPrinter As LongDim lResult As LongDim nSize As LongDim sPrnName As StringDim dm As DEVMODEDim pd As PRINTER_DEFAULTSDim pi2 As PRINTER_INFO_2' Get device name of default printersPrnName = Printer.DeviceName' PRINTER_ALL_ACCESS required under' NT, because we're going to call' SetPrinterpd.DesiredAccess = PRINTER_ALL_ACCESS' Get a handle to the printer.If OpenPrinter(sPrnName, hPrinter, pd) Then' Get number of bytes requires for' PRINTER_INFO_2 structureCall GetPrinter(hPrinter, 2&, 0&, 0&, nSize)' Create a buffer of the required si zeReDim bPrinterInfo2(1 To nSize) As Byte' Fill buffer with structurelResult = GetPrinter(hPrinter, 2, bPrinterInfo2(1), _nSize, nSize)' Copy fixed portion of structure' into VB Type variableCall CopyMemory(pi2, bPrinterInfo2(1), Len(pi2))' Get number of bytes requires for' DEVMODE structurenSize = DocumentProperties(0&, hPrinter, sPrnName, _ 0&, 0&, 0)' Create a buffer of the required si zeReDim bDevMode(1 To nSize)' If PRINTER_INFO_2 points to a DEVMOD E' structure, copy it into our bufferIf pi2.pDevMode ThenCall CopyMemory(bDevMode(1), ByVal pi2.pDevMode, Len(dm))Else' Otherwise, call DocumentProperties ' to get a DEVMODE structureCall DocumentProperties(0&, hPrinter, sPrnName, _bDevMode(1), 0&, DM_OUT_BUFFER)End If' Copy fixed portion of structure' into VB Type variableCall CopyMemory(dm, bDevMode(1), Len(dm))With dm' Set new orientationSelect Case strPaperSizeCase "A3".dmPaperSize = DMPAPER_A3 Case "A4".dmPaperSize = DMPAPER_A4 End Select.dmOrientation = eOrientation.dmFields = DM_ORIENTATION + DM_PAPERSIZE End With' Copy our Type back into bufferCall CopyMemory(bDevMode(1), dm, Len(dm))' Set new orientationCall DocumentProperties(0&, hPrinter, sPrnName, _ bDevMode(1), bDevMode(1), DM_IN_BUFFER Or _ DM_OUT_BUFFER)' Point PRINTER_INFO_2 at our' modified DEVMODEpi2.pDevMode = VarPtr(bDevMode(1))' Set new orientation system-widelResult = SetPrinter(hPrinter, 2, pi2, 0&)' Clean up and exitCall ClosePrinter(hPrinter)SetDefaultPrinterOrientation = TrueElseSetDefaultPrinterOrientation = FalseEnd IfEnd Function''''----------------------------------''''---njx:窗体调用的代码:打印纸选用:1:纵向 2.横向'''SetDefaultPrinterOrientation 2, "A3"''''-----------------------------------1.报表的概念利用报表可以把数据表中的数据按一定的格式输出到屏幕上或打印到纸上。
在VB中用数据报表设计器创建报表
在VB中用数据报表设计器创建报表数据环境设计器(Data Environment designer)与数据报表设计器(Data Report designer)均是Visual Basic 6.0的新增功能,它们的出现大大增强了Visual Basic处理数据的能力。
在以往的Visual Basic版本中,制作报表都是通过第三方产品来完成并通过ActiveX控件输出的。
这两种设计器的出现,使得Visual Basic程序员再也不用考虑选择一个什么样的第三方工具设计报表了,所有的设计全部在Visual Basic内部完成,再加上Visual Basic 6.0新增的开发IIS应用程序和开发DHTML应用程序功能,使得Visual Basic 6.0是一个名副其实的装备齐全的集成开发环境了。
下面我们以一个比较简单的报表为例,详细阐述如何使用数据环境设计器和数据报表设计器来设计一个数据报表。
一、数据环境设计器与数据报表设计器数据环境设计器提供了一个交互式的设计环境。
通过设置Connection对象和Command 对象的属性,可以快速完成到一个数据源的连接。
对于设置好的数据环境设计器,可以将它的对象拖放到表单上或是报表上,它会自动创建并完成数据绑定控件的设置。
数据报表设计器是一个极为灵活的设计报表的工具。
它以数据环境设计器作为数据源,能创建有层次的、汇总若干个关系型数据表数据的复杂报表。
除了像传统的报表设计工具那样能将报表通过打印机输出以外,数据报表设计器还能以HTML或文本文件的格式输出报表。
二、数据环境对象数据环境设计器包含以下几个对象:1. 数据连接(Connection)对象:连接对象表示到一个作为数据源的远端数据库或本地数据库的连接。
在数据环境中必须至少包含一个连接对象,要使用数据环境存取数据,必须首先创建连接对象。
2. 数据命令(Command)对象:命令对象定义了从数据库连接中将取回什么数据的详细信息。
vb报表设计
第六节报表设计对一个完整的数据库应用程序来说,制作并打印报表是不可缺少的环节。
VB 6.0 提供了DataReport 对象作为数据报表设计器(DamReport designer),DataReport对象除了具有强大的功能外,还提供了简单易操作的界面。
DataReport对象可以从任何数据源包括数据环境创建报表,数据报表设计器可以联机查看、打印格式化报表或将其导出到正文或HTML页中。
一、报表设计器数据报表设计器由DataReport对象、Section对象和DataReport控件组成。
1.DataReport对象DataReport对象与VB的窗体相似,同时具有一个可视的设计器和一个代码模块,可以使用设计器创建报表的布局,也可以在代码模块中添加代码。
在“工程”菜单上,单击“添加DataReport”命令,将数据报表设计器添加到工程中,则出现如图5-6-1所示的DataReport1对象,由“报表标头”、“页标头”、“细节”、“页注脚”和“报表注脚”组成。
图5-6-1·报表标头:指显示在一个报表开始处的文本,例如用来显示报表标题、作者或数据库名。
·页标头:指在每一页顶部出现的信息,例如用来显示每页的报表标题。
·分组标头、注脚:指数据报表中的“重复”部分。
每一个分组标头与一个分组注脚相匹配,用于分组。
·细节:指报表的最内部的“重复”部分(记录),与数据环境中最低层的Command 子对象相关联。
·页注脚:指在每一页底部出现的信息,例如,用来显示页码。
·报表注脚:指报表结束处出现的文本,例如,用来显示摘要信息或一个地址或联系人姓名。
报表注脚出现在最后一个页注脚之前。
2.Section对象数据报表设计器的每一个部分由Section对象表示,如图5-6-1中的Section1~Section5。
设计时,每一个Section由一个窗格表示,可以单击窗格以选择页标头,编程改变其外观和行为,也可以在窗格中放置和定位控件,对Section对象及其属性进行动态重新配置,更改每一个Section对象的布局来设计报表。
VB系统中基于Excel的报表的设计与实现——以工程计量结算单管理系统为例
3 报表 功能 的具体 实现
3 . 1 制作 E x c e l 报 表模 板 文件
本 系统 中 , 首 先根据 用 户提供 的纸质 报表 , 提前 制作了所有 E x c e l 报 表 模 板 文件 。之 后 , 在 程 序 中 编写相 应代码 向指定 单 元 格 输 出数 据 , 以此 实 现报 表 数据 的 自 动 生 成 。此 外 , 通 过 设 置模 板 文 件指 定 单 元格 的属性 , 系统 中实现 了不用 编写代 码 , 而 自动
若要在 V B 中操 控 E x c e l 文件 , 首 先 应 当 引 用 E x c e l 类 型库 。根 据 计 算 机 上 安 装 的 E x c e l 软件 的
X . Q u i t
版本的不同, 类型库的版本也不一样 , 因为本系统 中 使 用 的是 E x c e l 的2 0 0 3 版本 , 因此类 型 库 的版 本 为
P i r v a t e S u b c md Ok
—
输 出“ 1 2 3 ” 的代码为 : D i m X A s E x c e 1 . A p p l i c a t i o n声 明 了一 个 A p p l i —
c a t i o n对象
S e t X:C r e a t e O b j e c t ( ” E x c e 1 . a p p l i c a t i o n ” )创 建 了一 个 A p p l i c a t i o n 对 象
S e t x =C r e a t e O b j e c t ( ” E x c e 1 . a p p l i c a t i o n ” )
S e t x l B o o k = x . Wo r k b o o k s . O p e n f A p p . P a t h +
基于VB语言的动态报表设计
控 件 和 显 示 表格 线 的 R tie 件 。其 中 R tet pLn 控 p x T B x 件 设 计 部 分 为 非绑 定 部 分 ,它 的 nme 义 o控 a 定
为 T x1 i。 et()
23 建 立窗 口对象 .
图 1中的窗体 功 能为生 成一 个 临时表 ,用 来存
是管理信息系统中很难处理的一个环节 ,因为用户
对报 表 的样式 随 时会 有 各种各 样 的要求 ,如果 在程 序 中设定 好报 表 的样式 ,可 能起 初可 以满 足用户 的 需 求 ,但 是一 旦用户 对 报表 的样 式不 满意 时 ,程 序
Ln、R tu co 。从 名 称 上基 本 可 以识 别 他 们 的 ie pF ntn i 用 途 ,R tae 用 来 显示 非 数 据 绑 定 的文 本 的 标 pLbl 签 ,通常 用来 制作 报表 的页标 题 ;R teto 示 pTxBx显 数 据 绑 定 的文本 内容 ,即显 示 数 据 库 的字 段 内容 ;
维普资讯
第3卷第4 9 期
20 0 8年 4月
东
北
农
业
大
学
学
报
3 f 1 1 -1 7 9 4:1 4 1
Ap i 2 0 rl 0 8
Ju l f otes A r utrl nvr t o ma o r at gi l a U iesy N h c u i
显示 或打 印格式变得 非常 简洁 。V B语 言 自带 的 D t eot 表设 计器 ,其工 具箱 中包 含 六种 控件 : aa pr报 r
Rpt be、 Rpt xBo 、 Rptma e Rpt h p 、 Rpt La l Te t x I g、 Sae -
VB报表设计中使用天宇报表控件
报表是软件开发过程中⾮常耗费精⼒的事。
并且报表的要求⼜很⾼。
在我们试⽤了⼤量的专业报表⼯具如天宇报表(Crystal Reports)之后,我和我朋友对如何将这个复杂的东东加⼊我们的报表应⽤中有着⾮常的好奇⼼,但后来越来越感觉它的复杂程度不易使我们激动,且灵活性令⼈⽆法敬慕,久于久之,我们就有了开发⼀个全新的报表组件的想法,并热情地开发出来,这就是“天宇报表组件”。
这篇⽂章教你如何使⽤“天宇报表组件”,也可以让你有开发报表⼯具的冲动并少⾛⼀些弯路。
为了得到的效果,读者需要有⼀些基础的开发经验。
简介 天宇报表组件的的的主要功能: 可以设置报表的主标题、副题、表尾,报表细节内容并设置风格,如字体、对齐⽅式、单元格线、边框线...。
可以动态选择所报表的列。
把你的记录集、格表、数据表的内容打印出。
可以动态调整列宽。
⽀持合并单元格。
可以动态设置页边距,动态设置打印格式,⽔平⽅式 可以动态定义页眉、页脚、表头、表体。
插⼊⽇期、页码等,设置按草稿打印,⾏号列标、单⾊打印。
打印浏览设置:缩放,分页浏览,上下页等。
可保存多达8种以上的⽂件:Excel⽂件|⽂本⽂件|Web页|*.dbf|WD1(1-2-3)(*.wdl)|WKS(Works *.wks)|*.wks|DIF(数据交换格式*.dif)|*.dif 优点: 天宇报表有下⾯⼀些主要的优点: 1) 快速的报表开发⼯具 2) 能够导出成为复杂的图⽚ 3) 灵活地由⽤户或者编程者设置报表格式 4) 7种以上的数据保存格式 5) 调⽤极为⽅便,最⼩时仅⼆⾏编程代码 6) 界⾯⼤⽅、美观、功能强⼤ 应⽤平台 VS6.0 开发⼯具 VB6.0 应⽤⽰例Dim Rpt As New Reopot6Rpt.SetGrid = MSHFlexGrid1Rpt.ShowReport 天宇报表引擎(PrintClass.dll)) 通过它可以完成⼀些任务,如在报告⽂件中合并数据,转换报告为其它格式等。
VB控制EXCEL进行报表设计及打印
VB控制EXCEL进行报表设计及打印VB控制EXCEL进行报表设计及打印在工控程序的开发中,经常涉及到数据信息的分析、加工,最终还需把统计结果形成各种形式的报表打印输出。
在Visual Basic中制作报表,通常是用数据环境设计器(DataEnvironment Designer)与数据报表设计器(Data Report Designer),或者使用第三方产品来完成。
但对于大多数习惯于Excel报表的用户而言,用以上方法生成的报表在格式和功能等方面往往不能满足他们的要求。
由于Excel具有自己的对象库,在Visual Basic工程中可以加以引用,通过对Excel使用OLE自动化,可以创建一些外观整洁的报表,然后打印输出。
这样实现了Visual Basi应用程序对Excel的控制。
本文将针对一个具体实例,阐述基于VB和EXCEL的报表设计及打印过程。
1)创建Excel对象Excel对象模型包括了128个不同的对象,从矩形、文本框等简单的对象到透视表,图表等复杂的对象。
下面简单介绍一下其中最重要,也是用得最多的五个对象。
(1)Application对象:Application对象处于Excel对象层次结构的顶层,表示Excel自身的运行环境。
(2)Workbook对象:Workbook对象直接地处于Application 对象的下层,表示一个Excel工作薄文件。
(3)Worksheet对象:Worksheet对象包含于Workbook对象,表示一个Excel工作表。
(4)Range对象:Range对象包含于Worksheet对象,表示Excel工作表中的一个或多个单元格。
(5)Cells对象:Cells对象包含于Worksheet对象,表示Excel 工作表中的一个单元格。
如果要启动一个Excel,使用Workbook和Worksheet对象,下面的代码启动了Excel并创建了一个新的包含一个工作表的工作薄:Dim zsbexcel As Excel.ApplicationSet zsbexcel = New Excel.Applicationzsbexcel.Visible = True如要Excel不可见,可使zsbexcel.V isible = Falsezsbexcel.SheetsInNewWorkbook = 1Set zsbworkbook = zsbexcel.Workbooks.Add2)设置单元格和区域值要设置一张工作表中每个单元格的值,可以使用Worksheet对象的Range属性或Cells 属性。
用VB实现复杂报表的设计
用VB实现复杂报表的设计科技信息2012年第33期SCIENCE &TECHNOLOGY INFORMATION 报表在各行各业中广泛应用,是信息浏览、分析和打印的有力工具,它是信息集中处理的重要手段。
常见的报表就是用表格、图表等格式来动态显示数据。
报表的主要特点是数据动态化,格式多样化,并且实现报表数据和报表格式的完全分离,用户可以只修改数据,或者只修改格式,使用方便,灵活。
目前,国内外的报表系统种类繁多,功能界面也各具特色,国外的高端报表系统,国内的传统报表系统,都有各自的优缺点,在实际工作中应该根据实际需要选择合适的报表系统。
利用传统的报表系统制作报表维护量较大,一个需求对应一个报表文件,不同的组合则要求制作大量的报表文件,这样就使得开发过程变得极为繁琐,并难以实现用户的不同需求。
在设计复杂数据源的报表时,有时需要人工来转换数据格式,有时则要编写大量代码来将多个数据源转化为一个数据源再使用,有时又使用拼接子报表的方式来实现,但均未能从根本上解决问题,最终严重影响了报表的设计和使用效率。
因此如何快速制作复杂的数据源报表,减轻设计开发的工作量,已经成为报表系统开发的首要问题。
目前,我国的报表系统设计主要是使用Java 和Visual C++设计来实现的传统报表系统,传统报表系统一般是指一些主要以条带式设计为基础的开源软件以及国内的一些仿制产品。
这些报表系统的数学模型都是基于SQL /OLAP 理论设计的,虽然在不断地改进,但处理方案并没有本质的变化,因此无法满足国内复杂报表的制作需求。
目前最常见的报表工具有Excel ,UniversalForms ,Formula One等,国内常见的工具有润乾报表、帆表(FineReport)等。
对这些报表工具的比较和研究,有助于我们完成更好的报表工具的设计。
Excel 是历史最悠久的电子表格程序之一,功能强大,方便好用,后来出现的许多Windows 报表系统都受其影响,甚至在功能或界面都有所模仿。
VBA中的表单和报表设计和生成技巧详解
VBA中的表单和报表设计和生成技巧详解VBA(Visual Basic for Applications)是一种用于自动化任务和增强功能的编程语言,它广泛应用于Microsoft Office软件中,包括Excel、Word和PowerPoint等。
在VBA中,表单和报表设计和生成是常见的任务,通过使用一些技巧,可以大大提高效率和准确性。
本文将详解VBA中表单和报表设计和生成的技巧,帮助读者更好地应对这一任务。
1. 使用用户表单设计界面在VBA中,我们可以使用用户表单来设计一个交互界面,以便用户输入数据或者进行选择。
设计用户表单有助于提高用户体验,使得数据输入更加方便和直观。
可以使用控件工具箱中的文本框、下拉菜单、按钮等控件来构建用户表单。
通过编写VBA代码,我们可以根据用户的输入和选择,执行相应的操作,如生成报表或进行数据处理。
2. 动态控制表单和报表的生成在VBA中,我们可以根据需要动态生成表单和报表。
通过循环和条件判断等语句,我们可以根据数据的不同生成不同的表单和报表,避免手动一个一个地生成。
这种动态生成的技巧能够大大提高效率,在处理大量数据的情况下尤为重要。
3. 利用模板生成报表VBA中可以使用模板来生成报表,这样可以保证报表的格式和样式的一致性。
我们可以将报表的模板设计好后,保存为一个文件,然后通过VBA代码打开模板文件,并在其基础上填充数据和进行格式调整等操作。
这种方式不仅可以减少反复设计报表的工作量,还能提高报表的可维护性。
4. 自动化数据处理和计算在生成报表的过程中,经常需要对数据进行处理和计算。
VBA 提供了强大的数据处理和计算功能,可以通过编写代码实现自动化。
例如,我们可以使用VBA代码对数据进行筛选、排序、求和等操作,然后将处理后的结果填充到报表中。
这种自动化数据处理和计算的技巧可以帮助我们节省大量的时间和精力。
5. 使用图表提升报表的可视化效果报表中的图表能够更直观地展示数据的关系和趋势。
Visual_Basic报表设计
%D
%t %T %i
当前时间(M)(短格式) Current Time (Short Format)
报表控件
数据报表控件工具箱中的控件有: Label 控件(RptLabel)、 TextBox 控件(RptTextBox)、 Image 控件(RptImage)、 Line 控件(RptLine)、 Shape 控件(RptShape)、 Function 控件(RptFunction)。
(6)在页注脚(PageHeader)中可以放置页码,方法是: 依次拖曳两个Label控件到页注脚的右下侧,分别设置 它们的Caption属性为“共%P页”和“第%p页”,然 后再调整两个Label控件的位置和字体属性。按上述步 骤设置完成的DataReport4报表如图。
创建Command对象
分组报表DataReport10连接的数据源是Command4对象, 创建的方法如下: ( 1 ) 在 工 程 中 打 开 数 据 环 境 对 象 DataEnvironment1, 在 Connection1对象里添加命令对象Command4;
(2)设置Command4对象的通用属性,如图所示。
( 3 ) 设 置 Command4 对 象 的 分 组 字 段 “jshzhch”,其它字段为细节字段,如图所示。
DataField
Name Alignment DataFormat
绑定的字段名
控件名称 对齐方式,有3个取值 数据显示的格式
( 4 ) 控 件 的 “ FunctionType” 属 性 决 定 将 对 “数据字段”中的数据进行什么操作。缺省 情况下,这一属性设置为0-RptFuncSum,以 合计 数 据的 值 。其 它 函数 包 括: Average、 Minimum、Maximum、Row Count、 STDDev ( 标 准 偏 差 ) 和 Value Count。 Function控件包含的函数如表:
VB基础教程:第九章第六节报表制作
9.6 报表制作1. 报表的概念 利⽤报表可以把数据表中的数据按⼀定的格式输出到屏幕上或打印到纸上。
2.制作报表的⽅法 在VB6.0中可以利⽤报表设计器来制作报表,从“⼯程”中选择“添加data report”,将报表设计器加⼊到当前⼯程中,报表由5部分组成: 报表标头——每份报表只有⼀个,可以⽤标签建⽴报表名。
页标头——每页有⼀个,即每页的表头,如字段名。
细节——需要输出的具体数据,⼀⾏⼀条记录。
页脚注——每页有⼀个,如页码。
报表脚注——每份报表只有⼀个,可以⽤标签建⽴对本报表的注释、说明。
使⽤报表设计器处理的数据需要利⽤数据环境设计器创建与数据库的连接,从“⼯程”菜单中选择 “添加Data Enviroment”,在连接中选择指定的数据库⽂件,完成与数据库的连接,然后产⽣Command对象连接数据库内的表。
制作报表的步骤: (1)新建⼯程,在窗体上放置两个命令按钮; (2)从“⼯程”菜单中“添加Data Enviroment”,右击Connection1,在属性中选择“Microsoft Jet 4 OLE DB Provider”,在“连接”中指定数据库; (3)再次右击Connection1,选则“添加命令”,创建Command1对象,右击Command1,在属性中设置该对象连接的数据源为需要打印的数据表; (4)在从“⼯程”菜单中“添加Data Report”,在属性窗⼝中设置DataSource为数据环境DataEnviroment1对象,DataMember为Command1对象,即指定数据报表设计器DataReport1的数据来源; (5)将数据环境设计器中Command1对象内的字段拖到数据报表设计器的细节区; (6)利⽤标签控件在报表标头区插⼊报表名,在页标头区设置报表每⼀页顶部的标题; (7)利⽤线条控件在报表内加⼊直线,利⽤图形控件和形状控件加⼊图案或图形; (8)利⽤DataReport1对象的Show⽅法显⽰报表,在窗体Click事件加代码:DataReport1.Show; (9)利⽤预览窗⼝按打印按钮可以打印报表; (10)利⽤预览窗⼝⼯具栏上的导出按钮可以将报表内容输出成⽂本⽂件或Html⽂件;也可以利⽤DataReport1对象的ExportReport⽅法将报表内容输出成⽂本⽂件或Html⽂件。
VB?报表页面设置
VB 报表页面设置1、如果提示页面宽度大于报表宽度首先可以设置报表的左右Margin 边距如 .RightMargin = 0 (当然首选是调节右边距了,这样不会影响布局和美观)2、如果还是不行就把左边距也设为 0 看看下一步就是调节内容的布局了缩短宽度3、如果不能满足需求,那没就让打印机得打印方向默认为横向打印或者调节默认的纸张大小在vb 工程中添加模块然后Option ExplicitPublic Enum PrinterOrientationConstantsOrientPortrait = 2OrientLandscape = 1End Enum'Printer.PaperSize = vbPRPSA3Private Type DEVMODEdmDeviceName As String * 32dmSpecVersion As IntegerdmDriverVersion As IntegerdmSize As IntegerdmDriverExtra As IntegerdmFields As LongdmOrientation As IntegerdmPaperSize As IntegerdmPaperLength As IntegerdmPaperWidth As IntegerdmScale As IntegerdmCopies As Integer dmDefaultSource As Integer dmPrintQuality As Integer dmColor As Integer dmDuplex As Integer dmYResolution As Integer dmTTOption As Integer dmCollate As Integer dmFormName As String * 32 dmUnusedPadding As Integer dmBitsPerPel As Integer dmPelsWidth As Long dmPelsHeight As Long dmDisplayFlags As Long dmDisplayFrequency As Long End TypePrivate Type PRINTER_DEFAULTS pDataType As String pDevMode As Long DesiredAccess As LongEnd TypePrivate Type PRINTER_INFO_2 pServerName As Long pPrinterName As Long pShareName As Long pPortName As Long pDriverName As Long pComment As Long pLocation As Long pDevMode As LongpSepFile As LongpPrintProcessor As LongpDataType As LongpParameters As LongpSecurityDescriptor As LongAttributes As LongPriority As LongDefaultPriority As LongStartTime As LongUntilTime As LongStatus As LongcJobs As LongAveragePPM As LongEnd TypePrivate Const DC_PAPERNAMES = 16Private Const DC_PAPERS = 2Private Const DC_PAPERSIZE = 3Private Const DM_IN_BUFFER = 8Private Const DM_OUT_BUFFER = 2Private Const DM_ORIENTATION = &H1Private Const DM_PAPERSIZE = &H2&Private Const DMPAPER_A3 = 8 ' A3 297 x 420 mmPrivate Const DMPAPER_A4 = 9 ' A4 210 x 297 mmPrivate Const PRINTER_ACCESS_ADMINISTER = &H4Private Const PRINTER_ACCESS_USE = &H8Private Const STANDARD_RIGHTS_REQUIRED = &HF0000Private Const PRINTER_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or _PRINTER_ACCESS_ADMINISTER Or PRINTER_ACCESS_USE)Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _(hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)Private Declare Function OpenPrinter Lib "winspool.drv" Alias _"OpenPrinterA" (ByVal pPrinterName As String, phPrinter As _Long, pDefault As Any) As LongPrivate Declare Function ClosePrinter Lib "winspool.drv" _(ByVal hPrinter As Long) As LongPrivate Declare Function DocumentProperties Lib "winspool.drv" _Alias "DocumentPropertiesA" (ByVal hwnd As Long, ByVal hPrinter As Long, _ByVal pDeviceName As String, pDevModeOutput As Any, pDevModeInput As Any, _ByVal fMode As Long) As LongPrivate Declare Function GetPrinter Lib "winspool.drv" _Alias "GetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, _pPrinter As Any, ByVal cbBuf As Long, pcbNeeded As Long) As LongPrivate Declare Function SetPrinter Lib "winspool.drv" _Alias "SetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, _pPrinter As Any, ByVal Command As Long) As LongPrivate Declare Function DeviceCapabilities Lib "winspool.drv" _Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPort As String, _ByVal iIndex As Long, ByVal lpOutput As String, lpDevMode As DEVMODE) As LongFunction SetDefaultPrinterOrientation(ByVal eOrientation As _PrinterOrientationConstants, ByVal strPaperSize As String) As BooleanDim bDevMode() As ByteDim bPrinterInfo2() As ByteDim hPrinter As LongDim lResult As LongDim nSize As LongDim sPrnName As StringDim dm As DEVMODEDim pd As PRINTER_DEFAULTSDim pi2 As PRINTER_INFO_2' Get device name of default printer sPrnName = Printer.DeviceName' PRINTER_ALL_ACCESS required under' NT, because we're going to call' SetPrinterpd.DesiredAccess = PRINTER_ALL_ACCESS' Get a handle to the printer.If OpenPrinter(sPrnName, hPrinter, pd) Then' Get number of bytes requires for' PRINTER_INFO_2 structureCall GetPrinter(hPrinter, 2&, 0&, 0&, nSize)' Create a buffer of the required sizeReDim bPrinterInfo2(1 To nSize) As Byte' Fill buffer with structurelResult = GetPrinter(hPrinter, 2, bPrinterInfo2(1), _ nSize, nSize)' Copy fixed portion of structure' into VB Type variableCall CopyMemory(pi2, bPrinterInfo2(1), Len(pi2))' Get number of bytes requires for' DEVMODE structurenSize = DocumentProperties(0&, hPrinter, sPrnName, _ 0&, 0&, 0)' Create a buffer of the required sizeReDim bDevMode(1 To nSize)' If PRINTER_INFO_2 points to a DEVMODE' structure, copy it into our bufferIf pi2.pDevMode ThenCall CopyMemory(bDevMode(1), ByVal pi2.pDevMode, Len(dm))Else' Otherwise, call DocumentProperties' to get a DEVMODE structureCall DocumentProperties(0&, hPrinter, sPrnName, _bDevMode(1), 0&, DM_OUT_BUFFER)End If' Copy fixed portion of structure' into VB Type variableCall CopyMemory(dm, bDevMode(1), Len(dm))With dm' Set new orientationSelect Case strPaperSizeCase "A3".dmPaperSize = DMPAPER_A3Case "A4".dmPaperSize = DMPAPER_A4End Select.dmOrientation = eOrientation.dmFields = DM_ORIENTATION + DM_PAPERSIZEEnd With' Copy our Type back into bufferCall CopyMemory(bDevMode(1), dm, Len(dm))' Set new orientationCall DocumentProperties(0&, hPrinter, sPrnName, _bDevMode(1), bDevMode(1), DM_IN_BUFFER Or _DM_OUT_BUFFER)' Point PRINTER_INFO_2 at our' modified DEVMODEpi2.pDevMode = VarPtr(bDevMode(1))' Set new orientation system-widelResult = SetPrinter(hPrinter, 2, pi2, 0&)' Clean up and exitCall ClosePrinter(hPrinter)SetDefaultPrinterOrientation = TrueElseSetDefaultPrinterOrientation = FalseEnd IfEnd Function接着在报表的设计器中 Initialize() 方法中添加调用方法''''----------------------------------''''---njx:窗体调用的代码:打印纸选用:1:纵向 2.横向SetDefaultPrinterOrientation 1, "A3"''''-----------------------------------'3、如果还是不能满足你可以重新设计你要绑定的数据库处理换页显示这样很麻烦不赞成。
vb表格设计
vb表格设计竭诚为您提供优质文档/双击可除vb表格设计篇一:Vb6.0调用excel制作任意表格Vb6.0调用excel制作任意表格在Vb中制作报表一般来讲有三种方法:1、直接使用Vb6.0中自带的dataReport来做,这种方法有很大的局限性,对于比较规则的报表,但对于比较复杂的报表,比如说一张报表,上部分是人员的工资,下部分是人员的各日的考勤,使用这种方法就无能为力。
2、使用直接的打印方法,即printer.print,这种方法直接向打印机打印,就象过去使用Foxpro似的,需要进行打印机定位,并且在windows下,不同的字符数字所占的宽度也不相同,所以这种方法使用起来非常麻烦。
3、使用微软的excel。
本文重点讨论用excel来制作报表所涉及的问题。
我们用excel做报表时,不仅是将所要的内容填到excel的工作表中,而且还需要填写公式、定义合适的格式(格线、字体、对齐)等。
excel的每张工作表是由若干行、若干列构成的,行列的交叉形成的小格称作单元格。
我们正好可以用这些现成的单元格来做我们的报表的相应的格。
为了程序简单,可以将报表的模板做好,如表头,相应的行高、列宽、字体、对齐调整好(事实上,这些也可以通过程序来实现,只是麻烦点。
),然后利用Vb程序来操纵excel。
这里我们以sqlseRVeR7.0为后台数据。
首先定义好需要的变量,在Vb6.0的菜单“工程\引用”中确保microsoftexcel8.0objectlibrary(在excel2000中,此处为excel9.0)复选框选中。
再向excel工作表中填入数据:dimVbexcelasexcel.applicationdimxlbookasexcel.workbook定义excel工作簿对象dimxlsheetasexcel.worksheet定义excel工作表对象dimrssalaryasnewadodb.Recordset定义记录集rssalary.opensqlstrsalary,cnstring,adopenstatic,adl ockReadonlyrssalary为已计算好的工资数据记录集。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六节报表设计对一个完整的数据库应用程序来说,制作并打印报表是不可缺少的环节。
VB 6.0 提供了DataReport 对象作为数据报表设计器(DamReport designer),DataReport对象除了具有强大的功能外,还提供了简单易操作的界面。
DataReport对象可以从任何数据源包括数据环境创建报表,数据报表设计器可以联机查看、打印格式化报表或将其导出到正文或HTML页中。
一、报表设计器数据报表设计器由DataReport对象、Section对象和DataReport控件组成。
1.DataReport对象DataReport对象与VB的窗体相似,同时具有一个可视的设计器和一个代码模块,可以使用设计器创建报表的布局,也可以在代码模块中添加代码。
在“工程”菜单上,单击“添加DataReport”命令,将数据报表设计器添加到工程中,则出现如图5-6-1所示的DataReport1对象,由“报表标头”、“页标头”、“细节”、“页注脚”和“报表注脚”组成。
图5-6-1·报表标头:指显示在一个报表开始处的文本,例如用来显示报表标题、作者或数据库名。
·页标头:指在每一页顶部出现的信息,例如用来显示每页的报表标题。
·分组标头、注脚:指数据报表中的“重复”部分。
每一个分组标头与一个分组注脚相匹配,用于分组。
·细节:指报表的最内部的“重复”部分(记录),与数据环境中最低层的Command 子对象相关联。
·页注脚:指在每一页底部出现的信息,例如,用来显示页码。
·报表注脚:指报表结束处出现的文本,例如,用来显示摘要信息或一个地址或联系人姓名。
报表注脚出现在最后一个页注脚之前。
2.Section对象数据报表设计器的每一个部分由Section对象表示,如图5-6-1中的Section1~Section5。
设计时,每一个Section由一个窗格表示,可以单击窗格以选择页标头,编程改变其外观和行为,也可以在窗格中放置和定位控件,对Section对象及其属性进行动态重新配置,更改每一个Section对象的布局来设计报表。
3.DataReport控件当一个新的数据报表设计器被添加到工程时,在窗体上控件箱出现“数据报表”和“General”(通用)选项卡,如图5-6-2所示。
但在数据报表设计器上不能使用General的控件,即内部控件或ActiveX控件。
数据报表选项卡中的控件仅包含可在数据报表设计器上工作的特殊控件。
图5-6-2数据报表选项卡有下列控件:·TextBox控件(RptTextBox):文本框用于在报表上设置规定文本格式,或指定一个DataFormato。
·Label控件(RptLabel):用于在报表上放置标签、标识字段或Section。
·Image控件(RptImage):用于在报表上放置图形,该控件不能被绑定到数据字段。
·Line控件(RptLine):用于在报表上绘制直线,可用于进一步区分Section。
·Shape控件(RptShape):用于在报表上放置矩形、三角形或圆形(椭圆型)。
·Function控件(RptFunction):是一个特殊的文本框,用于在报表生成时计算数值。
Function 控件不像TextBox控件那样直接绑定到记录集上。
二、设计报表用数据报表设计器设计一个定单明细表,利用dbBook.mdb中的四个数据表,输出每个客户的定单信息,即每个客户订购的图书数量、书名和书号。
为了更具有实用性,在Books(图书信息表)和Bookitems(订购图书信息表)中添加“单价”字段,这样在报表中可以对客户订购的金额进行汇总。
1.指定数据源首先配置一个数据源,可以用数据环境(DamEnvironment)作数据源。
①在“工程”菜单上,单击“添加Data Environment”向工程中添加一个数据环境设计器对象(denBook)。
②设置“连接”属性为“dbbook.mdb”,Connection对象名为“cnnBook”。
添加Command命令“cmmCust”。
用右键单击“cmmCust”,在快捷菜单中选择“属性”命令,打开属性页。
在“通用”选项卡中选择“Customers”表。
③在快捷菜单中选择“添加子命令”,添加“cmmBook”命令,在属性页的“通用”选项卡中选择“SQL语句”,单击“SQL生成器”按钮,则出现如图5-6-3所示的查询设计窗口。
图5-6-3设计由Orders、Books和Boohtems表组成的查询记录集,设计查询的步骤如下:①打开“数据视图”窗口,如图5-6-4所示。
将Orders、Books和Bookitems表拖放到查询设计窗口中。
图5-6-4②通过单击Orders的“定单号”并拖放到Books的“定单号”来建立关联,并将Books的“书号”和Bookitems的“书号”关联。
单击要显示的字段,包括“定单号”、“客户号”、“书号”、“书名”、“数量”和“单价”。
单击鼠标右键,选择“运行”命令,在查询设计窗口中显示SQL语句和满足条件的记录,如图5-6-5所示。
图5-6-5③关闭查询设计窗口,出现保存对话框,将查询保存为cmmBook,则生成的数据环境设计器如图5-6-6所示,由两个Command对象:cmmCust和cmmBook。
图5-6-6④在数据环境设计器窗口中用鼠标右键单击cmmBook,在快捷菜单中选择“属性”,选择“关联”选项卡,单击“添加”按钮,如图5-6-7所示。
图5-6-7单击“确定”按钮,则完成了cmmBook对象的创建。
2.将数据报表设计器添加到工程中在“工程”菜单上,单击“添加Data Report”命令,将数据报表设计器添加到工程中,则出现未设计的DataReportl对象。
如果设计器不在“工程”菜单上,在控件箱用鼠标右键单击“部件”选择“设计器”命令,并在选项卡中单击“Data Report”把设计器添加到菜单上。
3.设置DataReport对象属性在属性页设置DataReport对象的属性,将Name属性设置为“rptBook”;设置DataSource 属性为数据环境对象“denBook”;设置DataMember属性设置为“cmmCust”命令。
4.检索结构在rptBook上单击鼠标右键,选择“检索结构”命令,出现对话框“用新的数据层次代替现在的报表布局吗?” ,单击“是”按钮,将向报表设计器添加新的分组,分组与数据环境中的cmmCust 命令对象有“一对一”的对应关系。
5.添加控件·在页标头(PageHeader)下,从控件箱中选择RptLabel控件,将Caption属性设置为“客户定单明细”;·从数据环境设计器中拖放“客户号”、“客户姓名”和“客户地址”字段到分组标头(cmmCusto_Header),则自动出现标签和文本框。
文本框的DataMember和DataField 属性自动为“客户号”、“客户姓名”和“客户地址”的Command和Field对象,然后将标签都删除;·从数据环境设计器中将“定单号”、“书名”、“数量”和“单价”字段拖放到细节(cmmBook_Detail),将所有的标签拖放到分组标头,文本框仍放置在细节。
6.设置布局·设置rptBook属性的“GridX”和“GridY”都为5;·设置各控件的布局,将分组标头中的标签与细节中相应的文本框对齐,将标签的“BorderStyle”属性设置为1,并设置字体大小;·使用控件箱中的RptLine在分组注脚(cmmCustomers Footer)添加一直线。
在页标头标签添加两条直线;·调整细节部分的高度,使它尽可能的窄,因为细节的高度是同一客户的每一定单之间的距离,避免不必要的空间,如图5-6-8所示。
图5-6-87.运行显示数据报表有两种方法可以显示数据报表:(1)在“工程”菜单中选择“属性”命令,将“启动对象”设置为rptBook,运行显示数据报表。
(2)使用程序代码显示数据报表,在“工程资源管理器”窗口,双击“form1”窗体图标,并窗体上放置一个按钮cmdShow。
按钮的Click事件代码如下:Private Sub cmdShow_Click()rptBook.ShowEnd Sub在运行时单击“form1”窗体中的cmdShow按钮,显示报表,如图5-6-9所示。
图5-6-9三、向报表添加Function控件数据报表设计器的控件箱中,Function控件使用各种内置函数,在报表生成时显示运行计算结果,一般放置在注脚部分。
Function控件仅在分组内的所有记录都被处理后,才可以计算值。
SQL语句则可以在记录处理时作为一个计算字段。
因此,Function控件只能被放置在比所计算数据层次高一级的部分中,例如,被放置在报表注脚中,此时Function控件的计算范围扩大到整个报表。
Function控件包含的函数如表5-6-1所示。
表5-6-1函数名功能Sum 合计一个字段的值Min 显示一个字段的最小值Max 显示一个字段的最大值Average 显示一个字段的平均值Standard Deviation 显示一列数字的标准偏差Standard Error 显示一列数字的标准错误Value Count 显示包含非空值的字段数Row Count 显示一个报表部分中的行数1.向数据报表设计器添加一个Function控件的步骤①在数据报表设计器的一个适当的注脚部分绘制一个Function控件。
②设置DataMember和DataField属性为来自数据环境Command对象的一个数值字段。
2.报表中添加显示某个客户订单总金额的步骤:①在cmmBook的查询中添加一个别名为“合计金额”字段用于计算该客户的总金额,在图5-6-2中的查询设计窗口添加字段,在“列”栏中输入“Books.数量*Books.单价”,在“别名”栏输入“合计金额”。
运行该查询后,在cmmBook对象就增加了“合计金额”字段。
如图5-6-10。
图5-6-10②从数据视图中拖动“合计金额”字段,放置在数据报表设计器窗口的“cmmBook_Detail”中,并安排布局。
如图5-6-11。
图5-6-11③在报表设计器窗口中的“cmmCust_Footer”部分绘制一个Function控件,Function控件的属性如表5-6-2所示。
在Function控件的左边放置一个Label控件,Caption属性设置为“合计:”。
表5-6-2属性设置值Name FncTotalDataMember cmmbookDataField 合计金额Font(Font Style) BoldFunctionType 0-rmFuncSum④保存并运行,当单击“form1”窗体中的“显示报表”按钮时,如图5-6-12所示。