我用wincc 做报表的时候,想通过前台输入四个字段往SQL里有个产品批次库表里写数据,按一下按钮写一次,要求是批次号不能重复,我在SQL表里做了限制是不能重复的,但在脚本里无法判断也不知道怎么判断字符串里的数字错误(有重复)执行程序时,wincc会报错,如果点取消,程序会停止执行,再次再启动不了,如果停止了怎么也启动不了,除非重启WINCC ,停止执行后就是输入不重复的数字也不会往表写东西,
我的问题 是在脚本里的什么地方加个判断语句就是字符串的返回值错误的意思,我输出个提示框有重复重新输入,点确定可重新输入。不要让那些乱七八遭的调试错误的提示出来,我在wincc里把提示和脚本调试时关了,输入重复倒是什么也不弹,但是也不会执行,也不会写成功数据。
1.jpg
2.jpg
3.jpg
我的写入脚本代码如下,
Option Explicit
Function action
'On Error Resume Next '脚本出现错误,跳出
'在VBS脚本中,WINCC的变量不能直接使用,所以需要定义内部变量,获取到WINCC的变量
Dim EndB,First
EndB = HMIRuntime.Tags("P0").Read '读取停止标志
If EndB=1 Then '设备停止时,执行存储数据
'定义数据库连接,SQL脚本执行等,不需要变动
Dim objConnection
Dim strCon
Dim strSQL
Dim objCommand
'strCon= "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=20140226;Initial Catalog=WINCC;Data Source=.\WINCC" 'SQL用户名密码登录
strCon= "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=WINCC;Data Source=.\WINCC"
Dim Data01,Data02,Data03
Data01 = HMIRuntime.Tags("HMI-IN_PRODUCT_NUM").Read
Data02 = HMIRuntime.Tags("HMI-IN_PRODUCT_NAME").Read
Data03 = HMIRuntime.Tags("HMI-IN_PRODUCT_WEIGHT").Read
strSQL="INSERT INTO weight (product_num,product_name,product_weight) VALUES ('"&Data01&"','"&Data02&"','"&Data03&"')"
Set objConnection= CreateObject("ADODB.Connection") '创建连接对象
objConnection.ConnectionString= strCon '连接对象赋值
objConnection.Open '打开数据库连接
Set objCommand= CreateObject("ADODB.Command") '创建执行对象
With objCommand
.ActiveConnection= objConnection
.CommandText= strSQL
End With
objCommand.Execute '执行SQL命令,更新数据库
Set objCommand= Nothing '清空Command命令
objConnection.Close '关闭数据库连接
Set objConnection= Nothing
MsgBox "插入成功" '清空数据库连接字符串
End If
End Function