当前位置: 首页 > 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.jsqmd.com/news/100894/

相关文章:

  • PMSM永磁同步电机电控设计高手晋级之路:高清视频,深度解析,技术细节一网打尽
  • 从“水往低处流”到“逆流而上”:BFS搜索巧解太平洋大西洋水流问题
  • CPS 信息物理系统:世界模型的基础与人工智能万物互联控制的实现​
  • LobeChat能否实现AI生成季度报告?财务与业务总结自动化
  • 私有部署+全能定制!开源投票系统分享 小程序投票+H5投票二合一
  • Flutter 性能优化实战:从 60fps 到丝滑如原生的 120fps
  • 全新升级!洗车服务行业专属小程序源码,致力于为各类洗车服务商提供最得力的线上助手
  • 全能小微企业报告API接口调用代码流程、接入方法以及应用场景
  • Flutter 国际化(i18n)全指南:一键切换中/英/日多语言
  • java计算机毕业设计手机仓库管理系统 移动端库存智能管理平台的设计与实现 基于手机的仓储作业协同系统开发
  • 永磁同步电机谐波注入与5/7次谐波抑制——基于MATLAB Simulink仿真模型操作教程
  • 降本增效利器!这款洗车小程序源码助您轻松搭建管理平台
  • 基于CNN多变量时间序列预测的MATLAB程序(含清晰注释与测试数据集)
  • 三相锁相环(SRF-PLL)并网逆变器 Matlab Simulink仿真
  • MSWOA算法,基于多策略混合改进鲸鱼算法 Matlab语言 改进后测试函数结果显示,相较与W...
  • 调研分享 | 面向异构集群环境的分布式训练并行方案调研
  • 【青岛理工】25年计网期末A卷回忆版
  • Memgraph 全新 AI 图工具包:一键构建 GraphRAG 聊天机器人,实现快速上下文感知响应
  • 数字卡尺与几何魔法:聊聊那些藏在代码里的测量艺术
  • 创业与拓展必备!支持无限开号的洗车小程序系统源码
  • 艾默生EV2000变频器源代码:算法特色显著
  • 主动配电网故障恢复的重构与孤岛划分模型 关键词:分布式电源 故障网络重构 主动配电网 孤岛划分...
  • 数字人平台选型指南:四大维度全面解析
  • [特殊字符]名企研学|走进比亚迪!解锁新能源汽车的未来密码[特殊字符][特殊字符]
  • 51单片机数字电压表
  • COMSOL的多物理场仿真工具箱里藏着电池工程师的快乐密码。今天咱们不聊虚的,直接看几个实操案例。比如锂离子电池的热失控模拟,这个参数设置界面里藏着魔鬼细节
  • 快速上线的二手车小程序源码系统,助力车商降本增效
  • 开源替代SaaS:一次部署长期受益,多维表格自建方案全解析
  • 【光学】基于九个光谱波段多光谱成像系统食品质量评估(范围为400nm-1000nm)附Matlab代码
  • STL中容器适配器:stack,queue,priority_queue 的介绍与简单模拟实现