文章目录

  • 1 环境
    • 1 软件&环境需求
    • 2 VBS脚本
      • 2.1 wincc中集成Excel对象
      • 2.2 链接数据库,并插入实时数据(ADODB)
        • 2.2.1 测试代码
        • 2.2.2 封装成函数
        • 2.2.3 动作中调用函数进行插入
      • 3 取出数据,填充excel,存储并展示

1 环境

1 软件&环境需求

  • win10 OS
    
  • mysql 5.6~5.7
    
  • mysql ODBC connector
    
  • navicate
    
  • wincc 7.5 集成VBS
    

2 VBS脚本

2.1 wincc中集成Excel对象

Excel 对象的根对象是 Excel.application
excel.application->workbook->sheet->cell

' 在Wincc的起始画面的打开画面事件中写入下面脚本
' 创建 Excel Application并加入DataSet,以便在不同画面或画面窗口中访问。
Sub OnOpen() Dim xlApp
Dim DSExist
Dim iOn Error Resume Next '出现错误继续执行
'检查 Excel 是否已运行,若无则新建应用,以防止重复运行 Exce
Set xlApp = GetObject("Excel Application")
If Typename(xlApp) <> "Application" ThenSet xlApp = CreateObject("Excel.Application")
End If'检查 DataSet 中是否已有 xlApp,若无则添加
With HMIRuntime.DataSetFor i = 1 To .CountIf StrComp(.item(i).Name,"xlApp",1) = 0 ThenDSExist = 1i = .CountEnd IfNextIf DSExist = 0 Then .Add "xlApp",xlApp
End WithEnd Sub

2.2 链接数据库,并插入实时数据(ADODB)

2.2.1 测试代码

Option Explicit
Function action
On Error Resume Next
Dim conn, rs, com, sql
Dim water, power, medicine
Dim a
Dim b
a = Now
b = CStr(a)water = HMIRuntime.Tags("report1.water").Read
power = HMIRuntime.Tags("report1.power").Read
medicine = HMIRuntime.Tags("report1.medicine").ReadSet conn = CreateObject("ADODB.Connection")conn.ConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};server=localhost;database=test;uid=root;pwd=root;option=3"conn.CursorLocation = 3conn.Open'Msgbox conn.stateSet rs = CreateObject("ADODB.RecordSet")'sql = "select * from report"sql = "insert into report (addr, time, power, water, medicine) values(1,"&"'"& b & "'"& "," & power & "," & water & "," & medicine & ")"'sql = "insert into report (addr, time, power, water, medicine) values(1,2,3,4,5)"'Msgbox sql'Msgbox sqlconn.Execute sql  'rs.Open sql,conn,1,3'Msgbox (rs.state)Set conn = Nothing
Set rs = NothingEnd Function

2.2.2 封装成函数

Sub insert(sql)
Dim conn
On Error Resume Next
Set conn = CreateObject("ADODB.connection")
With conn.ConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};server=localhost;database=test;uid=root;pwd=root;option=3".CursorLocation = 3.Open.Execute sql
End With
Set conn = Nothing
End Sub

2.2.3 动作中调用函数进行插入

Option Explicit
Function action
On Error Resume Next
Dim addr : addr = "PAC加药间I"
Dim medicine_A : medicineA = HMIRuntime.tags("FT0404_F.3_Feedback").Read/3600
Dim medicine_B : medicineA = HMIRuntime.tags("FT0405_F.3_Feedback").Read/3600
Dim medicine_total : medicine_total = medicine_A + medicine_BDim sql
sql = "insert into report (addr, time, power, water, medicine) " &_"values(" &"'"& addr &"'" &","&"'"& CStr(Now) & "'"& "," & "Null" & "," & "Null" & "," & 1 & ")" &"," &_"("&"'"&addr&"'"&","&"'"& CStr(Now) & "'"& "," & "Null" & "," & "Null" & "," & 1 & ")"
'Msgbox sql
insert(sql)End Function

3 取出数据,填充excel,存储并展示

Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
On Error Resume Next
Dim conn,rs,sql
Dim excelSet conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.RecordSet")conn.ConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};server=localhost;database=test;uid=root;pwd=root;option=3"conn.CursorLocation = 3conn.Open'Msgbox (conn.State)sql =   "select addr, concat(Year(Time),'-',Month(Time),'-',Day(Time),' ',Hour(Time), ':00', ':00') As Time ,avg(power), avg(water), avg(medicine)" &_"from report group by Year(Time), Month(Time), Day(Time), Hour(Time);"'Msgbox sqlrs.Open sql,conn,1,3'Msgbox(rs.State)Dim m m = rs.RecordCount'Msgbox(m)Dim xlApp, xlPath, xlFile, xlBook, xlSheet
Dim i,t
Dim objFSO, objFlexGrid, objProcessBarSet objFSO = CreateObject("Scripting.FileSystemObject")xlPath = HMIRuntime.ActiveProject.Path & "\Excel"If Not objFSO.FolderExists(xlPath) ThenobjFSO.CreateFolder(xlPath)
End IfSet objFSO = NothingSet xlApp = HMIRuntime.DataSet("xlApp").Value
Set xlBook = xlApp.Workbooks.Add
xlApp.Visible = False
Set xlSheet = xlBook.WorkSheets(1)With xlSheet.Activate.Columns(1).ColumnWidth = 15.Columns(2).ColumnWidth = 30.Columns(3).ColumnWidth = 10.Columns(4).ColumnWidth = 10.Columns(5).ColumnWidth = 10.Range("A:E").HorizontalAlignment = 3.Range("A:E").Borders.LineStyle = 1.Range("A1:E1").Interior.ColorIndex = 37.Cells(1,1) = "工艺段".Cells(1,2) = "时间".Cells(1,3) = "电能消耗".Cells(1,4) = "水源消耗".Cells(1,5) = "药品消耗"rs.MoveFirstFor i = 1 To m.Cells(i+1, 1) = rs.Fields(0).Value.Cells(i+1, 2) = rs.Fields(1).Value.Cells(i+1, 3) = Round(rs.Fields(2).Value,1).Cells(i+1, 4) = Round(rs.Fields(3).Value,1).Cells(i+1, 5) = Round(rs.Fields(4).Value,1)rs.MoveNextNext.Cells(m+2, 1) = "合计".Cells(m+2, 3) = "=SUM(C2:C"&m&")".Cells(m+2, 4) = "=SUM(D2:D"&m&")".Cells(m+2, 5) = "=SUM(E2:E"&m&")"End Witht = Now
xlFile = Right("20"&Year(t),4)&"."&Right("0"&Month(t),2)&"."&Right("0"&Day(t),2)&"."&Right("0" & Hour(t),2)&"."&Right("0"&Minute(t),2)&"."&Right("0"&Second(t),2)&"."&"htm"
Msgbox(xlPath & xlFile)
xlBook.SaveAs xlPath&"\"&xlFile,44
xlApp.WorkBooks.Close
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = NothingDim wbCtrlSet wbCtrl = ScreenItems("控件1")wbCtrl.MyPage = xlPath&"\"&xlFileEnd Sub

WinCC与Mysql原来可以这样玩相关推荐

  1. MySQL还能这样玩---第一篇之你所不知道的命令

    MySQL还能这样玩---第一篇之你所不知道的命令 命令篇 DDL---表定义相关命令操作 show create table 表名 ---查看创建表的SQL语句 alter table 表名 mod ...

  2. WinCC连接MySQL

    1.测试环境 系统:Windows Server 2008R2 WinCC: V7.2 MySQL:MySQL 5.5.62 Community Server Wincc 7.2 MySQL 5.5. ...

  3. mysql映射表_[玩转MySQL之四]MySQL缓存机制

    一.前言 在当今的各种系统中,缓存是对系统性能优化的重要手段.MySQL Query Cache(MySQL查询缓存)在MySQL Server中是默认打开的,但是网上各种资料以及有经验的DBA都建议 ...

  4. 手把手教你mysql从入门到玩转

    开发环境准备 首先安装mysql环境,本文使用的开发工具是Navicat Premium,这是一款数据库管理工具,这个工具安装非常方便.使用也很简单,当然SQL Server Management S ...

  5. wincc连接mysql数据库案例_WINCC读写SQL数据库的例子-工业支持中心-西门子中国

    本回答有11位钻石用户推荐 回答者: zhangli0 - 超级顾问&nbsp&nbsp第15级 2019-07-25 16:40:06 ''当前为按钮触发, ''创建一张当前日期命名 ...

  6. golang物联网_使用golang谷歌云平台和grafana监控物联网设备

    golang物联网 In this article, we'll be setting up step by step, a monitoring environment for IoT device ...

  7. 阿里用回mysql_回mysql方式

    与慢速设备通讯异步化方案 与慢速设备通讯异步化方案.pdf像MySQL.被对接的银行系统等,都可称作慢速设备.它们的共同特点是只提供了同步调用接口,而且响应通常会比较慢. 一般业务系统在业务线程或进程 ...

  8. MySQL 中删除的数据都去哪儿了?

    不知道大家有没有想过下面这件事? 我们平时调用 DELETE 在 MySQL 中删除的数据都去哪儿了? 这还用问吗?当然是被删除了啊 那么这里又有个新的问题了,如果在 InnoDB 下,多事务并发的情 ...

  9. Mysql的收费方式

    网络上多数朋友担心甲骨文会对MySQL软件采用收费模式,多数朋友也不清楚MySQL开源到底是什么模式,开源=免费嘛?是很多的疑问,MySQL是遵守双重协议的,一个是GPL授权协议,一个是商用授权协议( ...

最新文章

  1. 第八章 异常控制流 笔记
  2. flask源码学习-路由的注册与请求处理的过程
  3. 关于ASP无组件上传在2003下出错
  4. JS获取上传文件的大小
  5. UIBarButtonItem使用困惑
  6. 6月17 表单验证
  7. oracle中作业无法执行,Oracle运行JOB报ORA-27492:无法运行作业
  8. antd提交表单_表单序列化
  9. uml图中的各种箭头_一次搞懂建模语言UML
  10. 博客文章列表(一)——JAVA
  11. Web开发的那点事--软件复用
  12. java annotation list_java-注解annotation
  13. java io流读取txt文件_Java使用IO流读取TXT文件
  14. php 错误提示模板,php 关闭错误提示方法总结与性能分析
  15. python - 接口自动化测试 - MysqlUtil - 数据库操作封装
  16. mysql 中文 phpmyadmin_mysql中文乱码问题,phpmyadmin操作解决方法
  17. CSS过滤器(CSS filters)
  18. 对《致加西亚的信》的异议
  19. mummer基因组共线性分析详解
  20. 假若明天来临——《AI.未来》读后感3900字

热门文章

  1. 理论物理极础7:对称性与守恒定律
  2. 上海极家装修质量好不好?什么能说明
  3. 条码打印软件如何连接得力条码机打印条形码
  4. 计算机二级考试软件 免费
  5. 使用cordova把h5应用打包成apk
  6. 4天完成一个物联网项目
  7. MT6873/MT6753/MT6885 如何设定battery的固定温度?
  8. 模拟音频处理器:Excite Audio Lifeline Console Mac
  9. 城阳三中2021高考成绩查询入口,2021年城阳区高中学 普通高中计划招生5250人,公办普通高...
  10. 【国内某社交软件的加解密分析】