2026/1/17 2:19:27
网站建设
项目流程
企业手机网站设计案例,网站作弊,网站怎么做的支付宝,网站title怎么写西门子Wincc积攒多种报表模版#xff0c;带视频讲解#xff0c;使用SQL数据库最近在车间折腾WinCC报表的时候发现个挺有意思的事儿——这玩意儿配合SQL数据库能玩出不少花样。今天咱们就捞点干货#xff0c;手把手整几个实用的报表模板。先来个最基础的日报表模板热热身。先…西门子Wincc积攒多种报表模版带视频讲解使用SQL数据库最近在车间折腾WinCC报表的时候发现个挺有意思的事儿——这玩意儿配合SQL数据库能玩出不少花样。今天咱们就捞点干货手把手整几个实用的报表模板。先来个最基础的日报表模板热热身。先看数据库连接这块WinCC的VBS脚本直接怼SQL是真的方便。比如在全局脚本里扔个连接函数Function ConnectDB() Set conn CreateObject(ADODB.Connection) connStr ProviderSQLOLEDB;Data Source车间服务器;Initial CatalogProductionData;User IDsa;Password123456; conn.Open connStr Set ConnectDB conn End Function这段代码里的坑主要在连接字符串格式特别是SQL身份验证和Windows验证的切换用Integrated SecuritySSPI替代账号密码。实际项目中建议搞个配置文件存数据库参数别像这样硬编码密码。数据查询这块用存储过程比直接写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自带的FileSystemObjectSub 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生成语法会有微小差别。