当前位置: 首页 > news >正文

西门子Wincc报表模版大全:多种模板积攒,视频讲解详解,SQL数据库应用实战

西门子Wincc积攒多种报表模版,带视频讲解,使用SQL数据库

最近在车间折腾WinCC报表的时候发现个挺有意思的事儿——这玩意儿配合SQL数据库能玩出不少花样。今天咱们就捞点干货,手把手整几个实用的报表模板。先来个最基础的日报表模板热热身。

先看数据库连接这块,WinCC的VBS脚本直接怼SQL是真的方便。比如在全局脚本里扔个连接函数:

Function ConnectDB() Set conn = CreateObject("ADODB.Connection") connStr = "Provider=SQLOLEDB;Data Source=车间服务器;Initial Catalog=ProductionData;User ID=sa;Password=123456;" conn.Open connStr Set ConnectDB = conn End Function

这段代码里的坑主要在连接字符串格式,特别是SQL身份验证和Windows验证的切换(用Integrated Security=SSPI替代账号密码)。实际项目中建议搞个配置文件存数据库参数,别像这样硬编码密码。

数据查询这块,用存储过程比直接写SQL语句靠谱。比如获取当日生产数据的存储过程:

CREATE PROCEDURE GetDailyReport @Date DATE AS BEGIN SELECT MachineID, OutputQty, DefectRate FROM ProductionLogs WHERE CONVERT(DATE, LogTime) = @Date ORDER BY MachineID END

在WinCC里调用的时候记得用参数化查询,防止SQL注入。用VBS调用的姿势大概是这样的:

Set cmd = CreateObject("ADODB.Command") cmd.ActiveConnection = ConnectDB() cmd.CommandType = 4 '存储过程 cmd.CommandText = "GetDailyReport" cmd.Parameters.Append cmd.CreateParameter("@Date", 135, 1, , Date) '135对应日期类型 Set rs = cmd.Execute

这里有个骚操作是用135这个参数类型代码直接对应SQL的date类型,比用字符串转换省事得多。

报表展示方面,WinCC的在线表格控件配上C脚本更带劲。比如在控件的"更新时"事件里塞点动态加载数据的代码:

#include "apdefap.h" void OnUpdate(char* lpszPictureName, char* lpszObjectName) { SQLRETURN rc; HSQL hstmt; char query[200]; sprintf(query, "EXEC GetShiftReport @Shift='%s'", GetTagChar("CurrentShift")); rc = SQLExecDirect(hstmt, (SQLCHAR*)query, SQL_NTS); while(SQLFetch(hstmt) == SQL_SUCCESS) { // 填充表格行的代码 } }

这种动态报表要注意内存泄漏问题,每次查询完必须记得SQLFreeHandle。有次现场项目就因为这个没处理,运行一周把工控机内存吃光了...

模板复用才是精髓。通过给报表控件绑定不同的XML模板文件,配合文件列表选择器控件,能实现报表样式的热切换。文件读取用WinCC自带的FileSystemObject:

Sub LoadTemplate(templateName) Set fso = CreateObject("Scripting.FileSystemObject") templatePath = "\\tsclient\C\ReportTemplates\" & templateName & ".xml" If fso.FileExists(templatePath) Then ReportControl.Object.Data = fso.OpenTextFile(templatePath).ReadAll Else MsgBox "模板文件丢失,请联系维护人员" End If End Sub

这里用了终端服务的客户端路径映射,现场部署时要注意网络权限设置。更稳妥的做法是把模板文件放在WinCC项目目录里,通过相对路径访问。

最后说个骚操作:用SQL的FOR XML PATH直接把数据拼成HTML表格,在WinCC的WebBrowser控件里直接渲染。这种方案对复杂排版特别友好,维护起来也比传统控件省事。不过要当心SQL版本差异,不同版本的XML生成语法会有微小差别。

http://www.gsyq.cn/news/111668.html

相关文章:

  • 从“水往低处流”到“逆流而上”:BFS搜索巧解太平洋大西洋水流问题
  • LobeChat能否实现AI生成季度报告?财务与业务总结自动化
  • CPS 信息物理系统:世界模型的基础与人工智能万物互联控制的实现​
  • java计算机毕业设计手机仓库管理系统 移动端库存智能管理平台的设计与实现 基于手机的仓储作业协同系统开发
  • 数字卡尺与几何魔法:聊聊那些藏在代码里的测量艺术
  • 创业与拓展必备!支持无限开号的洗车小程序系统源码
  • 主动配电网故障恢复的重构与孤岛划分模型 关键词:分布式电源 故障网络重构 主动配电网 孤岛划分...
  • COMSOL的多物理场仿真工具箱里藏着电池工程师的快乐密码。今天咱们不聊虚的,直接看几个实操案例。比如锂离子电池的热失控模拟,这个参数设置界面里藏着魔鬼细节
  • (一)系统介绍及后端框架构建
  • springboot数据上链FISCO BCOS
  • 【开源源码】基于 STM32智能温度监控系统 | 一个支持远程监控与告警的嵌入式实践项目
  • A06B-0236-B100伺服电机
  • 风光储并网发电系统仿真模型 共直流母线式风光储:风力发电+光伏发电+储能+三相逆变并网 ①光伏...
  • 新手友好!4组AI头像提示词模板,无需绘画基础也能出图
  • 执行 install.sh 报错 `env: ‘bash\r‘: No such file or directory` 怎么解决?
  • 洗车行业的多商户管理小程序源码系统 带完整的搭建部署教程
  • WER 2025世锦赛暨能力风暴教育机器人高峰论坛在沪举行
  • 按需购买Token计费模式上线,搭配LobeChat更划算
  • 在线免费夸克网盘解析网站不限速70MB/S - 在线工具使用
  • 从爬取到分析:使用 Pandas 处理头条问答数据
  • list 的cpp简单模拟实现
  • 实用指南:全景相机领域,影石何以杀出重围?
  • 实战为王!数眼智能 AI 网页解析全流程操作(含 API 接入 + 竞品分析)
  • spark读hive偶尔出现table not found
  • 海外回国eSIM避坑指南一定要提前搞懂,不然真的会被坑惨!
  • keyence颜色传感器LR-W70使用(最多可区分16种颜色)
  • Wan2.2-T2V-A14B模型部署与高保真T2V实战
  • LangGraph4j 入门
  • 12/16
  • Linux SSH隧道代理转发及多层转发