Advertisement

使用VBS脚本在WinCC中向SQLServer数据库写入数据.docx

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:DOCX


简介:
本文档介绍了如何利用VBS脚本将数据从西门子WinCC系统高效地传输到SQL Server数据库,提供详细的步骤和示例代码。 本段落将探讨如何使用Visual Basic Script (VBS) 在西门子WinCC人机界面系统中编写脚本以向SQL Server数据库写入数据的过程。此过程主要包括建立数据库连接、编写SQL查询语句以及处理数据的插入或更新操作。 首先,需要在SQL Server上创建一个数据库和相应的表。在此示例中,我们有`date` 和 `AT300` 表,它们可能包含有关生产流程的不同信息,如釜序号(Brewery Sequence Number)、原料编号、目标值及不同时间点的MI值等。 在WinCC项目中添加一个按钮组件,并在其单击事件中编写VBS代码。以下是一个示例: ```vbscript Dim data1, data2, data3, data4, data5, data6, data7, data8 数据赋值 data1 = 5004 data2 = 1234 data3 = 5 data4 = 5.2 data5 = 5.8 data6 = 10 data7 = 10.33483 data8 = 42 创建数据库连接 Dim Con, conn Con = Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DH;Data Source=.WINCC Set conn = CreateObject(ADODB.Connection) conn.ConnectionString = Con conn.CursorLocation = 3 conn.Open 查询语句 Dim sSql, sSql2, sSql3, sSql4, m, n sSql2 = SELECT * FROM date WHERE 釜序号= & data1 & sSql4 = SELECT * FROM AT300 WHERE 釜序号= & data1 & sSql = INSERT INTO date (釜序号, 原料编号, 目标, MI5, [MI5-30], MI30, [MI30-60], MI60, TIME) VALUES( & data1 &, & data2 &, & data3 &, & data4 &, & data7 &, & data5 &, & data8 &, & data6 &, & Now() &); sSql3 = UPDATE AT300 SET 结果值= & data4 WHERE 釜序号= & data1 执行查询并检查记录 Dim oRs2, oCom2 Set oRs2 = CreateObject(ADODB.Recordset) Set oCom2 = CreateObject(ADODB.Command) oCom2.ActiveConnection = conn oCom2.CommandType = 1 oCom2.CommandText = sSql2 Set oRs2 = oCom2.Execute m = oRs2.RecordCount oCom2.CommandText = sSql4 Set oRs2 = oCom2.Execute n = oRs2.RecordCount 写入数据或显示提示 If m = 0 Then Set oRs = CreateObject(ADODB.Recordset) Set oCom = CreateObject(ADODB.Command) oCom.ActiveConnection = conn oCom.CommandType = 1 oCom.CommandText = sSql Set oRs = oCom.Execute Else MsgBox & data1 & 数据已存在 End If If n > 0 Then oCom.CommandText = sSql3 Set oRs = oCom.Execute End If conn.Close ``` 这段代码首先声明了需要的数据变量,并给它们赋值。接着,通过`ADODB.Connection`对象建立与数据库的连接。随后使用 `ADODB.Command` 对象执行SQL查询和更新命令,例如`sSql2` 和 `sSql4` 用于检查 `date` 和 `AT300` 表中是否有与 `data1` 匹配的记录;而`sSql` 则用于向 `date` 表插入新的数据。 在执行查询后通过检查记录数量来确定是否需要执行插入或更新操作。如果查询没有返回记录,则表示 m=0,此时应执行插入操作;若 `AT300` 表中已存在与 `data1` 匹配的记录,则需进行更新操作。确保关闭数据库连接以释放资源。 此过程展示了如何在WinCC环境中利用VBS进行数据库交互,这对于实时监控和控制生产流程中的数据记录至关重要。通过这种方式可以保证 WinCC 界面与数据库之间的数据同步,从而实现生产和数据分析自动化。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • 使VBSWinCCSQLServer.docx
    优质
    本文档介绍了如何利用VBS脚本将数据从西门子WinCC系统高效地传输到SQL Server数据库,提供详细的步骤和示例代码。 本段落将探讨如何使用Visual Basic Script (VBS) 在西门子WinCC人机界面系统中编写脚本以向SQL Server数据库写入数据的过程。此过程主要包括建立数据库连接、编写SQL查询语句以及处理数据的插入或更新操作。 首先,需要在SQL Server上创建一个数据库和相应的表。在此示例中,我们有`date` 和 `AT300` 表,它们可能包含有关生产流程的不同信息,如釜序号(Brewery Sequence Number)、原料编号、目标值及不同时间点的MI值等。 在WinCC项目中添加一个按钮组件,并在其单击事件中编写VBS代码。以下是一个示例: ```vbscript Dim data1, data2, data3, data4, data5, data6, data7, data8 数据赋值 data1 = 5004 data2 = 1234 data3 = 5 data4 = 5.2 data5 = 5.8 data6 = 10 data7 = 10.33483 data8 = 42 创建数据库连接 Dim Con, conn Con = Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DH;Data Source=.WINCC Set conn = CreateObject(ADODB.Connection) conn.ConnectionString = Con conn.CursorLocation = 3 conn.Open 查询语句 Dim sSql, sSql2, sSql3, sSql4, m, n sSql2 = SELECT * FROM date WHERE 釜序号= & data1 & sSql4 = SELECT * FROM AT300 WHERE 釜序号= & data1 & sSql = INSERT INTO date (釜序号, 原料编号, 目标, MI5, [MI5-30], MI30, [MI30-60], MI60, TIME) VALUES( & data1 &, & data2 &, & data3 &, & data4 &, & data7 &, & data5 &, & data8 &, & data6 &, & Now() &); sSql3 = UPDATE AT300 SET 结果值= & data4 WHERE 釜序号= & data1 执行查询并检查记录 Dim oRs2, oCom2 Set oRs2 = CreateObject(ADODB.Recordset) Set oCom2 = CreateObject(ADODB.Command) oCom2.ActiveConnection = conn oCom2.CommandType = 1 oCom2.CommandText = sSql2 Set oRs2 = oCom2.Execute m = oRs2.RecordCount oCom2.CommandText = sSql4 Set oRs2 = oCom2.Execute n = oRs2.RecordCount 写入数据或显示提示 If m = 0 Then Set oRs = CreateObject(ADODB.Recordset) Set oCom = CreateObject(ADODB.Command) oCom.ActiveConnection = conn oCom.CommandType = 1 oCom.CommandText = sSql Set oRs = oCom.Execute Else MsgBox & data1 & 数据已存在 End If If n > 0 Then oCom.CommandText = sSql3 Set oRs = oCom.Execute End If conn.Close ``` 这段代码首先声明了需要的数据变量,并给它们赋值。接着,通过`ADODB.Connection`对象建立与数据库的连接。随后使用 `ADODB.Command` 对象执行SQL查询和更新命令,例如`sSql2` 和 `sSql4` 用于检查 `date` 和 `AT300` 表中是否有与 `data1` 匹配的记录;而`sSql` 则用于向 `date` 表插入新的数据。 在执行查询后通过检查记录数量来确定是否需要执行插入或更新操作。如果查询没有返回记录,则表示 m=0,此时应执行插入操作;若 `AT300` 表中已存在与 `data1` 匹配的记录,则需进行更新操作。确保关闭数据库连接以释放资源。 此过程展示了如何在WinCC环境中利用VBS进行数据库交互,这对于实时监控和控制生产流程中的数据记录至关重要。通过这种方式可以保证 WinCC 界面与数据库之间的数据同步,从而实现生产和数据分析自动化。
  • WinCCVBS操作SQL Server文件
    优质
    本文介绍如何在WinCC项目中使用VBS脚本进行SQL Server数据库的操作,包括连接、查询和更新数据的方法。 在WinCC中可以使用VBS脚本来读写SQLServer数据库文件。
  • WinCCVBS进行SQL操作
    优质
    本教程详解了如何在WinCC项目中使用VBS脚本实现与SQL数据库的数据交互,重点介绍向数据库写入数据的具体步骤和方法。适合需要将实时监控信息存储至数据库的用户学习参考。 本代码位于E:\WinccProjects\DBSQL工程目录下,功能是对该工程下的CC_DBSQL_11_04_19_19_19_51R数据库中的表GH_table的字段“Temp”进行写操作。具体来说,写入的内容是DBSQL工程中过程变量Temp的值。此代码作为按钮控件响应脚本,在用户按下鼠标时执行相应动作。写入的时间和次数由按钮的动作决定。
  • 使VBWINCC及导出至Excel
    优质
    本教程详细介绍如何利用Visual Basic在WinCC软件中实现对数据库的数据读取和写入操作,并指导用户将数据导出到Excel表格中,适合工控系统开发人员学习参考。 本段落主要介绍如何使用WINCC7.4 和 VB 来读取和写入 SQL Server 数据库,并提供了一个完整的示例来展示整个过程。网上有很多类似的例子,但能够详细讲解并附上完整代码的例子较少。 首先,我将通过截图的方式展示所有步骤,然后会分享一个完整的 WINCC 文件供参考。第一步是创建数据库和表,在这里使用的是 SQL Server 2014 版本(其他版本的操作类似)。从开始菜单进入 所有程序 找到 SQL Server Management Studio (SSMS),点击打开后会出现以下界面,请记住界面上方显示的 server name,后续会用到。接着点击“Connect”,然后在数据库列表中右键选择 “New Database” 来创建新库,并填写相应的名称完成建库操作。
  • OpenCV使cv::Mat函txt文件
    优质
    本教程详细介绍如何利用OpenCV库中的cv::Mat函数将图像处理或分析所得的数据高效地存储到txt文件中。 OpenCV是一个功能强大的计算机视觉库,它提供了许多有用的函数和类来处理图像和视频数据。其中,cv::Mat是该库中的一个重要类,用于存储和操作矩阵及图像信息。在使用OpenCV进行图像或视频分析时,通常需要将文件内的数据读取到cv::Mat对象中或者把cv::Mat的内容输出为txt格式的文本段落件。 本段落主要讲解了如何实现后者——即从cv::Mat向外部txt文档导出数据的过程。具体方法是按照行和列的方式排列矩阵中的元素,并将其写入一个可编辑的.txt文件,便于后续的手动检查或进一步的数据处理操作。 在深入讨论之前,有必要先简单介绍下cv::Mat类的核心特性:它是一个灵活且高效的容器类型,能够容纳不同类型的数值阵列。这些数组可以来自图像数据、直接由代码生成或者从其他矩阵复制而来。 接下来是将cv::Mat对象中的内容输出至文本段落件的一个示例程序: ```c void writeMatToFile(cv::Mat& m, const char* filename) { std::ofstream fout(filename); if (!fout) { std::cout << File Not Opened << std::endl; return; } for (int i = 0; i < m.rows; i++) { for (int j = 0; j < m.cols; j++) { fout << m.at(i, j) << \t; } fout << std::endl; } fout.close(); } ``` 此函数接受两个参数:一个cv::Mat实例m和目标文件的名称filename。首先尝试以写模式打开指定路径下的txt文档,若未能成功打开则输出错误信息并终止执行;随后利用嵌套循环结构遍历整个矩阵,并将每个元素值(此处示例中为浮点数类型)通过制表符分隔后逐行写入文件。 该函数的作用是确保cv::Mat对象中的数据以表格形式保存在外部的文本段落档里,每行对应于原始图像或数组的一排像素或者数值。这使得后续的数据处理工作更为直观便捷。 值得注意的是,在调用此函数时必须正确指定输出文件的位置和名称,并且需要确认文件能够被成功打开以便正常写入数据。通过结合使用cv::Mat与std::ofstream类库,我们可以轻松实现矩阵到文本的转换功能,从而方便地存储并处理图像或数值信息。
  • 使Python现有Excel
    优质
    本教程详细介绍了如何利用Python编程语言高效地将数据添加到现有的Excel工作表中,帮助用户掌握pandas和openpyxl等库的基本操作技巧。 使用Python将数据写入已存在的Excel文件可以通过多种方法实现,其中最常用的是利用`openpyxl`库处理.xlsx格式的文件或使用`pandas`库来操作Excel表格。这些工具提供了丰富的功能支持读取、修改及保存Excel文档中的内容。 具体步骤如下: 1. 安装必要的Python包: - 使用pip安装:对于`.xlsx`文件,可以使用命令 `pip install openpyxl` - 对于更通用的操作(包括.xlsx和.xls),推荐使用 `pandas`, 可以通过执行 `pip install pandas` 来安装。 2. 导入所需的库并打开现有的Excel工作簿: ```python import openpyxl wb = openpyxl.load_workbook(example.xlsx) sheet = wb.active # 或者指定具体的sheet名:wb[SheetName] ``` 3. 写入数据到特定位置或更新现有单元格的内容。 4. 最后,保存更改: ```python wb.save(updated_example.xlsx) # 如果希望覆盖原文件,则可以使用相同的名称。 ``` 以上便是基本的流程。根据具体需求可能会涉及更复杂的操作如合并单元格、添加图表等,请查阅相应库文档获取更多信息。 通过这种方式,你可以轻松地利用Python实现对Excel数据的操作和管理。
  • 使JavaKettle获取
    优质
    本教程介绍如何利用Java脚本在Pentaho Data Integration (Kettle)工具中从数据库提取数据值。通过示例代码详细讲解了配置与实现过程,帮助用户掌握基于Java的定制化数据处理技巧。 Kettle通过Java脚本获取数据库的值。
  • WinCC(VBS)调画面.VB
    优质
    简介:本教程介绍如何使用WinCC中的VBS脚本来动态调用和控制用户界面元素,包括激活特定的画面以及与之交互的方法。 在WinCC SP7.4中使用脚本调用画面(VBS)来控制阀门、电机等设备,可以方便地通过一个界面进行操作。这种方法有助于提高对这些设备的管理和操控效率。
  • C++QtVBS
    优质
    本文介绍了如何在C++开发环境下使用Qt框架调用VBS脚本中的自定义函数,帮助开发者实现跨语言功能集成。 Qt工程中的C++代码可以调用VBScript脚本函数。这里提供一个简单的示例供参考学习。