WinCC操作SQL Server数据库进行增改删查询

前言

这篇文件简单介绍通过WinCC使用VBS对数据库增改删查询的功能实现,实际项目中要根据需要进行代码扩展和数据库建表,比如数据的检验、数据库表的主键和索引等。

1. 环境

系统:Windows 10 LTSB2016

WinCC:  V7.5

数据库: SQL Server2016(WinCC自带)

2. 准备

2.1 变量管理

在WinCC变量管理建立6个内部变量(项目中根据需要使用PLC的变量,这里是方便测试)。

图2.1

2.2 图形编辑器

新建PDL,在PDL上添加4个按钮和6个IO域(输入输出域)。

图2.2

2.3 数据库

数据库表DataTableTest字段及类型。

3. 增改删查询功能

3.1 说明

3.1.1 数据库连接说明

 说明备注
数据库名Test 
表名DataTableTest 
用户名sa 
密码123456 
数据源WSES\WINCCWSES是我的计算机名,根据实际修改,也可以使用IP\WINCC

 3.1.2 功能说明

增加:把数据写入到数据库(insert)。

修改:修改T_ID显示的数据(update)。

删除:删除T_ID显示的数据(delete)。

查询:查询T_ID_A的数据(select)。

注:insert、update、delete、select是PL/SQL对数据库操作的关键字,SQL Server、MySQL、Oracle等均支持。

PS:在后面的代码中重点关注insert、update、delete、select的语句。

3.2 增加功能的代码

重点:注释中的数据库语句

Dim objconnection,objRecordset,objcommand,strsql
Dim Datetime,Tag,TagName,Value

Datetime = HMIRuntime.Tags("T_Datetime").Read
Tag = HMIRuntime.Tags("T_Tag").Read
TagName = HMIRuntime.Tags("T_TagName").Read
Value = HMIRuntime.Tags("T_Value").Read

'打开数据库 
Set  objconnection=CreateObject("ADODB.connection")
     objconnection.connectionstring="Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=Test;;Data Source=WSES\WINCC;"   
     objconnection.open
Set  objcommand=CreateObject("ADODB.command")
Set  objRecordset=CreateObject("ADODB.Recordset")


'数据库语句
strsql = "INSERT INTO [Test].[dbo].[DataTableTest] ([Datetime], [Tag], [TagName], [Value])" 
strsql = strsql & " VALUES ('" & Datetime & "', '" & Tag &"', '" & TagName & "', '" & Value & "')"

Msgbox "增加完成"
     objcommand.activeconnection=objconnection
     objcommand.commandtext=strsql
Set  objRecordset=objCommand.Execute


'关闭数据库
 Set objcommand=Nothing
     objconnection.close
 Set objconnection=Nothing
 Set objRecordset=Nothing

3.3 修改功能的代码

Dim objconnection,objRecordset,objcommand,strsql
Dim ID,Datetime,Tag,TagName,Value	'定义变量

'把WinCC的变量传递给本程序内的变量
ID = HMIRuntime.Tags("T_ID").Read
Datetime = HMIRuntime.Tags("T_Datetime").Read
Tag = HMIRuntime.Tags("T_Tag").Read
TagName = HMIRuntime.Tags("T_TagName").Read
Value = HMIRuntime.Tags("T_Value").Read

'打开数据库 
Set  objconnection=CreateObject("ADODB.connection")
     objconnection.connectionstring="Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=Test;;Data Source=WSES\WINCC;"   
     objconnection.open
Set  objcommand=CreateObject("ADODB.command")
Set  objRecordset=CreateObject("ADODB.Recordset")



'数据库更新语句
strsql ="UPDATE [Test].[dbo].[DataTableTest] SET [Datetime]= '" & Datetime &"', [Tag] = '" & Tag & "', [TagName] = '" & TagName & "', [Value] = " & Value & " WHERE ([ID] = " & ID & ")" 

MsgBox "修改完成"

     objcommand.activeconnection=objconnection
     objcommand.commandtext=strsql
Set  objRecordset=objCommand.Execute
	
'关闭数据库
 Set objcommand=Nothing
     objconnection.close
 Set objconnection=Nothing
 Set objRecordset=Nothing

3.4 删除功能的代码

Dim objconnection,objRecordset,objcommand,strsql
Dim ID,recordsCount

ID = HMIRuntime.Tags("T_ID").Read

'打开数据库 
Set  objconnection=CreateObject("ADODB.connection")
     objconnection.connectionstring="Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=Test;;Data Source=WSES\WINCC;"   
     objconnection.open
Set  objcommand=CreateObject("ADODB.command")
Set  objRecordset=CreateObject("ADODB.Recordset")

'数据库查询语句
strsql ="SELECT * FROM [Test].[dbo].[DataTableTest] WHERE ID = " & ID

'查询记录数
objRecordset.Open strsql,objconnection,1,3
recordsCount = objRecordset.RecordCount

'数据库删除数据
If (recordsCount > 0) Then 
	strsql ="DELETE FROM [Test].[dbo].[DataTableTest] WHERE [ID] = " & ID 
	MsgBOX "删除完成"
Else 
	Msgbox "此条数据已删除"
End If 

     objcommand.activeconnection=objconnection
     objcommand.commandtext=strsql
Set  objRecordset=objCommand.Execute

'关闭数据库
 Set objcommand=Nothing
     objconnection.close
 Set objconnection=Nothing
 Set objRecordset=Nothing

3.5 查询功能的代码

Dim objconnection,objRecordset,objcommand,strsql
Dim T_ID_A

T_ID_A = HMIRuntime.Tags("T_ID_A").read

'打开数据库 
Set  objconnection=CreateObject("ADODB.connection")
     objconnection.connectionstring="Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=Test;Data Source=WSES\WINCC;"   
     objconnection.open
Set  objcommand=CreateObject("ADODB.command")
Set  objRecordset=CreateObject("ADODB.Recordset")

'数据库查询语句
strsql ="SELECT [ID],[Datetime],[Tag],[TagName],[Value]  FROM [Test].[dbo].[DataTableTest]"
strsql = strsql & " WHERE ID = '" & T_ID_A & "'"

     objcommand.activeconnection=objconnection
     objcommand.commandtext=strsql
Set  objRecordset=objCommand.Execute

'查询的数据传送给WinCC的内部变量
HMIRuntime.Tags("T_ID").write objRecordset.fields("ID").value
HMIRuntime.Tags("T_Datetime").write objRecordset.fields("Datetime").value
HMIRuntime.Tags("T_Tag").write objRecordset.fields("Tag").value
HMIRuntime.Tags("T_TagName").write objRecordset.fields("TagName").value
HMIRuntime.Tags("T_Value").write objRecordset.fields("Value").value


'关闭数据库
 Set objcommand=Nothing
     objconnection.close
 Set objconnection=Nothing
 Set objRecordset=Nothing

 

  • 3
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
WinCC 7.5是西门子公司的一款专业的监控和数据管理软件,它可以与SQL Server数据库进行读写操作。通过WinCC 7.5,我们可以使用现成的工具和功能来连接和管理SQL Server数据库,实现数据的读取和写入。 首先,我们需要在WinCC 7.5中配置数据库连接。在WinCC Explorer中选择相应的项目,右键点击“数据库”节点,选择“添加数据库连接”来添加一个新的数据库连接。在弹出的对话框中,选择SQL Server数据库类型,并输入数据库的相关信息,如服务器名称、登录凭据等。完成配置后,我们可以在WinCC中使用该数据库连接。 在WinCC 7.5中读取SQL Server数据库数据通常使用VBScript等编程语言来实现。我们可以通过编写脚本来执行查询语句,获取所需的数据,并进行相应的处理和展示。WinCC 7.5提供了可视化的编程环境,方便我们编写和调试脚本。 除了读取数据外,WinCC 7.5还可以将数据写入SQL Server数据库。通过编写相应的脚本,我们可以将实时数据、报警信息等写入数据库,实现数据的存储和管理。根据需要,我们可以选择合适的方式来执行数据的批量写入或逐条写入。 总结来说,WinCC 7.5可以实现与SQL Server数据库的读写操作。通过配置数据库连接、编写脚本等方式,我们可以方便地读取和写入数据,并将其用于监控和数据管理等应用中。这使得WinCC 7.5成为了一个功能强大的工具,满足了广泛的监控和控制需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值