在VB6.0中实现动态统计报表
在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)对象:命令对象定义了从数据库连接中将取回什么数据的详细信息。
VB6中实现动态统计报表

在利用VB开发MIS系统的过程中,经常需要制作动态统计报表。
本文就如何实现动态数据源下的分组交叉统计报表进行阐述,并结合实例给出编程指导。
在VB6.0的数据环境设计器中,我们可以利用“添加命令”一项来连接报表所需的数据源,同时利用“添加命令”属性中的分组与合计功能设计分组交叉统计报表的数据源,至此我们可以设计简单的数据存在于单一表静态数据源下分组交叉报表,对于数据存在多表的复杂的动态数据源下的分组交叉报表来说,仍实现不了,实现该功能的关键在于构造一个符合动态数据源要求的中间表。
下面以一管理系统中工程成本统计报表的实例来说明如何实现动态数据源下的分组交叉统计报表。
一、报表要求与分析该报表要求列出在指定的时间段内实施的各项工程所耗器材明细、数量、费用,并且计算各项工程的成本,最终计算所有工程的累计成本。
需求分析后可知该报表是个典型的动态数据源下分组统计报表,分组项为工程名称,要求对每个分组进行子汇总和对所有分组进行总汇总。
由于在该系统中的出库单和出库单明细分别存放在不同的表中,因此必须根据报表的要求预先构造一个成本统计中间表,命名为EquipMentCost。
相关表结构如图1。
通过对表OutBill和OutBillDetail的分析,发现两者通过关键字OutBill 相联,下面通过SQL语句生成中间表EquipmentCost,语句如下:Insert into EquipmentCost(Project,Name,Standard,Type,Num,Cost)select a.project as 'Project', as 'Name',b.standard as 'Standard', b.type as 'Type',b.num aswhere a.OutDate>=date1 and a.OutDate<=date2date1 和date2 变量用来指定时间,注意插入前要先清空该中间表的所有数据。
通过VBA实现Excel数据报表的制作方法

通过VBA实现Excel数据报表的制作方法Excel是一个功能强大的电子表格应用程序,可以用来处理和分析数据。
在Excel中,使用VBA(Visual Basic for Applications)语言可以自动化执行各种任务和操作。
通过VBA,我们可以实现Excel数据报表的制作方法,提高工作效率和准确性。
本文将介绍通过VBA实现Excel数据报表的步骤和技巧。
首先,需要了解VBA编程语言的基本知识。
VBA是一种基于Microsoft Visual Basic的编程语言,可以用于编写Excel宏。
在Excel菜单栏上,选择“开发”选项卡,然后点击“Visual Basic”图标,即可进入VBA编辑器。
在VBA编辑器中,可以编写和编辑宏代码。
接下来,我们将探讨几种常用的VBA编程技巧,以实现Excel数据报表的制作方法。
第一种方法是使用VBA自动创建并格式化表格。
在VBA编辑器中,可以使用Range对象和Cells属性来指定单元格范围和位置。
例如,可以使用Cells(row, column)来指定特定单元格的位置,并使用Range("A1:G10")来指定一个单元格区域。
通过设置单元格的值、字体、颜色等属性,可以实现表格的自动创建和格式化。
第二种方法是使用VBA自动填充数据。
通过循环和条件语句,在VBA中可以自动获取数据源,并将数据填充到指定的单元格中。
例如,可以使用For循环来遍历数据源,并使用If语句来判断数据的条件,然后将符合条件的数据填充到相应的单元格中。
这样可以快速、准确地填充大量数据。
第三种方法是使用VBA自动计算和统计数据。
通过对数据进行加减乘除等运算,并使用函数来进行统计和分析,可以实现数据报表的自动计算。
例如,可以使用Sum函数来计算一列数据的总和,使用Average函数来计算平均值,使用Count函数来统计某个条件下的数据数量等。
通过编写相应的VBA代码,可以根据需要自动计算和统计各种数据指标。
用VB操作EXCEL(VB6.0)(整理)

用VB操作Excel(VB6.0)(整理)全面控制Excel:首先创建Excel对象,使用ComObj:Dim ExcelID as Excel.ApplicationSet ExcelID as new Excel.Application1)显示当前窗口:ExcelID.Visible:=True;2)更改Excel标题栏:ExcelID.Caption:='应用程序调用MicrosoftExcel';3)添加新工作簿:ExcelID.WorkBooks.Add;4)打开已存在的工作簿:ExcelID.WorkBooks.Open('C:\Excel\Demo.xls');5)设置第2个工作表为活动工作表:ExcelID.WorkSheets[2].Activate;或ExcelID.WorkSheets['Sheet2'].Activate;6)给单元格赋值:ExcelID.Cells[1,4].Value:='第一行第四列';7)设置指定列的宽度(单位:字符个数),以第一列为例:ExcelID.ActiveSheet.Columns[1].ColumnsWidth:=5;8)设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:ExcelID.ActiveSheet.Rows[2].RowHeight:=1/0.035;//1厘米9)在第8行之前插入分页符:ExcelID.WorkSheets[1].Rows[8].PageBreak:=1;10)在第8列之前删除分页符:ExcelID.ActiveSheet.Columns[4].PageBreak:=0;11)指定边框线宽度:ExcelID.ActiveSheet.Range['B3:D4'].Borders[2].Weight:=3;1-左2-右3-顶4-底5-斜(\)6-斜(/)12)清除第一行第四列单元格公式:ExcelID.ActiveSheet.Cells[1,4].ClearContents;13)设置第一行字体属性:ExcelID.ActiveSheet.Rows[1]:='隶书'; ExcelID.ActiveSheet.Rows[1].Font.Color:=clBlue; ExcelID.ActiveSheet.Rows[1].Font.Bold:=True;ExcelID.ActiveSheet.Rows[1].Font.UnderLine:=True;14)进行页面设置:a.页眉:ExcelID.ActiveSheet.PageSetup.CenterHeader:='报表演示'; b.页脚:ExcelID.ActiveSheet.PageSetup.CenterFooter:='第&P页';c.页眉到顶端边距2cm:ExcelID.ActiveSheet.PageSetup.HeaderMargin:=2/0.035; d.页脚到底端边距3cm:ExcelID.ActiveSheet.PageSetup.HeaderMargin:=3/0.035; e.顶边距2cm:ExcelID.ActiveSheet.PageSetup.TopMargin:=2/0.035;f.底边距2cm:ExcelID.ActiveSheet.PageSetup.BottomMargin:=2/0.035; g.左边距2cm:ExcelID.ActiveSheet.PageSetup.LeftMargin:=2/0.035;h.右边距2cm:ExcelID.ActiveSheet.PageSetup.RightMargin:=2/0.035;i.页面水平居中:ExcelID.ActiveSheet.PageSetup.CenterHorizontally:=2/0.035; j.页面垂直居中:ExcelID.ActiveSheet.PageSetup.CenterVertically:=2/0.035; k.打印单元格网线:ExcelID.ActiveSheet.PageSetup.PrintGridLines:=True;15)拷贝操作:a.拷贝整个工作表:ed.Range.Copy;b.拷贝指定区域:ExcelID.ActiveSheet.Range['A1:E2'].Copy;c.从A1位置开始粘贴:ExcelID.ActiveSheet.Range.['A1'].PasteSpecial;d.从文件尾部开始粘贴:ExcelID.ActiveSheet.Range.PasteSpecial;16)插入一行或一列:a.ExcelID.ActiveSheet.Rows[2].Insert;b.ExcelID.ActiveSheet.Columns[1].Insert;17)删除一行或一列:a.ExcelID.ActiveSheet.Rows[2].Delete;b.ExcelID.ActiveSheet.Columns[1].Delete;18)打印预览工作表:ExcelID.ActiveSheet.PrintPreview;19)打印输出工作表:ExcelID.ActiveSheet.PrintOut;20)工作表保存:IfnotExcelID.ActiveWorkBook.SavedthenExcelID.ActiveSheet.PrintPreviewEndif21)工作表另存为:ExcelID.SaveAs('C:\Excel\Demo1.xls');22)放弃存盘:ExcelID.ActiveWorkBook.Saved:=True;23)关闭工作簿:ExcelID.WorkBooks.Close;24)退出Excel:ExcelID.Quit;25)设置工作表密码:ExcelID.ActiveSheet.Protect"123",DrawingObjects:=True,Contents:=True,Scenarios:=True 26)EXCEL的显示方式为最大化ExcelID.Application.WindowState=xlMaximized27)工作薄显示方式为最大化ExcelID.ActiveWindow.WindowState=xlMaximized28)设置打开默认工作薄数量ExcelID.SheetsInNewWorkbook=329)'关闭时是否提示保存(true保存;false不保存)ExcelID.DisplayAlerts=False30)设置拆分窗口,及固定行位置ExcelID.ActiveWindow.SplitRow=1ExcelID.ActiveWindow.FreezePanes=True31)设置打印时固定打印内容ExcelID.ActiveSheet.PageSetup.PrintTitleRows="$1:$1"32)设置打印标题ExcelID.ActiveSheet.PageSetup.PrintTitleColumns=""33)设置显示方式(分页方式显示)ExcelID.ActiveWindow.View=xlPageBreakPreview34)设置显示比例ExcelID.ActiveWindow.Zoom=10035)让Excel响应DDE请求Ex.Application.IgnoreRemoteRequests=False用VB操作EXCEL示例代码Private Sub Command3_Click()On Error GoTo err1Dim i As LongDim j As LongDim objExl As Excel.Application'声明对象变量Me.MousePointer=11'改变鼠标样式Set objExl=New Excel.Application'初始化对象变量objExl.SheetsInNewWorkbook=1'将新建的工作薄数量设为1objExl.Workbooks.Add'增加一个工作薄objExl.Sheets(objExl.Sheets.Count).Name="book1"'修改工作薄名称objExl.Sheets.Add,objExl.Sheets("book1")‘增加第二个工作薄在第一个之后objExl.Sheets(objExl.Sheets.Count).Name="book2"objExl.Sheets.Add,objExl.Sheets("book2")‘增加第三个工作薄在第二个之后objExl.Sheets(objExl.Sheets.Count).Name="book3"objExl.Sheets("book1").Select'选中工作薄<book1>For i=1To50'循环写入数据For j=1To5If i=1ThenobjExl.Selection.NumberFormatLocal="@"'设置格式为文本objExl.Cells(i,j)="E"&i&jElseobjExl.Cells(i,j)=i&jEndIfNextNextobjExl.Rows("1:1").Select'选中第一行objExl.Selection.Font.Bold=True'设为粗体objExl.Selection.Font.Size=24'设置字体大小objExl.Cells.EntireColumn.AutoFit'自动调整列宽objExl.ActiveWindow.SplitRow=1'拆分第一行objExl.ActiveWindow.SplitColumn=0'拆分列objExl.ActiveWindow.FreezePanes=True'固定拆分objExl.ActiveSheet.PageSetup.PrintTitleRows="$1:$1"'设置打印固定行objExl.ActiveSheet.PageSetup.PrintTitleColumns=""'打印标题objExl.ActiveSheet.PageSetup.RightFooter="打印时间:"&_Format(Now,"yyyy年mm月dd日hh:MM:ss")objExl.ActiveWindow.View=xlPageBreakPreview'设置显示方式objExl.ActiveWindow.Zoom=100'设置显示大小'给工作表加密码objExl.ActiveSheet.Protect"123",DrawingObjects:=True,_ Contents:=True,Scenarios:=TrueobjExl.Application.IgnoreRemoteRequests=FalseobjExl.Visible=True'使EXCEL可见objExl.Application.WindowState=xlMaximized'EXCEL的显示方式为最大化objExl.ActiveWindow.WindowState=xlMaximized'工作薄显示方式为最大化objExl.SheetsInNewWorkbook=3'将默认新工作薄数量改回3个Set objExl=Nothing'清除对象Me.MousePointer=0'修改鼠标ExitSuberr1:objExl.SheetsInNewWorkbook=3objExl.DisplayAlerts=False'关闭时不提示保存objExl.Quit'关闭EXCELobjExl.DisplayAlerts=True'关闭时提示保存Set objExl=NothingMe.MousePointer=0End SubPrivate Sub Command3_Click()On Error GoTo err1Dim i As LongDim j As LongDim objExl As Excel.Application'声明对象变量Me.MousePointer=11'改变鼠标样式Set objExl=New Excel.Application'初始化对象变量objExl.SheetsInNewWorkbook=1'将新建的工作薄数量设为1objExl.Workbooks.Add'增加一个工作薄objExl.Sheets(objExl.Sheets.Count).Name="book1"'修改工作薄名称objExl.Sheets.Add,objExl.Sheets("book1")'增加第二个工作薄在第一个之后objExl.Sheets(objExl.Sheets.Count).Name="book2"objExl.Sheets.Add,objExl.Sheets("book2")'增加第三个工作薄在第二个之后objExl.Sheets(objExl.Sheets.Count).Name="book3"objExl.Sheets("book1").Select'选中工作薄<book1>For i=1To50'循环写入数据For j=1To5If i=1ThenobjExl.Selection.NumberFormatLocal="@"'设置格式为文本objExl.Cells(i,j)="E"&i&jElseobjExl.Cells(i,j)=i&jEnd IfNextNextobjExl.Rows("1:1").Select'选中第一行objExl.Selection.Font.Bold=True'设为粗体objExl.Selection.Font.Size=24'设置字体大小objExl.Cells.EntireColumn.AutoFit'自动调整列宽objExl.ActiveWindow.SplitRow=1'拆分第一行objExl.ActiveWindow.SplitColumn=0'拆分列objExl.ActiveWindow.FreezePanes=True'固定拆分objExl.ActiveSheet.PageSetup.PrintTitleRows="$1:$1"'设置打印固定行objExl.ActiveSheet.PageSetup.PrintTitleColumns=""'打印标题objExl.ActiveSheet.PageSetup.RightFooter="打印时间:"&_Format(Now,"yyyy年mm月dd日hh:MM:ss")objExl.ActiveWindow.View=xlPageBreakPreview'设置显示方式objExl.ActiveWindow.Zoom=100'设置显示大小'给工作表加密码objExl.ActiveSheet.Protect"123",DrawingObjects:=True,_Contents:=True,Scenarios:=TrueobjExl.Application.IgnoreRemoteRequests=FalseobjExl.Visible=True'使E XCEL可见objExl.Application.WindowState=xlMaximized'EXCEL的显示方式为最大化objExl.ActiveWindow.WindowState=xlMaximized'工作薄显示方式为最大化objExl.SheetsInNewWorkbook=3'将默认新工作薄数量改回3个Set objExl=Nothing'清除对象Me.MousePointer=0'修改鼠标Exit Suberr1:objExl.SheetsInNewWorkbook=3objExl.DisplayAlerts=False'关闭时不提示保存objExl.Quit'关闭EXCELobjExl.DisplayAlerts=True'关闭时提示保存Set objExl=NothingMe.MousePointer=0End Sub=====================================全面控制Excel首先创建Excel对象,使用ComObj:Dim ExcelID as Excel.ApplicationSet ExcelID as new Excel.Application1)显示当前窗口:ExcelID.Visible:=True;2)更改Excel标题栏:ExcelID.Caption:='应用程序调用Microsoft Excel';3)添加新工作簿:ExcelID.WorkBooks.Add;4)打开已存在的工作簿:ExcelID.WorkBooks.Open('C:\Excel\Demo.xls');5)设置第2个工作表为活动工作表:ExcelID.WorkSheets[2].Activate;或ExcelID.WorkSheets['Sheet2'].Activate;6)给单元格赋值:ExcelID.Cells[1,4].Value:='第一行第四列';7)设置指定列的宽度(单位:字符个数),以第一列为例:ExcelID.ActiveSheet.Columns[1].ColumnsWidth:=5;8)设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:ExcelID.ActiveSheet.Rows[2].RowHeight:=1/0.035;//1厘米9)在第8行之前插入分页符:ExcelID.WorkSheets[1].Rows[8].PageBreak:=1;10)在第8列之前删除分页符:ExcelID.ActiveSheet.Columns[4].PageBreak:=0;11)指定边框线宽度:ExcelID.ActiveSheet.Range['B3:D4'].Borders[2].Weight:=3;1-左2-右3-顶4-底5-斜(\)6-斜(/)12)清除第一行第四列单元格公式:ExcelID.ActiveSheet.Cells[1,4].ClearContents;13)设置第一行字体属性:ExcelID.ActiveSheet.Rows[1]:='隶书';ExcelID.ActiveSheet.Rows[1].Font.Color:=clBlue;ExcelID.ActiveSheet.Rows[1].Font.Bold:=True;ExcelID.ActiveSheet.Rows[1].Font.UnderLine:=True;14)进行页面设置:a.页眉:ExcelID.ActiveSheet.PageSetup.CenterHeader:='报表演示';b.页脚:ExcelID.ActiveSheet.PageSetup.CenterFooter:='第&P页';c.页眉到顶端边距2cm:ExcelID.ActiveSheet.PageSetup.HeaderMargin:=2/0.035;d.页脚到底端边距3cm:ExcelID.ActiveSheet.PageSetup.HeaderMargin:=3/0.035;e.顶边距2cm:ExcelID.ActiveSheet.PageSetup.TopMargin:=2/0.035;f.底边距2cm:ExcelID.ActiveSheet.PageSetup.BottomMargin:=2/0.035;g.左边距2cm:ExcelID.ActiveSheet.PageSetup.LeftMargin:=2/0.035;h.右边距2cm:ExcelID.ActiveSheet.PageSetup.RightMargin:=2/0.035;i.页面水平居中:ExcelID.ActiveSheet.PageSetup.CenterHorizontally:=2/0.035;j.页面垂直居中:ExcelID.ActiveSheet.PageSetup.CenterVertically:=2/0.035;k.打印单元格网线:ExcelID.ActiveSheet.PageSetup.PrintGridLines:=True;15)拷贝操作:a.拷贝整个工作表:ed.Range.Copy;b.拷贝指定区域:ExcelID.ActiveSheet.Range['A1:E2'].Copy;c.从A1位置开始粘贴:ExcelID.ActiveSheet.Range.['A1'].PasteSpecial;d.从文件尾部开始粘贴:ExcelID.ActiveSheet.Range.PasteSpecial;16)插入一行或一列:a.ExcelID.ActiveSheet.Rows[2].Insert;b.ExcelID.ActiveSheet.Columns[1].Insert;17)删除一行或一列:a.ExcelID.ActiveSheet.Rows[2].Delete;b.ExcelID.ActiveSheet.Columns[1].Delete;18)打印预览工作表:ExcelID.ActiveSheet.PrintPreview;19)打印输出工作表:ExcelID.ActiveSheet.PrintOut;20)工作表保存:If not ExcelID.ActiveWorkBook.Saved thenExcelID.ActiveSheet.PrintPreviewEnd if21)工作表另存为:ExcelID.SaveAs('C:\Excel\Demo1.xls');22)放弃存盘:ExcelID.ActiveWorkBook.Saved:=True;23)关闭工作簿:ExcelID.WorkBooks.Close;24)退出Excel:ExcelID.Quit;25)设置工作表密码:ExcelID.ActiveSheet.Protect"123",DrawingObjects:=True,Contents:=True,Scena rios:=True26)EXCEL的显示方式为最大化ExcelID.Application.WindowState=xlMaximized27)工作薄显示方式为最大化ExcelID.ActiveWindow.WindowState=xlMaximized28)设置打开默认工作薄数量ExcelID.SheetsInNewWorkbook=329)'关闭时是否提示保存(true保存;false不保存)ExcelID.DisplayAlerts=False30)设置拆分窗口,及固定行位置ExcelID.ActiveWindow.SplitRow=1ExcelID.ActiveWindow.FreezePanes=True31)设置打印时固定打印内容ExcelID.ActiveSheet.PageSetup.PrintTitleRows="$1:$1"32)设置打印标题ExcelID.ActiveSheet.PageSetup.PrintTitleColumns=""33)设置显示方式(分页方式显示)ExcelID.ActiveWindow.View=xlPageBreakPreview34)设置显示比例ExcelID.ActiveWindow.Zoom=10035)让Excel响应DDE请求Ex.Application.IgnoreRemoteRequests=FalseVB程序操作Excel数据的代码示例一、VB读写EXCEL表VB本身提自动化功能可以读写EXCEL表,其方法如下:①在工程中引用Microsoft Excel类型库从"工程"菜单中选择"引用"栏;选择Microsoft Excel9.0Object Library(EXCEL2000),然后选择"确定"。
Vb 6.0 中DATAREPORT 的使用

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操作Excel(VB6.0)(整理)

用VB操作Excel(VB6.0)(整理)用VB操作Excel(VB6.0)(整理)全面控制Excel:首先创建Excel对象,使用ComObj:Dim ExcelID as Excel.ApplicationSet ExcelID as new Excel.Application1)显示当前窗口:ExcelID.Visible:=True;2)更改Excel标题栏:ExcelID.Caption:='应用程序调用MicrosoftExcel';3)添加新工作簿:ExcelID.WorkBooks.Add;4)打开已存在的工作簿:ExcelID.WorkBooks.Open('C:\Excel\Demo.xls');5)设置第2个工作表为活动工作表:ExcelID.WorkSheets[2].Activate;或ExcelID.WorkSheets['Sheet2'].Activate;6)给单元格赋值:ExcelID.Cells[1,4].Value:='第一行第四列';7)设置指定列的宽度(单位:字符个数),以第一列为例:ExcelID.ActiveSheet.Columns[1].ColumnsWidth:=5;8)设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:ExcelID.ActiveSheet.Rows[2].RowHeight:=1/0.035;//1厘米9)在第8行之前插入分页符:ExcelID.WorkSheets[1].Rows[8].PageBreak:=1;10)在第8列之前删除分页符:ExcelID.ActiveSheet.Columns[4].PageBreak:=0;11)指定边框线宽度:ExcelID.ActiveSheet.Range['B3:D4'].Borders[2].Weight:=3;1-左 2-右 3-顶4-底 5-斜(\) 6-斜(/)12)清除第一行第四列单元格公式:ExcelID.ActiveSheet.Cells[1,4].ClearContents;13)设置第一行字体属性:ExcelID.ActiveSheet.Rows[1]:='隶书'; ExcelID.ActiveSheet.Rows[1].Font.Color :=clBlue; ExcelID.ActiveSheet.Rows[1].Font.Bold :=True;ExcelID.ActiveSheet.Rows[1].Font.UnderLine:=True;14)进行页面设置:a.页眉:ExcelID.ActiveSheet.PageSetup.CenterHeader:='报表演示'; b.页脚:ExcelID.ActiveSheet.PageSetup.CenterFooter:='第&P页'; c.页眉到顶端边距2cm:ExcelID.ActiveSheet.PageSetup.HeaderMargin:=2/0.035; d.页脚到底端边距3cm:ExcelID.ActiveSheet.PageSetup.HeaderMargin:=3/0.035; e.顶边距2cm:ExcelID.ActiveSheet.PageSetup.T opMargin:=2/0.035;f.底边距2cm:ExcelID.ActiveSheet.PageSetup.BottomMargin:=2/0.035; g.左边距2cm:ExcelID.ActiveSheet.PageSetup.LeftMargin:=2/0.035;h.右边距2cm:ExcelID.ActiveSheet.PageSetup.RightMargin:=2/0.035;i.页面水平居中:ExcelID.ActiveSheet.PageSetup.CenterHorizontally:=2/0.035; j.页面垂直居中:ExcelID.ActiveSheet.PageSetup.CenterVertically:=2/0.035; k.打印单元格网线:ExcelID.ActiveSheet.PageSetup.PrintGridLines:=True;15)拷贝操作:a.拷贝整个工作表:ed.Range.Copy;b.拷贝指定区域:ExcelID.ActiveSheet.Range['A1:E2'].Copy;c.从A1位置开始粘贴:ExcelID.ActiveSheet.Range.['A1'].PasteSpecial;d.从文件尾部开始粘贴:ExcelID.ActiveSheet.Range.PasteSpecial;16)插入一行或一列:a.ExcelID.ActiveSheet.Rows[2].Insert;b.ExcelID.ActiveSheet.Columns[1].Insert;17)删除一行或一列:a.ExcelID.ActiveSheet.Rows[2].Delete;b.ExcelID.ActiveSheet.Columns[1].Delete;18)打印预览工作表:ExcelID.ActiveSheet.PrintPreview;19)打印输出工作表:ExcelID.ActiveSheet.PrintOut;20)工作表保存:IfnotExcelID.ActiveWorkBook.SavedthenExcelID.ActiveSheet.PrintPreviewEndif21)工作表另存为:ExcelID.SaveAs('C:\Excel\Demo1.xls');22)放弃存盘:ExcelID.ActiveWorkBook.Saved:=True;23)关闭工作簿:ExcelID.WorkBooks.Close;24)退出Excel:ExcelID.Quit;25)设置工作表密码:ExcelID.ActiveSheet.Protect"123",DrawingObjects:=True,Con tents:=True,Scenarios:=True26)EXCEL的显示方式为最大化ExcelID.Application.WindowState=xlMaximized27)工作薄显示方式为最大化ExcelID.ActiveWindow.WindowState=xlMaximized28)设置打开默认工作薄数量ExcelID.SheetsInNewWorkbook=329)'关闭时是否提示保存(true保存;false不保存)ExcelID.DisplayAlerts=False30)设置拆分窗口,及固定行位置ExcelID.ActiveWindow.SplitRow=1ExcelID.ActiveWindow.FreezePanes=True31)设置打印时固定打印内容ExcelID.ActiveSheet.PageSetup.PrintTitleRows="$1:$1"32)设置打印标题ExcelID.ActiveSheet.PageSetup.PrintTitleColumns=""33)设置显示方式(分页方式显示)ExcelID.ActiveWindow.View=xlPageBreakPreview34)设置显示比例ExcelID.ActiveWindow.Zoom=10035)让Excel响应DDE请求Ex.Application.IgnoreRemoteRequests=False用VB操作EXCEL示例代码Private Sub Command3_Click()On Error GoTo err1Dim i As LongDim j As LongDim objExl As Excel.Application '声明对象变量Me.MousePointer=11 '改变鼠标样式Set objExl=New Excel.Application'初始化对象变量objExl.SheetsInNewWorkbook=1 '将新建的工作薄数量设为1 objExl.Workbooks.Add'增加一个工作薄objExl.Sheets(objExl.Sheets.Count).Name="book1" '修改工作薄名称objExl.Sheets.Add,objExl.Sheets("book1")‘增加第二个工作薄在第一个之后objExl.Sheets(objExl.Sheets.Count).Name="book2"objExl.Sheets.Add,objExl.Sheets("book2")‘增加第三个工作薄在第二个之后objExl.Sheets(objExl.Sheets.Count).Name="book3"objExl.Sheets("book1").Select '选中工作薄<book1>For i=1 To 50'循环写入数据For j=1 To 5If i=1 ThenobjExl.Selection.NumberFormatLocal="@" '设置格式为文本objExl.Cells(i,j)="E"&i&jElseobjExl.Cells(i,j)=i&jEndIfNextNextobjExl.Rows("1:1").Select '选中第一行objExl.Selection.Font.Bold=True '设为粗体objExl.Selection.Font.Size=24 '设置字体大小objExl.Cells.EntireColumn.AutoFit '自动调整列宽objExl.ActiveWindow.SplitRow=1 '拆分第一行objExl.ActiveWindow.SplitColumn=0 '拆分列objExl.ActiveWindow.FreezePanes=True '固定拆分objExl.ActiveSheet.PageSetup.PrintTitleRows="$1:$1" '设置打印固定行objExl.ActiveSheet.PageSetup.PrintTitleColumns=""'打印标题objExl.ActiveSheet.PageSetup.RightFooter="打印时间:"&_ Format(Now,"yyyy年mm月dd日hh:MM:ss")objExl.ActiveWindow.View=xlPageBreakPreview'设置显示方式objExl.ActiveWindow.Zoom=100 '设置显示大小'给工作表加密码objExl.ActiveSheet.Protect"123",DrawingObjects:=True, _Contents:=True,Scenarios:=TrueobjExl.Application.IgnoreRemoteRequests=FalseobjExl.Visible=True '使EXCEL可见objExl.Application.WindowState=xlMaximized'EXCEL的显示方式为最大化objExl.ActiveWindow.WindowState=xlMaximized'工作薄显示方式为最大化objExl.SheetsInNewWorkbook=3 '将默认新工作薄数量改回3个Set objExl=Nothing'清除对象Me.MousePointer=0 '修改鼠标ExitSuberr1:objExl.SheetsInNewWorkbook=3objExl.DisplayAlerts=False '关闭时不提示保存objExl.Quit'关闭EXCELobjExl.DisplayAlerts=True '关闭时提示保存Set objExl=NothingMe.MousePointer=0End Sub。
在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和VBA实现动态报表

把 查 询 模 块 得 到 的 查 询 结 果 打 印 出来 : 查 询 模 块 由另 外一个 合作 者完 成, 模块 完 成得很 好 , 户 可 以 自由 该 用
地 选 择 需 要 查 询 的 表 、 段 . 终 将 查 询 结 果 显 示 在 一 字 最 个 MS x r HeG i 件 中 : 由 于 查 询 的 灵 活 性 , 到 了 项 目 d控 受 组 成 员 以及 用 户 的一 致 好 评 。 可 是 , 给 笔 者 实 现 报 表 却 模 块 带 了很 大 的 困 难 : 困 难 之 处 就 在 于 查 询 结 果 的 动 态性 , 主要 表 现 在 : 1表 的 不 固 定 性 ; 2 字 段 本 身 的 可 () () 变性 ;3 字 段 个 数 的 可 变 性 。 因 此 , () VB中 自带 的 数 据
W n l ea a ̄
tet i o V A.A ls , eit h rt f B a t it w n m—
d e h w o gt 】c o fVBA n W od Ap H ∞ . uc o t e r ec deo i r p c Ke r s: VBA; Dv y wo d r Re o t D( m ̄ m l OLe d p r; r e S ' eCo e . - .
源 代 码 的 获 取 作 了一 十 简要 的 介 绍 。
关 键 词 :V A 动 态报 表 ; 文档 ; 泺代 码 B; 中 圈 法 分 类 号 :T 3 11 P 1.1 文 献标 识 码 :A 文 章 编 号 :10.6520 )6 100 0 139 (020 - 3-2 0
Re l e Dy a c Re o va VB a d VBA ai n mi p  ̄ i n z
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在VB6.0中实现动态统计报表
在利用VB开发MIS系统的过程中,经常需要制作动态统计报表。
本文就如何实现动态数据源下的分组交叉统计报表进行阐述,并结合实例给出编程指导。
在VB6.0的数据环境设计器中,我们可以利用“添加命令”一项来连接报表所需的数据源,同时利用“添加命令”属性中的分组与合计功能设计分组交叉统计报表的数据源,至此我们可以设计简单的数据存在于单一表静态数据源下分组交叉报表,对于数据存在多表的复杂的动态数据源下的分组交叉报表来说,仍实现不了,实现该功能的关键在于构造一个符合动态数据源要求的中间表。
下面以一管理系统中工程成本统计报表的实例来说明如何实现动态数据源下的分组交叉统计报表。
一、报表要求与分析
该报表要求列出在指定的时间段内实施的各项工程所耗器材明细、数量、费用,并且计算各项工程的成本,最终计算所有工程的累计成本。
需求分析后可知该报表是个典型的动态数据源下分组统计报表,分组项为工程名称,要求对每个分组进行子汇总和对所有分组进行总汇总。
由于在该系统中的出库单和出库单明细分别存放在不同的表中,因此必须根据报表的要求预先构造一个成本统计中间表,命名为EquipMentCost。
相关表结构如图1。
通过对表OutBill和OutBillDetail的分析,发现两者通过关键字OutBill 相联,下面通过SQL语句生成中间表EquipmentCost,语句如下:
Insert into EquipmentCost
(Project,Name,Standard,Type,Num,Cost)
select a.project as 'Project', as 'Name',b.standard as 'Standard', b.type as
'Type',b.num as 'Num', b.num b.price as 'Cost' from Outbill a left join OutbillDetail b on (a.outbill=b.outbill)
where a.OutDate>=date1 and a.OutDate<=date2
date1 和date2 变量用来指定时间,注意插入前要先清空该中间表的所有数据。
二、利用数据环境设计器生成工程成本报表的初始模板
打开一个数据环境设计器,在其属性表单中设置其名称属性为EnvCatv,并添加一个数据库连接到当前库Catv,连接名称为CatvConn。
在当前库连接下单击右键,选择“添加命令”选项,创建一个命令,命名为CmdCost,在该命令的属性页的“通用”选项页上设置SQL语句如下:
Select from EquipmentCost
单击“应用”按钮察看效果。
随后对该命令进行分组,右键单击该命令,选择“属性”选项,在属性页的“分组”选项页中,将Project(工程名称)字段设置为分组字段,分组名称为GroupCost,单击“应用”按钮观看效果。
接着对该命令进行子汇总,右键单击该命令,选择“属性”页的“汇总”选项页,将Num(器材数量)、Cost(器材成本)设置为子汇总字段,分别命名为“合计1”、“合计2”,汇总名称为
GrantTotal,该名称为总汇总所共用。
在程序中显示报表前,必须对该名称对应的记录集RsGrantTotal进行刷新,否则数据报表不能反映统计中间表的最新内容。
单击“应用”按钮观看效果。
最后对该命令进行总汇总,右键单击该命令,选择“属性”页的“汇总”选项页,将“合计1”、“合计2”设置为总汇总字段,分别命名为“总计1”、“总计2”,单击“应用”按钮观看效果。
按照上面的步骤,我们在当前连接CatvConn下建立了一个包含汇总的分组命令,接着建立一个数据报表设计器命名为RptCost,将该分组子命令拖到数据报表的“细节”段内,释放后,调节各个字段的大小和位置,其中,子汇总字段和总汇总字段还应该分别另建分组节,总汇总字段所处的节应位于最上层。
三、在程序中填充统计中间表,更新数据报表并显示
设计一个打印模块如下:
Public Sub Print_EquipMentCost(Byval Date1 as Date, Byval Date2 as Date)
'清空虚拟表
Dim SSQL as string
Dim Cmd As New mand
SSql = "Delete From EquipmentCost"
Cmd.ActiveConnection = gConn
'数据库连接变量,读者可以建立自己的数据库连接变量
mandType = adCmdText
mandText = SSql
Cmd.Execute
'将统计明细添加到虚拟表中
ssql="Insert into EquipmentCost"&&" (Project,Name,Standard,Type,Num,Cost)"&&" select a.project as 'Project', as 'Name',"&&"b.standard as 'Standard', b.type as
'Type',"&&"b.num as 'Num',b.num*b.price as 'Cost'"&&"from Outbill a left join OutbillDetail b on(a.outbill=b.outbill)"&&" where a.OutDate>=" && Date1 && " and a.OutDate<=" && Date2
Cmd.ActiveConnection = gConn
mandType = adCmdText
mandText = SSql
Cmd.Execute
'刷新数据报表,使其显示最新查询记录
Set RptCost.DataSource = EnvCatv
'数据环境名称
EnvCatv.rsGrandTotal.Requery'rsGrantTotal 为分组子命令记录集名称'显示数据报表
RptCost.Show
End Sub
本程序在VB6.0、MS-SQL Server下运行成功。