iFix中采用ODBC制作报表
- 格式:doc
- 大小:274.50 KB
- 文档页数:6
龚伟平(1976-)男,湖南双峰人,中南大学信息科学与工程学院在读工程硕士研究生,(湖南娄底华菱涟钢集团信息自动化中心,湖南娄底417009)主要研究方向为先进控制技术及工程应用、过程工业控制、智能控制与智能自动化。
摘要:本论文详细介绍了基于ODBC技术实现iFix 组态软件与关系数据库通讯的原理和方法,增强了报表功能;某工程应用实例表明该方法行之有效。
关键词:关键字ODBC;iFix;三级机;SQL2000Abstract: This paper describes in detail the communication principle and method of iFix configuration software and relational database based on ODBC technology, and the function of report is also added to this system. The practical engineering application shows the effectiveness of the method.Key words: ODBC;iFix;Level3;SQL20001 引言iFix是Intellution Dynamics(全世界上第一套基于组件技术的自动化监控软件家族)最为重要的上位监控软件产品之一,该软件产品无疑为全球自动化生产制造业提供了易于使用,高性能的自动化监控解决方案,平台功能强大,集控制技术、人机界面技术、数据库技术、网络技术于一身,可实现数据采集、实时过程监控、报警和报警管理、报表查询打印、趋势分析等功能,并且可与信息自动化管理系统进行无缝连接。
借助ODBC技术,将iFix采集的现场数据通过以太网传送到L3系统的关系数据库中,实现共享信息资源的全方位、全过程信息系统。
2 总体思路开放式数据库互连(ODBC)是Microsoft的标准API,用来访问、显示和修改多种关系数据库数据;结构化查询语言(SQL)是关系数据库使用的标准语言,用来检索、更新和管理数据,不提供公共应用程序接口(API)。
IFIX连接SQL读写数据和制作excel报表图文教程IFIX连接SQL数据库、制作excel报表详细教程一、 IFIX连接SQL数据库读写数据IFIX连接SQL数据库有多种方法,其中最为方便的两种方法是:(1)使用IFIX本身为SQL数据库提供的接口SQT和SQD;(2)VB+ADO。
下面分别介绍着两种方法的实现步骤。
1、使用SQT和SQD读写SQL数据库1.1 安装SQL2008(只列出关键步骤,其余直接点击“下一步”或“安装”) 打开SQL安装中心,点击“安装”;SQL2008简体中文版安装包下载链接:点击“全新SQL Server独立安装或向现有安装添加功能”;点击“输入产品密匙”,点击“下一步”:(根据版本选择)sql server2008密钥Developer: PTTFM-X467G-P7RH2-3Q6CG-4DMYBEnterprise: JD8Y6-HQG69-P9H84-XDTPG-34MBBMicrosoft SQL Server 2008 R2序列号密钥开发版32位:MC46H-JQR3C-2JRHY-XYRKY-QWPVM开发版64位:FTMGC-B2J97-PJ4QG-V84YB-MTXX8工组版:XQ4CB-VK9P3-4WYYH-4HQX3-K2R6QWEB版:FP4P7-YKG22-WGRVK-MKGMX-V9MTM数据中心版32位:PTTFM-X467G-P7RH2-3Q6CG-4DMYB数据中心版64位:DDT3B-8W62X-P9JD6-8MX7M-HWK38企业版32位:R88PF-GMCFT-KM2KR-4R7GB-43K4B企业版64位:GYF3T-H2V88-GRPPH-HWRJP-QRTYB标准版32位:CXTFT-74V4Y-9D48T-2DMFW-TX7CY标准版64位:B68Q6-KK2R7-89WGB-6Q9KR-QHFDW功能选择界面,选择安装全部功能,点击“下一步”;进入实例配置界面,选择默认实例,点击“下一步”;进入服务器配置界面,启动类型均选为“自动”;点击“对所有SQL Server服务使用相同的账户”,在弹出的界面中选择第一个账户,密码不用填;返回服务器配置界面点击下一步;进入数据库引擎配置界面,选择混合模式,输入自己设定的密码,点击“添加当前用户”,点击下一步,直至安装完成,关闭安装中心。
IFIX报表⼀、新建access⽇报数据库ReportData(预装office2007以上版本)表名:ReportData右键设计视图:右键打开:⽉报数据库ReportMonth右键设计视图:右键打开:年报数据库ReportYear 右键设计视图:右键打开:删除⽇期主键,索引选择“⽆”;时间:长整型;其他累计:长整型。
⼆、配置ODBC64位操作系统打开ODBC⽅法:C:/Windows/SysWOW64/odbcad32.exe完成后确定即可,⽉报,年报同上。
32位系统:开始》控制⾯板》管理⼯具》ODBC。
同上设置三、IFIX新建时间调度时间间隔设置12⼩时,开始时间是6点54分。
⼀天分为⽩班(7点到19点)夜班(19点到7点),分班累计重置时间为6点54分和18点54分。
Private Sub sjdiaodu_OnTimeOut(ByVal lTimerId As Long)Dim cn As ADODB.Connection '定义⼀个ADO⽅式的数据库连接Dim res As ADODB.Recordset '定义⼀个ADO⽅式的数据库记录集Dim StrSQL As StringSet cn = New ADODB.Connection '定义cn为新的ADO数据连接Set res = New ADODB.Recordset '定义res为新的ADO数据库记录集'On Error Resume Nextcn.ConnectionString = "DSN=ReportData;UID=;PWD=;" '定义cn的连接数据源为ReportData 即ODBC中建⽴的ACCESS的数据源名cn.OpenStrSQL = "select * from ReportData Where ⽇期=#" & Date & "#" '使⽤SQl语"句查找ReportData表中⽇期为Data的数据res.Open StrSQL, cn, adOpenKeyset, adLockOptimisticres.ADDNew '添加⼀个新的记录If Hour(Time) = 6 Thenres.Fields(1) = 2 '在1列加⼊⽩班计数res.Fields(0) = Date -1'在0列加⼊⽇期,早上6点54分记得数算成前⼀天⽇累计ElseIf Hour(Time) = 18 Thenres.Fields(1) = 1 '在1列加⼊夜班计数res.Fields(0) = Date '在0列加⼊⽇期ElseEnd IfEnd Ifres.Fields(2) = Fix32.Fix.R0126.F_CV '在2列加⼊标签1res.Fields(3) = Fix32.Fix.R0127.F_CV '在3列加⼊标签2res.Fields(4) = Fix32.Fix.R0128.F_CV '在4列加⼊标签3res.Fields(5) = Fix32.Fix.R0129.F_CV '在5列加⼊标签4res.Fields(6) = Fix32.Fix.R0130.F_CV '在6列加⼊标签5res.Update '保持记录res.Close '关闭记录集cn.CloseSet res = NothingSet cn = NothingEnd Sub⽉调度Private Sub sjmonth_OnTimeOut(ByVal lTimerId As Long)Dim Mcn As ADODB.Connection '定义⼀个ADO⽅式的数据库连接Dim Mres As ADODB.Recordset '定义⼀个ADO⽅式的数据库记录集Dim MStrSQL As StringSet Mcn = New ADODB.Connection '定义cn为新的ADO数据连接Set Mres = New ADODB.Recordset '定义res为新的ADO数据库记录集'On Error Resume NextMcn.ConnectionString = "DSN=ReportMonth;UID=;PWD=;" '定义cn的连接数据源为ReportData 即ODBC中建⽴的ACCESS 的数据源名Mcn.OpenMStrSQL = "select * from ReportMonth Where ⽇期=#" & Date & "#" '使⽤SQl语"句查找ReportData表中⽇期为Data的数据Mres.Open MStrSQL, Mcn, adOpenKeyset, adLockOptimisticMres.ADDNew '添加⼀个新的记录Mres.Fields(0) = DateAdd("y", -1, Date) '在0列加⼊⽇期-1Mres.Fields(1) = Day(Date) - 1 '在1列加⼊天数-1Mres.Fields(2) = Fix32.Fix.R0141.F_CV '在2列加⼊标签1Mres.Fields(3) = Fix32.Fix.R0142.F_CV '在3列加⼊标签2Mres.Fields(4) = Fix32.Fix.R0143.F_CV '在4列加⼊标签3Mres.Fields(5) = Fix32.Fix.R0144.F_CV '在5列加⼊标签4Mres.Fields(6) = Fix32.Fix.R0145.F_CV '在6列加⼊标签5Mres.Fields(7) = DatePart("m", Date) '在7列加⼊标签6Mres.Fields(8) = DatePart("yyyy", Date) '在8列加⼊标签7Mres.Update '保持记录Mres.Close '关闭记录集Mcn.CloseSet Mres = NothingSet Mcn = NothingEnd Sub年调度(⽤于⽉数据记录,年数据不做显⽰)Private Sub Year_OnTimeOut(ByVal lTimerId As Long)Dim Ycn As ADODB.Connection '定义⼀个ADO⽅式的数据库连接Dim Yres As ADODB.Recordset '定义⼀个ADO⽅式的数据库记录集Dim YStrSQL As StringSet Ycn = New ADODB.Connection '定义cn为新的ADO数据连接Set Yres = New ADODB.Recordset '定义res为新的ADO数据库记录集'On Error Resume NextYcn.ConnectionString = "DSN=ReportYear;UID=;PWD=;" '定义cn的连接数据源为ReportData 即ODBC中建⽴的ACCESS的数据源名Ycn.OpenYStrSQL = "select * from ReportYear Where ⽇期=#" & Date & "#" '使⽤SQl语"句查找ReportData表中⽇期为Data的数据Yres.Open YStrSQL, Ycn, adOpenKeyset, adLockOptimisticYres.ADDNew '添加⼀个新的记录Yres.Fields(0) = DateAdd("y", -1, Date) '在0列加⼊⽇期-1Yres.Fields(1) = DatePart("m", Date) - 1 '在1列加⼊⽉份-1Yres.Fields(2) = Fix32.Fix.R0135.F_CV '在2列加⼊标签1Yres.Fields(3) = Fix32.Fix.R0136.F_CV '在3列加⼊标签2Yres.Fields(4) = Fix32.Fix.R0137.F_CV '在4列加⼊标签3Yres.Fields(5) = Fix32.Fix.R0138.F_CV '在5列加⼊标签4Yres.Fields(6) = Fix32.Fix.R0139.F_CV '在6列加⼊标签5Yres.Fields(7) = DatePart("yyyy", Date) '在7列加⼊标签6,有bug,懒得改了。
iFix中如何实现EXCEL报表.txt心脏是一座有两间卧室的房子,一间住着痛苦,一间住着快乐。
人不能笑得太响,否则会吵醒隔壁的痛苦。
iFix中如何实现EXCEL报表在VBA中引用Microsoft Excel 11.0 Object Library和Microsoft ADO 6.0 Library。
在画面中添加个按钮。
复制以下代码:‘----------开始复制(不包括此行)--------------Option ExplicitDim rsADO As ADODB.RecordsetDim cnADO As ADODB.ConnectionPrivate Sub Command1_Click()Dim StrDir As StringStrDir = "E:\"Dim i As LongDim Sql As StringSql = "SELECT * FROM THISNODE"Set cnADO = New ADODB.ConnectionSet rsADO = New ADODB.RecordsetcnADO.CcnADO.OpenrsADO.CursorLocation = adUseClientrsADO.Open Sql, cnADO, adOpenDynamic, adLockUnspecified, -1If rsADO.RecordCount <= 0 ThenMsgBox "无数据!", vbOKOnly + vbInformation, "信息..."Set cnADO = NothingSet rsADO = NothingExit SubEnd IfDim xlApp As ObjectDim xlBook As ObjectDim xlSheet As ObjectSet xlApp = New Excel.ApplicationxlApp.DisplayAlerts = FalsexlApp.Visible = FalseSet xlBook = xlApp.Workbooks.Open(StrDir & "\报表.xls")'需要文件(E:\报表.xls) Set xlSheet = xlBook.Worksheets(1)For i = 1 To rsADO.RecordCountxlSheet.Cells(i, 1) = rsADO.Fields(1).Value & ""xlSheet.Cells(i, 2) = rsADO.Fields(2).Value & ""xlSheet.Cells(i, 3) = rsADO.Fields(3).Value & ""xlSheet.Cells(i, 4) = rsADO.Fields(4).Value & ""Next ixlApp.Visible = TruexlApp.DisplayAlerts = FalseSet xlSheet = NothingSet xlBook = NothingSet xlApp = NothingSet cnADO = NothingSet rsADO = NothingEnd Sub‘----------结束复制(不包括次行)--------------注意:1.iFix历史数据库只支持读90天的数据,在SQL语句中限定时间即可。
基于ODBC技术实现iFix组态软件与关系数据库通讯接口龚伟平
【期刊名称】《自动化博览》
【年(卷),期】2008(025)003
【摘要】本论文详细介绍了基于ODBC技术实现iFix组态软件与关系数据库通讯的原理和方法,增强了报表功能;某工程应用实例表明该方法行之有效.
【总页数】3页(P98-100)
【作者】龚伟平
【作者单位】湖南娄底华菱涟钢集团信息自动化中心,湖南,娄底,417009
【正文语种】中文
【中图分类】TP311
【相关文献】
1.基于ODBC的iFIX工控组态软件与关系数据库通讯探讨 [J], 高飞
2.基于ODBC技术实现iFIX组态软件与关系数据库Access的通信 [J], 耿乙文;伍小杰
3.基于ODBC的iFIX工控组态软件与关系数据库通讯探讨 [J], 胡静;方彦军
4.基于ODBC的iFIX工控组态软件与关系数据库Oracle通讯研究 [J], 李世红
5.基于ODBC技术实现iFix组态软件与关系数据库通讯接口 [J], 龚伟平
因版权原因,仅展示原文概要,查看原文内容请购买。
有关iFIX软件报表生成的说明 iFIX软件可以通过内置的VBA借助EXCEL,ACCESS,Crystal Roport等软件生成报表。
本文通过 VBA+ADO+EXCEL 做一个具体的介绍。
1.V BA(Visual Basic for Application)VBA是iFIX完全内置的一个强有力的编程工具,可以使用户快速方便的生成自动的操作任务和过程自动化的解决方案。
IFIX的VBA工具包括以下特性:可操作所有列出的iFIX对象的属性,方法和事件支持多种数据源,包括iFIX过程数据库,任何OPC服务器,任何对象的属性和SQL数据库ODBC支持ActiveX控件支持VBA脚本生成向导及IFIX命令可以帮助你为常用任务自动生成程序代码第三方控件的安全容器下面的程序代码就是在iFIX中建立一个新的EXCEL应用程序并打开报表模版。
Dim msexcel As Excel.ApplicationSet msexcel = CreateObject("Excel.Application")With msexcel.Visible = True.Workbooks.Open "e:\histdemo\FixReports.xls", ,False.ActiveWorkbook.ActiveSheet.Select.DisplayAlerts = False.Wait (Now() + 0.00002)End With2.A DO (ActiveX Data Object)ADO 是微软推出的最新的数据库访问方式。
它综合了微软早期推出的DAO及RDO的特性并取代了DAO及RDO。
ADO可以访问更多类型的数据库,并且可以通过ODBC(Open DataBase Connectivity)访问数据,但它的结构是建立在OLE DB Providers上。
IFIX软件安装完毕以后,在控制面板的ODBC数据源中会增加两个系统DSN:FIX Dynamics Historical Data iFIX历史数据源FIX Dynamics Real Time Data iFIX实时数据源ADO可以通过访问这两个数据源来直接操作iFIX历史数据库和实时数据库。
2019.08摘There are many ways to realize the iFIX report This paper takes the combination of Excel and iFIX local da tabase as an example to illustrate the realization of the method It extracts data from iFIX through VBA script presents the da ta orderly in Excel table and achieves the purpose of report function Key words iFIX 方法namics Historical Data FIX Dynamics Real Time Da ”。
Real Time 方法通过脚本将数据存储到外部数据库),tion iFIX Inte gration Toolkit (。
(。
(。
(。
(。
(。
(Private Sub CommandButton1_Click ()Dim path As String *64Const tagnum =16path ="D:\XXXX\HTRDATA"TagNum1=tagnum \8TagNum2=tagnum Mod 8NTFTAG (0)="THISNODE"+":"+"TAG1"+"."+"F_CV"NTFTAG (1)="THISNODE"+":"+"TAG2"+"."+"F_CV"…NTFTAG (n-1)="THISNODE"+":"+"TAGn"+"."+"F_CV"sdate =Trim (InputBox ("输入报表时间:YYYY-MM-DD","选择时间",Date ))If sdate>""Then If IsDate (sdate )ThenSheet1.Range (Cells (4,1),Cells (2000,tag⁃num +1))=""Sheet1.Range (Cells (4,1),Cells (2000,tag⁃num +1)).Borders.LineStyle =xlNone Sheet1.Cells (1,1)=Format (sdate,"yyyy 年mm 月dd 日运行记录")For num =0To TagNum1If num =TagNum1Then kkkk =TagNum2-1Else kkkk =7End IfFor k =0To kkkk ntf =NTFTAG (num *8+k )Next kFor k =0To kkkk ReDim values (NumSamples )ReDim times (NumSamples )ReDim Stats (NumSamples )ReDim alarms (NumSamples )For i =0To NumSamples -1Sheet1.Cells (i +4,1)=SecondsToTime$(times (i ))If Stats (i )=0ThenSheet1.Cells (i +4,num *8+k +2)=values (i )ElseSheet1.Cells (i +4,num *8+k +2)=""End If Next i Next k Next num ·Sheet1.Range (Cells (4,1),Cells (3+NumSam⁃ples,tagnum +1)).Borders.LineStyle =1ElseMsgBox "错误的日期!"End If End If End Sub(下转第290页)2882019.08们表达自己的看法和感受到他人的想法;(;(3多中心理论应用到公共环境治理中在强调不同社会群体的多中心参与的同时如果说公地悲剧的产生是源于公共池塘资源的不可排他库iFIX 参考文献Proficy HMI/SCADA -iFIX GE Intelligent Plat [3]《iFIX 数据库参考书》,GE Intelligent Platforms ,Inc ,2013.(上接第288页)290。
iFIX介绍iFIX®是Intellution自动化软件产品家族中的一个基于Windows的HMI/SCADA组件。
iFIX是基于开放的和组件技术的产品,专为在工厂级和商业系统之间提供易于集成和协同工作设计环境。
它的功能结构特点可以减少开发自动化项目的时间,缩短系统升级和维护的时间,与第三方应用程序无缝集成,增强生产力。
iFIX的SCADA部分提供了监视管理、报警和控制功能。
它能够实现数据的绝对集成和实现真正的分布式网络结构。
iFIX的HMI部分是监视控制生产过程的窗口。
它提供了开发操作员熟悉的画面所需要的所有工具。
iFIX组件iFIX 的内部是一个能够提供分布式结构的技术核心。
iFIX是在标准技术的基础上开发的,像ActiveX, OPC, VBA, 和组件对象模型(COM)一样,在广泛的局域网和互联网基础上提供第三方应用程序的简单集成。
iFIX提供LAN冗余来增强系统可靠性。
iFIX为许许多多的Intellution和第三方应用组件提供了应用平台,如下图所示:图 1-1: Intellution iFIX 平台iFIX的其中一个重要组件是iFIX WorkSpace。
这个界面将所有系统组件都组织到一个集成开发环境中(IDE)。
Intellution iFIX WorkSpace 可以存取和操作系统中的所有组件。
图 1-2: Intellution iFIX WorkSpaceIntellution iFIX WorkSpace中包含两个全集成的环境,即配置环境和运行环境。
配置环境中提供了创建漂亮整洁且易于使用和学习的显示画面所必需的所有的图形、文本、数据、动画和图表工具。
运行环境提供了观看这些画面所必需的方法。
配置环境和运行环境之间可随意切换,能够迅速地测试实时报警和数据采集的变化情况。
需要说明的是,切换到配置环境时,生产过程是没有被打断的。
监视和控制系统的所有程序,如报警、报表和调度等等,都会在后台不间断运行。
将数据记录通过ODBC保存到SQL SERVER1. 在SQL SERVER中创建数据库及表在SQL SERVER中创建数据库,用来保存SQL的命令语句、错误信息及需要保存在数据库内的历史数据。
例如,创建数据库DB1:在Security内增加可以访问该数据库的用户,并将该用户登录进数据库DB1.在数据库内创建两个表sqllib和sqlerr:sqllib表的结构如下:在表内插入命令语句,例如:sqlerr表的结构如下:在数据库内创建相应用来保存数据的表,例如,希望将两个类型为浮点的数据块的值保存在表data 内,创建相应的表,如data:2. 创建ODBC 数据源通过控制面板增加数据源db1, 指定该数据源所连接的SQL Server,使用SQL方式验证,输入有效的登录名称和口令,测试ODBC数据源连接成功!3. 在SCU内配置SQL在SCU内通过菜单或按钮进入SQL帐户配置界面,点击增加按钮,填入相应信息,按确定。
点击配置SQL任务…. 按钮,启动SQL, 并填入相应的信息,4. 创建SQT和SQD数据块打开数据库管理器,创建布尔量数据块DI_1, 用来触发SQT:进入高级, 选中允许输出和手动选择框,如下图所示:创建数据块AR_1和AR_2, 将这两个块的数据保存到数据库表data 中:创建数据块SQT:注:上图中数据库ID 为所创建的ODBC 名称,在该例中,数据库名称和ODBC 名称相同。
创建SQD_1:保存数据库管理器。
5. 验证SQL 服务启动打开任务控制, 点击SQL, 验证SQL服务是否启动, 如下图所示:(运行mission.exe:)6. 触发SQT在数据库管理器内更改DI_1的当前值,如将CLOSE 改为OPEN,按 Ctrl + R, 观察到SQT_1的当前值增加1,意味着SQT被触发一次:在SQL SERVER企业服务器内打开表data, 发现有新的数据记录插入到该表中:。
在iFix中采用ODBC制作历史报表具体步骤如下:Step 1: 打开SCU中的Task Configuration,增加HTC.EXE和WSQLODC.EXE两个任务,并将它们设置成为后台运行状态;Step 2: 启动iFix,点击工具栏上的按钮打开Historical Assign,添加所需监控的数据点,并设置历史数据的采样速度。
Step 3: 打开任务控制,查看是否已经启动HTC。
Step 4: 在Globals\User下面添加三个字符型(vtString)变量,分别命名为strStartTime, strEndTime 和Interval。
新建一幅画面,如图如示,在画面上布置3个DATALINK分别指向strStartTime, strEndTime 和Interval,并设置成In place(即允许修改)。
strStartTimestrEndTimeIntervalStep 5:为画面上的各个按钮写代码,最好先将各按钮注册——即将鼠标移到按钮上方,按右键弹出菜单,选择Edit Script。
在VB Editor的工具菜单中的Reference(引用)中选中Microsoft Excel 9.0 Object Library和Microsoft ActiveX Data Objects,如下图所示。
然后在各按钮的处理程序中添加相应代码。
内容如下(可将下列代码直接COPY到你的VB编辑器中,覆盖因为注册产生的空代码):‘运行状态画面初始化Private Sub CFixPicture_Initialize()CommandButton1_ClickCommandButton2_Clickuser.Interval.CurrentValue = "00:00:30"End Sub‘组态状态画面初始化Private Sub CFixPicture_InitializeConfigure()user.strEndTime.CurrentV alue = "报表结束时间"user.strStartTime.CurrentValue = "报表开始时间"End Sub'设当前时间为报表开始时间Private Sub CommandButton1_Click()Dim curTime As StringcurTime = NowDim curmonth, curday, curhour, curminute, cursecond As Stringcurmonth = IIf(Month(curTime) < 10, "0" & Month(curTime), Month(curTime)) curday = IIf(Day(curTime) < 10, "0" & Day(curTime), Day(curTime))curhour = IIf(Hour(curTime) < 10, "0" & Hour(curTime), Hour(curTime))curminute = IIf(Minute(curTime) < 10, "0" & Minute(curTime), Minute(curTime)) cursecond = IIf(Second(curTime) < 10, "0" & Second(curTime), Second(curTime)) user.strStartTime.CurrentValue = Year(curTime) & "-" & curmonth & "-" & curday _& " " & curhour & ":" & curminute & ":" & cursecond End Sub'设当前时间为报表结束时间Private Sub CommandButton2_Click()Dim curTime As StringcurTime = NowDim curmonth, curday, curhour, curminute, cursecond As Stringcurmonth = IIf(Month(curTime) < 10, "0" & Month(curTime), Month(curTime))curday = IIf(Day(curTime) < 10, "0" & Day(curTime), Day(curTime))curhour = IIf(Hour(curTime) < 10, "0" & Hour(curTime), Hour(curTime))curminute = IIf(Minute(curTime) < 10, "0" & Minute(curTime), Minute(curTime)) cursecond = IIf(Second(curTime) < 10, "0" & Second(curTime), Second(curTime)) user.strEndTime.CurrentV alue = Year(curTime) & "-" & curmonth & "-" & curday & " " _& curhour & ":" & curminute & ":" & cursecondEnd Sub'打印此前10分钟历史报表,只是设置时间值,打印仍要调用打印程序Private Sub CommandButton3_Click()Dim curTime As StringcurTime = NowDim curmonth, curday, curhour, curminute, cursecond As Stringcurmonth = IIf(Month(curTime) < 10, "0" & Month(curTime), Month(curTime))curday = IIf(Day(curTime) < 10, "0" & Day(curTime), Day(curTime))curhour = IIf(Hour(curTime) < 10, "0" & Hour(curTime), Hour(curTime))curminute = IIf(Minute(DateAdd("n", -10, curTime)) < 10, "0" & _Minute(DateAdd("n", -10, curTime)), Minute(DateAdd("n", -10, curTime))) cursecond = IIf(Second(curTime) < 10, "0" & Second(curTime), Second(curTime)) user.strStartTime.CurrentValue = Year(curTime) & "-" & curmonth & "-" & curday & _" " & curhour & ":" & curminute & ":" & cursecond curminute = IIf(Minute(curTime) < 10, "0" & Minute(curTime), Minute(curTime)) user.strEndTime.CurrentV alue = Year(curTime) & "-" & curmonth & "-" & curday & _" " & curhour & ":" & curminute & ":" & cursecond End Sub'打印当天报表,只是设置时间值,打印仍要调用打印程序Private Sub CommandButton4_Click()Dim curTime As StringcurTime = NowDim curmonth, curday, curhour, curminute, cursecond As Stringcurmonth = IIf(Month(curTime) < 10, "0" & Month(curTime), Month(curTime))curday = IIf(Day(curTime) < 10, "0" & Day(curTime), Day(curTime))user.strStartTime.CurrentValue = Year(curTime) & "-" & curmonth & "-" & curday _& " " & "00:00:00"user.strEndTime.CurrentV alue = Year(curTime) & "-" & curmonth & "-" & curday _& " " & "23:59:59"End Sub'打印当月报表,只是设置时间值,打印仍要调用打印程序Private Sub CommandButton5_Click()Dim curTime As StringcurTime = NowDim curmonth, BeginofMonth, EndofMonth As Stringcurmonth = IIf(Month(curTime) < 10, "0" & Month(curTime), Month(curTime)) BeginofMonth = Year(curTime) & "-" & curmonth & "-01" & " " & "00:00:00"user.strStartTime.CurrentValue = BeginofMonthEndofMonth = Day(DateAdd("s", -1, DateAdd("m", 1, CDate(BeginofMonth))))user.strEndTime.CurrentV alue = Year(curTime) & "-" & curmonth & "-" _& EndofMonth & " " & "23:59:59"End Sub‘根据输入条件,保存/打印报表到文件Private Sub CommandButton6_Click()'运行EXCEL,打开报表模板文件Dim msexcel As Excel.ApplicationSet msexcel = CreateObject("Excel.Application")With msexcel.Visible = True ‘如为FALSE,则不显示EXCEL。