DataReport对象的几个常用属性
- 格式:doc
- 大小:23.50 KB
- 文档页数:2
VB利用DataReport做报表首先介绍一下DataReport对象的几个常用属性。
一是DataSource,用于设置一个数据源,通过该数据源,数据使用者被绑定到一个数据库;二是DataMember,从DataSource提供的几个数据成员中设置一个特定的数据成员;三是LeftMargin、RightMargin、TopMargin、BottomMargin等,用于指定报表的左右上下的页边距;四是Sections,即DataReport的报表标头、页标头、细节、页脚注、报表脚注5个区域,如果加上分组(可以有多层分组),则增加一对区域,即分组标头、分组脚注。
其中DataSource一般是一个数据环境或是ADODB.Connection类型的变量,而DataMember则对应数据环境中的Command或是ADODB.RecordSet类型的变量,推荐使用数据环境及Command,页边界大家肯定都很清楚,下面我主要介绍以下Sections,这也是DataReport的精髓所在。
Sections是一个集合,您可以为每一个Section指定名称,也可以用其缺省的索引,从上到下依次为1、2…。
每个Section均有Height和Visible属性,您可以在一定条件下使一个Section不可见。
在Section中可以放置各种报表控件,其中RptLabel、RptImage、RptShape 和RptLine可以放在任意的Section中,用于输出各种文字、图形及表格线;RptTextBox只能放在细节中,一般用于绑定输出DataMemeber提供的数据字段;RptFunction只能被放置在分组注脚中,用于输出使用各种内置函数计算出的合计、最大值、最小值、平均值、记数等等。
上述报表控件中常用公共属性有用于控制位置及高度宽度的Top、Left、Height、Width和控制可见性的Visible;其中RptTextBox还有DataField、DataMember、DataFormat及Font属性;其他属性不再多说。
Vb 6.0 中DATAREPORT 的使用一、打开VB6.0新建一“标准EXE”工程二、在“工程”菜单上,单击“添加DATA ENVIROMENT”向工程中一个设计器,此处为添加DATA ENVIROMENT1数据环境。
三、在弹出的工程1窗口中右键点击“CONNECTION1”,在弹出菜单中选择“属性”弹出数据链接属性窗体,在“提供程序”中选择自己的数据库环境。
如MICROSOFT OLE DB PROVIDER FOR SQL SERVER,点选下一步,选择自己的服务器、用户和密码,数据库等。
四、右键单击“CONNECTION1”,在弹出的菜单中选择“添加命令”,添加一个命令为COMMNAD1,右键单击“COMMNAD1”,在弹出菜单选择属性,在属性窗口的“通用”中对命令进行命名和连接的设置。
对数据源进行表的选择,“数据库对象”选择“表”,“对象名称”中选择你数据库中的表。
点击确定完成。
五、右键单击“COMMNAD1”,在弹出菜单中选择“添加子命令”,添加子命令为COMMAND2,右键单击“COMMNAD2”,在弹出菜单选择属性,在属性窗口的“通用”中对命令进行命名和连接的设置。
对数据源进行表的选择,“数据库对象”选择“表”,“对象名称”中选择你数据库中的表,再在“关联”项中对COMMAND1与COMMAND2的关联项进行设置,也就是此两表都有的关联字段,点“添加”进行添加。
最后点击确定完成。
六、创建数据报表DATAREPORT。
在“工程”菜单上,单击“添加DATA REPORT”向工程中一个数据报表DATAREPORT1。
在DATAREPORT1的属性窗口中,更改其DATASOURCE 为DATAENVIRONMENT1,DATAMEMBER 为COMMAND1。
七、右键单击数据报表设计器窗体,在弹出菜单上单击“检索结构”。
八、从数据环境设计器DATA ENVIROMENT1中拖动COMMAND1中几个需要的字段到DATA REPORT的“分组标头”中。
在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利用Dat aRepor t做报表首先介绍一下D a taRep ort对象的几个常用属性。
一是DataS ource,用于设置一个数据源,通过该数据源,数据使用者被绑定到一个数据库;二是DataM ember,从DataSo urce提供的几个数据成员中设置一个特定的数据成员;三是LeftM argin、RightMa rgin、TopMarg in、Bottom M a rgin等,用于指定报表的左右上下的页边距;四是Secti ons,即DataRe port的报表标头、页标头、细节、页脚注、报表脚注5个区域,如果加上分组(可以有多层分组),则增加一对区域,即分组标头、分组脚注。
其中DataSo urce一般是一个数据环境或是ADO DB.Connect ion类型的变量,而DataMe mber则对应数据环境中的Comm and或是A D ODB.RecordS et类型的变量,推荐使用数据环境及Command,页边界大家肯定都很清楚,下面我主要介绍以下Sect ions,这也是Data Report的精髓所在。
Sections是一个集合,您可以为每一个S ectio n指定名称,也可以用其缺省的索引,从上到下依次为1、2…。
每个Secti on均有He ight和V i sible属性,您可以在一定条件下使一个S e ction不可见。
在Sectio n中可以放置各种报表控件,其中RptLa bel、RptImag e、RptSha p e和RptL ine可以放在任意的Sect ion中,用于输出各种文字、图形及表格线;R ptText Box只能放在细节中,一般用于绑定输出Data Memebe r提供的数据字段;RptFunc tion只能被放置在分组注脚中,用于输出使用各种内置函数计算出的合计、最大值、最小值、平均值、记数等等。
第六节报表设计对一个完整的数据库应用程序来说,制作并打印报表是不可缺少的环节。
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对象的布局来设计报表。
AddNewMode 属性返回一个值,描述当前单元关于网格的AddNew 行的位置。
运行时只读,设计时不可用。
语法object。
AddNewModeAddNewMode 属性语法包含下面部分:部分描述object 对象表达式,其值是“应用于"列表中的对象.值AddNewMode 属性返回以下一个值:常数值描述dbgNoAddNew 0 当前单元不在最后一行,没有AddNew 操作,被挂起。
dbgAddNewCurrent 1 当前单元在最后一行,但没有AddNew 操作,被挂起。
dbgAddNewPending 2 当前单元的下一行是最后一行,作为挂起AddNew 操作的结果,通过网格的用户界面可以让用户进行初始化,或通过代码把Value 或Text 的列属性作为设置结果。
说明如果AllowAddNew 属性为True ,那么在网格中显示的最后一行是空的,允许用户输入新记录.如果AllowAddNew 属性为False, 空白行将不显示,并且AddNewMode 总是返回0。
AfterColEdit 事件在完成网格单元中的编辑之后出现。
语法Private Sub object_AfterColEdit([index As Integer,] ByVal colindex As Integer)AfterColEdit 事件的语法包含下面部分:部分描述object 对象表达式,其值是“应用于"列表中的对象。
Index Interger,它标识控件数组中的一个控件.colindex Interger,它标识已编辑过的列.说明当完成网格单元中的编辑时,比如当按Tab 键而切换到同一行的另外一列时按了ENTER 键,或者单击了另外一个单元时,都将执行BeforeColUpdate 和AfterColUpdate 事件,并且可将单元的数据移动到网格的复制缓冲区中。
AfterColEdit 事件紧随AfterColEdit 事件出现。
在控件箱中的Data控件是VB用于数据库操作的控件,双击Data控件或单击后在体上拖动出控件的大小,都可以看到Data控件的外观1.Data控件的常用属性(1)Connect属性Connect属性用来指定该数据控件所要链接的数据库格式,默认值为Access,其他还包括dBASE、FoxPro、Excel等。
(2)DatabaseName属性DatabaseName属性是用于确定数据控件使用的数据库的完整路径。
如果链接的Access 数据库,就可单击按钮定位.mdb文件。
例如,选择”C:\dbbook.mdb”文件。
(3)RecordSource属性RecordSource属性用于指定数据控件所链接的记录来源,可以是数据表名,也可以是查询名。
在属性窗口中单击下拉箭头在列表中选出数据库中的记录来源。
例如,选择客户信息表”Customers”。
(4)RecordsetType属性RecordsetType属性用于指定数据控件存放记录的类型,包含表类型记录集、动态集类型记录集和快照类型记录集,默认为动态集类型。
表类型记录集(Table):包含实际表中所有记录,这种类型可对记录进行添加、删除、修改、查询等操作,直接更新数据。
动态集类型记录集(Dynaset):可以包含来自于一个或多个表中记录的集合,即能从多个表中组合数据,也可只包含所选择的字段。
这种类型可以加快运行的速度,但不能自动更新数据。
快照类型记录集(Snapshot):与动态集类型记录集相似,但这种类型的记录集只能读不能更改数据。
(5)BOFAction和EOFAction属性在运行时用户通过单击数据控件的指针按钮可移动记录到开始或结尾,BOFAction属性是指当用户移动到开始时程序将执行的操作,EOFAction指当用户移动到结尾时程序将执行的操作。
EOFAcfion值为0(MoveFirst)是将第一笔记录作为当前记录,为1(BOF);9记录的开头。
首先介绍下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.报表的概念利用报表可以把数据表中的数据按一定的格式输出到屏幕上或打印到纸上。
Visual Basic6.0下数据库报表制作技巧在运用Visual Basic编制MIS系统前台程序时,往往会需要处理大量的报表。
而这些报表的制作,在Visual Basic6.0出现之前,要么需要使用Print语句编写大量程序代码,要么选择诸如Seagate等第三方公司所提供的诸如Data Report等软件,而一旦真正使用这些没有本地化的软件或控件,程序员往往会遇到各种各样令人头疼不已的问题——或者是中文字体显示有所限制,或者是报表数据无法动态及时更新,或者所提供的数据处理或统计功能并不怎么适用。
所幸的是,MicroSoft推出的Visual Basic6.0专业版和企业版中包含一个全新的组件——Data Report Designer (DRD),运用这个报表设计器,我们可以将报表与数据环境对象或者是ActiveX数据对象直接关联,使得Visual Basic6.0下的报表设计效率得到空前提高。
下面,就本人在运用DRD进行报表程序设计所获得的心得与大家共同探讨一下。
一将DRD与DED(Data Enviroment Designer)结合。
这是运用DRD解决Visual Basic6.0报表处理最常用的一种方法,在Samples中有一个名为Prjnwind工程就是专门介绍如何使用结合使用DRD和DED的例子程序。
我们可以通过选择新工程中的Data Project类型就可以自动增加一个空的DED和DRD实例到Project explorer中,打开一个空DataReport实例将禁止工具栏中的General 窗体并在工具栏底添加一个DataReort按钮。
如下图:可以看到,DataReport的专用控件——RptLabel、RptTextBox、RptImage、RptLine、RptShape和RptFunction。
除了RptFunction,每个Rpt控件都可以在固有Visual Basic工具面板中找到对应的控件。
数据分析报告常用术语数据分析是当今信息时代中一项重要的技能,它为企业和组织提供了对大量数据的洞察力。
而在数据分析报告中,术语的使用将帮助读者更好地理解和解释数据。
本文将介绍一些数据分析报告中常用的术语,以帮助读者更好地应用和理解这些术语。
1. 数据集(Dataset):指存储在数据库或文件中的一组相关数据。
通常,数据集是由多个数据元素组成,每个数据元素包括多个数据字段。
2. 数据字段(Data Field):也称为列或属性,是数据集中的每个列。
每个数据字段包含特定类型的数据,例如日期、姓名、成绩等。
3. 数据行(Data Row):也称为记录,是数据集中的每行数据。
每一行包含了属于数据字段的具体值,它们按照相同的顺序排列。
4. 数据清洗(Data Cleaning):是数据分析过程中的一个重要步骤,用于检测和修复数据集中的错误、缺失或不准确的数据。
数据清洗可以提高数据质量,确保数据的准确性和一致性。
5. 数据探索(Data Exploration):也称为探索性数据分析(EDA),是数据分析的第一步。
数据探索旨在通过统计和可视化方法揭示数据集的内在特征、模式和关系,以了解数据的概况。
6. 描述统计(Descriptive Statistics):是通过总结和展示数据的集中趋势、离散程度、分布形状、相关性等统计量来描述数据集的统计学特征。
常见的描述统计量包括均值、中位数、标准差、最大值和最小值等。
7. 相关分析(Correlation Analysis):用于衡量两个或多个变量之间关系的统计分析方法。
相关系数是用来度量变量之间线性相关性的指标,其范围从-1到1,其中-1代表强负相关,1代表强正相关,0代表无相关性。
8. 数据可视化(Data Visualization):通过使用图表、图形和其他可视化工具来展示数据的过程。
数据可视化有助于有效地传达和解释数据,帮助读者更好地理解数据。
9. 数据挖掘(Data Mining):通过分析和发现数据中的模式、关联和趋势,从大量数据中提取有用的信息。
DataReport对象的几个常用属性。
一是DataSource,用于设置一个数据源,通过该数据源,数据使用者被绑定到一个数据库;二是DataMember,从DataSource提供的几个数据成员中设置一个特定的数据成员;三是LeftMargin、RightMargin、TopMargin、BottomMargin等,用于指定报表的左右上下的页边距;四是Sections,即DataReport的报表标头、页标头、细节、页脚注、报表脚注5个区域,如果加上分组(可以有多层分组),则增加一对区域,即分组标头、分组脚注。
其中DataSource一般是一个数据环境或是ADODB.Connection类型的变量,而DataMember则对应数据环境中的Command或是ADODB.RecordSet类型的变量,推荐使用数据环境及Command,页边界大家肯定都很清楚,下面我主要介绍以下Sections,这也是DataReport的精髓所在。
Sections是一个集合,您可以为每一个Section指定名称,也可以用其缺省的索引,从上到下依次为1、2…。
每个Section均有Height和Visible属性,您可以在一定条件下使一个Section不可见。
在Section中可以放置各种报表控件,其中RptLabel、RptImage、RptShape 和RptLine可以放在任意的Section中,用于输出各种文字、图形及表格线;RptTextBox只能放在细节中,一般用于绑定输出DataMemeber提供的数据字段;RptFunction只能被放置在分组注脚中,用于输出使用各种内置函数计算出的合计、最大值、最小值、平均值、记数等等。
上述报表控件中常用公共属性有用于控制位置及高度宽度的Top、Left、Height、Width 和控制可见性的Visible;其中RptTextBox还有DataField、DataMember、DataFormat及Font 属性;其他属性不再多说。
然后介绍一下我的使用经验。
一是对想控制的报表控件按类型有规律的命名;二是用RptShape的矩形框做表格线框,比用RptLine画框省事多了,只有斜线才使用RptLine;三是报表标题及报表中的表头文字、日期及页码用RptLabel,其中Caption属性支持转义字符,%D为长格式日期,%d为短格式日期,%P为总页数,%p为当前页码;四是对固定报表在设计窗口直接将报表控件摆放到位,对于活报表,应首先考虑报表最大的情形,将足够的控件分别放置在不同区域,位置大小可以不必深究,然后在报表输出前用VBA代码对所有控件的属性进行调整,包括位置、高度、宽度、字体、对齐方式、显示格式、可见性等等,相应的对Section也应根据情况调整其高度和可见性。
最后用一个实例模板来说明其使用方法。
连接数据库
With 数据环境.rsCommand名
If .State = adStateOpen Then .Close
.Source = SQL语句
.Open 打开想输出的数据库数据项以便输出
End With
With 报表名
.DataSource=数据环境
.DataMember=Command名这两行也可固定设好而不必每次设置
设置页表头部分(RpttLabel…为报表控件名)
.Sections(2).Controls("RptLabelPage").Caption = "共%P页第%p页"
.Sections(2).Controls("RptLabelDate").Caption = "打印日期:%D"
.Sections(3).C ontrols("RptLabel1").Left=…
…
设置细节部分(RptShapeX、RptTextBoxX为报表控件名)
.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
.Sections(3).Controls("RptTextBox1")=…
…
.Sections(3).Controls("RptShapeN").Visible=False
.Sections(3).Controls("RptTextBoxN").Visible=False
…
. Sections(3).Height=计算出的或固定的细节高度
动态调整报表标题(RptLabelTitle为报表标签控件名)
.Sections(2). Controls("RptLabelTitle").Left=…
…
.Sections(2). Controls("RptLabelTitle").Alignment=…
…
调整完毕后
.Show 或 .PrintReport
End With。