WinCC7.5 将归档数据打印到MSFlexGrid控件

news2024/10/9 8:16:41

第一种方法:
WinCC7.5 将归档数据打印到MSHGrid控件
https://blog.csdn.net/weixin_37928884/article/details/134170305

第二种方法:
MSFlexGrid控件
查询按钮

Sub OnClick(ByVal Item)                                                                                                     
                                                                              
Dim myCatalog,myDS,PCName,cnstr,sqlstr1,sqlstr2
Dim grid,BTime,ETime,utcbtime,utcetime,utcbtstr,utcetstr
Dim conobj,rsobj1,comobj1
Dim rsobj2,comobj2
Dim rscount,i,curRow
myCatalog=HMIRuntime.Tags("@DatasourceNameRT").Read
PCName=HMIRuntime.Tags("@LocalMachineName").Read 
myDS=PCName & "\WinCC"
Set BTime=HMIRuntime.Tags("btime")
Set ETime=HMIRuntime.Tags("etime")
utcbtime=Dateadd("h",-8,BTime.Read) 
utcetime=Dateadd("h",-8,ETime.Read) 
utcbtstr = Year(utcbtime) & "-" & Month(utcbtime) & "-" & Day(utcbtime) & " " & Hour(utcbtime) & ":" & Minute(utcbtime) & ":" & Second(utcbtime)
utcetstr = Year(utcetime) & "-" & Month(utcetime) & "-" & Day(utcetime) & " " & Hour(utcetime) & ":" & Minute(utcetime) & ":" & Second(utcetime)
cnstr="Provider=WinCCOLEDBProvider.1; Catalog=" & myCatalog & "; Data Source=" &  myDS

'Msgbox cnstr

Set conobj=CreateObject("ADODB.Connection")
conobj.connectionstring=cnstr
conobj.CursorLocation = 3
conobj.Open
'TimeStep=2,1 表示间隔2秒。
'sqlstr = "Tag:R,('ProcessValueArchive\OFP';'ProcessValueArchive\OMP'),'" & utcbtstr & "','" & utcetstr & "'," & "'order by Timestamp ASC','TimeStep=1,1'"
sqlstr1 = "Tag:R,('ProcessValueArchive\OFP'),'" & utcbtstr & "','" & utcetstr & "'," & "'order by Timestamp ASC','TimeStep=1,1'"
sqlstr2 = "Tag:R,('ProcessValueArchive\OMP'),'" & utcbtstr & "','" & utcetstr & "'," & "'order by Timestamp ASC','TimeStep=1,1'"


Set rsobj1 = CreateObject("ADODB.Recordset")
Set comobj1 = CreateObject("ADODB.Command")
comobj1.CommandType = 1
Set comobj1.ActiveConnection = conobj
comobj1.CommandText = sqlstr1
Set rsobj1 = comobj1.Execute

Set rsobj2 = CreateObject("ADODB.Recordset")
Set comobj2 = CreateObject("ADODB.Command")
comobj2.CommandType = 1
Set comobj2.ActiveConnection = conobj
comobj2.CommandText = sqlstr2
Set rsobj2 = comobj2.Execute

Set grid=ScreenItems("grid")
rscount=rsobj1.RecordCount
If rscount=0 Then
 Msgbox "无记录"
 Exit Sub
End If
rsobj1.movefirst
rsobj2.movefirst


grid.Cols=4
grid.Rows=rscount+1

grid.TextMatrix(0,1)="日期时间"
grid.TextMatrix(0,2)="空气总压"
grid.TextMatrix(0,3)="煤气总压"


For i=1 To rscount
 curRow=i
 grid.TextMatrix(curRow,1)=Dateadd("h",+8,rsobj1.fields(1).value)
 grid.CellWidth(1)=2500
 grid.TextMatrix(curRow,2)=rsobj1.fields(2).value
 grid.TextMatrix(curRow,3)=rsobj2.fields(2).value
 rsobj1.movenext
 rsobj2.movenext
Next

Set rsobj1 = Nothing
Set rsobj2 = Nothing
conobj.Close
Set conobj = Nothing

End Sub

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查询按钮

Sub OnClick(ByVal Item)

Dim myCatalog,myDS,PCName,cnstr,sqlstr1,sqlstr2,sqlstr3,sqlstr4
Dim grid,utcbtime,utcetime,utcbtstr,utcetstr,begintime,endtime
Dim conobj
Dim rsobj1,comobj1
Dim rsobj2,comobj2
Dim rsobj3,comobj3
Dim rsobj4,comobj4

Dim rscount,i,curRow

myCatalog=HMIRuntime.Tags("@DatasourceNameRT").Read
PCName=HMIRuntime.Tags("@LocalMachineName").Read
myDS=PCName & “\WinCC”

Set begintime=ScreenItems(“BeginTime”)
Set endtime=ScreenItems(“EndTime”)

utcbtime=Dateadd(“h”,-8,begintime.Value)
utcetime=Dateadd(“h”,-8,endtime.Value)
utcbtstr = Year(utcbtime) & “-” & Month(utcbtime) & “-” & Day(utcbtime) & " " & Hour(utcbtime) & “:” & Minute(utcbtime) & “:” & Second(utcbtime)
utcetstr = Year(utcetime) & “-” & Month(utcetime) & “-” & Day(utcetime) & " " & Hour(utcetime) & “:” & Minute(utcetime) & “:” & Second(utcetime)
cnstr=“Provider=WinCCOLEDBProvider.1; Catalog=” & myCatalog & “; Data Source=” & myDS

'Msgbox cnstr

Set conobj=CreateObject(“ADODB.Connection”)
conobj.connectionstring=cnstr
conobj.CursorLocation = 3
conobj.Open
‘TimeStep=2,1 表示间隔2秒。
‘sqlstr = "Tag:R,(‘ProcessValueArchive\MIXBP’;‘ProcessValueArchive\MIXBF’),’" & utcbtstr & "’,’" & utcetstr & “’,” & “‘order by Timestamp ASC’,‘TimeStep=1,1’”
sqlstr1 = “Tag:R,(‘ProcessValueArchive\OMQ1S’),’” & utcbtstr & “’,’” & utcetstr & “’,” & “‘order by Timestamp ASC’,‘TimeStep=1,1’”
sqlstr2 = “Tag:R,(‘ProcessValueArchive\OKQ1S’),’” & utcbtstr & “’,’” & utcetstr & “’,” & “‘order by Timestamp ASC’,‘TimeStep=1,1’”
sqlstr3 = “Tag:R,(‘ProcessValueArchive\AUTO1’),’” & utcbtstr & “’,’” & utcetstr & “’,” & “‘order by Timestamp ASC’,‘TimeStep=1,1’”
sqlstr4 = “Tag:R,(‘ProcessValueArchive\DQL1RS’),’” & utcbtstr & “’,’” & utcetstr & “’,” & “‘order by Timestamp ASC’,‘TimeStep=1,1’”
'Msgbox “通过”

Set rsobj1 = CreateObject(“ADODB.Recordset”)
Set comobj1 = CreateObject(“ADODB.Command”)
comobj1.CommandType = 1
Set comobj1.ActiveConnection = conobj
comobj1.CommandText = sqlstr1
Set rsobj1 = comobj1.Execute

Set rsobj2 = CreateObject(“ADODB.Recordset”)
Set comobj2 = CreateObject(“ADODB.Command”)
comobj2.CommandType = 1
Set comobj2.ActiveConnection = conobj
comobj2.CommandText = sqlstr2
Set rsobj2 = comobj2.Execute

Set rsobj3 = CreateObject(“ADODB.Recordset”)
Set comobj3 = CreateObject(“ADODB.Command”)
comobj3.CommandType = 1
Set comobj3.ActiveConnection = conobj
comobj3.CommandText = sqlstr3
Set rsobj3 = comobj3.Execute

Set rsobj4 = CreateObject(“ADODB.Recordset”)
Set comobj4 = CreateObject(“ADODB.Command”)
comobj4.CommandType = 1
Set comobj4.ActiveConnection = conobj
comobj4.CommandText = sqlstr4
Set rsobj4 = comobj4.Execute

Set grid=ScreenItems(“grid”)
rscount=rsobj1.RecordCount
If rscount=0 Then
Msgbox “无记录”
Exit Sub
End If
rsobj1.movefirst
rsobj2.movefirst
rsobj3.movefirst
rsobj4.movefirst

grid.Cols=6
grid.Rows=rscount+1

grid.TextMatrix(0,1)=“时间”
grid.TextMatrix(0,2)=“M设定”
grid.TextMatrix(0,3)=“K设定”
grid.TextMatrix(0,4)=“自动”
grid.TextMatrix(0,5)=“燃烧”

For i=1 To rscount
curRow=i
grid.TextMatrix(curRow,1)=Dateadd(“h”,+8,rsobj1.fields(1).value)
grid.CellWidth(1)=2500
grid.TextMatrix(curRow,2)=rsobj1.fields(2).value
grid.TextMatrix(curRow,3)=rsobj2.fields(2).value
grid.TextMatrix(curRow,4)=rsobj3.fields(2).value
grid.TextMatrix(curRow,5)=rsobj4.fields(2).value

rsobj1.movenext
rsobj2.movenext
rsobj3.movenext
rsobj4.movenext

Next

Set rsobj1 = Nothing
Set rsobj2 = Nothing
Set rsobj3 = Nothing
Set rsobj4 = Nothing

conobj.Close
Set conobj = Nothing

End Sub



效果

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/33f454a66b264f2088f1283682825baa.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/68dcae66fec74e6ba6abdb3157098215.png)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2198531.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Airplane.dev 2024年3月关闭之感

airplane 这个云服务产品可能很多人都没有用过。 我们使用的原因是,先前公司非常喜欢使用 airplane 来给运行给已有的产品打运行时补丁。 前公司的策略就是当发现一个问题可能涉及到数据库的不一致性,那么解决方案就是定时运行一套 SQL 来让数据库保持…

MHAD数据集:由京东健康、华中科技大学和浙江大学联合收集,最全面包含多角度、多活动和多生理信号的家庭视频生理学数据集

2024-08-30,由京东健康、华中科技大学和浙江大学联合收集的第一个真实家庭环境中的多模态数据集MHAD,包含不同拍摄角度和各种家庭场景。它包含了迄今为止最全面的生理信号,是计算机视觉、机器学习和生物医学工程等多个学术研究领域的宝贵资源…

计算机毕业设计Tensorflow交通标志识别检测 车流量预测 车速检测 自动驾驶 机器学习 深度学习 人工智能 PyTorch 大数据毕设

《Tensorflow交通标志识别检测》开题报告 一、研究背景及意义 随着智能交通系统和无人驾驶技术的快速发展,交通标志识别系统成为智能驾驶系统的重要组成部分。传统的交通标志识别方法主要依赖于人工检查和识别,存在效率低下、易受主观因素影响等问题。…

js基础速成12-正则表达式

正则表达式 正则表达式(Regular Expression)或 RegExp 是一种小型编程语言,有助于在数据中查找模式。RegExp 可以用来检查某种模式是否存在于不同的数据类型中。在 JavaScript 中使用 RegExp,可以使用 RegExp 构造函数&#xff0…

髓质脊髓三叉神经核文献阅读笔记

文献阅读 1.RNA-seq 对于大量RNA测序,收集第30天的类器官。使用FastPure细胞/组织总RNA分离试剂盒根据制造商的方案提取总RNA。采用Nanodrop 2000分光光度计测定RNA浓度和纯度。使用Agilent 2100生物分析仪和2100 RNA纳米6000检测试剂盒评估RNA样品的完整性。简单…

自动驾驶系列—从IMU到惯性定位算法:自动驾驶精准定位的幕后科技

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

使用Git生成SSH密钥教程(附Git常用命令)

一、为什么使用SSH? 使用 Git 的 SSH(安全外壳协议)主要有以下几个原因:1. 安全性:SSH 是一种加密的网络协议,用于在网络中安全地运行网络服务。使用 SSH,所有传输的数据都会被加密&#xff0c…

FreeRTOS——系统配置文件FreeRTOSConfig.h详解

FreeRTOSConfig.h配置文件作用:对FreeRTOS进行功能配置和裁剪,以及API函数得使能。 FreeRTOSConfig.h 是一个用户级别的配置文件,不属于内核文件。每个用户可以有不同的FreeRTOSConfig.h,从而实现不同的功能配置。 对于FreeRTOS配…

C++ static静态

个人主页:Jason_from_China-CSDN博客 所属栏目:C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目:C知识点的补充_Jason_from_China的博客-CSDN博客 概念概述 用 static 修饰的成员变量,称之为静态成员变量,静态成…

车辆重识别(2021NIPS无分类器扩散指南)论文阅读2024/10/08

什么叫做有条件和无条件的扩散模型? FID是什么? IS是什么? λ是给出的参数,就像去噪扩散模型中每个时间步的β一样,每一时间步的λ都会给出。对于是否有条件信息c的概率 我的意思是在每一个训练轮次中&#xf…

一个适用于 ASP.NET Core 的轻量级插件框架

前言 今天大姚给大家分享一个适用于 ASP.NET Core 的轻量级插件框架,简单配置,开箱即用:PluginCore。 项目概述 PluginCore 是一个基于 ASP.NET Core 的轻量级插件框架,旨在简化插件的集成与管理。通过最少的配置,开…

wps文本框文字居中对齐

直接点对齐里的水平居中,垂直居中是将文本框水平垂直居中,文字不会居中 将文本框里的文字居中: 垂直居中: 水平居中:

基于SpringBoot的校园健康信息管理系统

第1章 绪论 1.1背景及意义 随着社会的快速发展,计算机的影响是全面且深入的。人们生活水平的不断提高,日常生活中人们对医院管理方面的要求也在不断提高,由于老龄化人数更是不断增加,使得师生健康信息管理系统的开发成为必需而且紧…

前端反接保护:实用方案解析与探讨

前端反接保护通常采用肖特基二极管方案或PMOS/NMOS方案,本文另外介绍一种理想二极管方案。 1、肖特基二极管方案 由于肖特基二极管具有正向导通电压,只能用于小电流场合,甚至于直接使用普通的整流二极管。比如1A电流,设D1的正向…

笔记整理—linux进程部分(9)互斥锁

互斥锁也叫互斥量,可以看作一种特殊的信号量。信号量可以>0,大家可以排队使用信号量,互斥锁只有0、1,主要实现关键段保护,只能在某一时间给某一任务去调用这段资源,这段内容用之前上锁,用完时…

Spring一共有几种注入方式?

目录 一、Spring Ioc 什么是 IOC? 依赖倒置原则 为什么叫控制反转? 两种实现方式 依赖注入DI Spring有哪些注入方式? 1. 构造方法注入 2. Setter方法注入 3. 字段/属性注入 4. 方法注入 5. 接口注入 6. 注解注入 二、Spring Ao…

gaussdb hccdp认证模拟题(多选)

1.以下哪些方式可以查询数据库信息? (1 分) A. \l B. \db C. select * from pg_database; D. select * from gs_database; --AC 2.以下哪些权限是开启三权分立后系统管理员不再具备的权限? (1 分) A. 用户管理权限 B. 表空间管理权限 C. …

通信工程学习:什么是三网融合

三网融合 三网融合,又称“三网合一”,是指电信网、广播电视网、互联网在高层业务应用上的深度融合。这一概念在近年来随着信息技术的快速发展而逐渐受到重视,并成为推动信息化社会建设的重要力量。以下是对三网融合的详细解释: 一…

20.数据结构与算法-树和二叉树/满二叉树/完全二叉树/二叉树的性质/二叉树的存储结构

树的定义 树的其它表示方法 树的基本术语 树结构和线性结构的比较 二叉树的定义 二叉树案例引入 二叉树的抽象数据类型定义 二叉树的性质 两种特殊形式的二叉树 满二叉树 完全二叉树 完全二叉树的性质 二叉树的存储结构 二叉树的顺序存储 二叉树的链式存储结构 二叉链表 三叉链…

GISBox工具:轻松实现倾斜摄影数据从OSGB到3D Tiles的转变

在现代地理信息系统(GIS)和三维可视化领域,倾斜摄影数据(OSGB格式)和3D Tiles格式是两种广泛应用的数据格式。然而,将OSGB数据转换为3D Tiles格式以便在Cesium等平台上加载和展示,一直是许多开发…