例程:
Wincc读写SQLServer数据库
一、在数据库中建立数据库文件,文件名为“读写数据库”,在数据库中建立新的表,命名为“个人信息”分别建立编号、姓名、年龄。
二、数据库中建立表后,在wincc中建立与数据库中类型相同的变量,变量类型相同在读写数据时很重要。在图形编辑器中新建画面,并在画面中增加三个输入输出域,并连接变量。
三、添加两个按钮控件,分别命名为写数据、读数据
1、在写数据按钮中写入一下VBS脚本
wincc变量写入数据库
定义变量
Dim sCon
Dim sSql
Dim oRs
Dim conn
Dim oCom
Dim Con
Dim Data1, Data2, Data3
‘读取wincc变量
Data1=HMIRuntime.tags(\"编号\").read
Data2=HMIRuntime.tags(\"姓名\").read
Data3=HMIRuntime.tags(\"年龄\").read
‘连接数据库
Con=\"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Info=False;Initial Catalog=读写数据库;Data Source=.\\WINCC\"
Set conn = CreateObject(\"ADODB.Connection\")
conn.ConnectionString = Con
conn.CursorLocation = 3
conn.Open
Security
‘写入数据库
sSql=\"insert into个人信息VALUES('\" & Data1 & \"','\" & Data2&\"','\"&Data3&\"');\"
Set oRs = CreateObject(\"ADODB.Recordset\")
Set oCom = CreateObject(\"ADODB.Command\")
Set oCom.ActiveConnection = conn
oCom.CommandType = 1
oCom.CommandText = sSql
Set oRs = oCom.Execute
Set oRs = Nothing
conn.Close
Set conn = Nothing
Dim sCon
Dim sSql
Dim oRs
Dim conn
Dim oCom
Dim Con
Dim Data1, Data2, Data3
'读取wincc变量
Data1=HMIRuntime.tags(\"编号\").read
Data2=HMIRuntime.tags(\"姓名\").read
Data3=HMIRuntime.tags(\"年龄\").read
'连接数据库
Con=\"Provider=SQLOLEDB.1;nitial Catalog=Source=panzhiyou;uid=sa;pwd=panzhiyou\"
Set conn = CreateObject(\"ADODB.Connection\")
conn.ConnectionString = Con
读写数据库;Data
conn.CursorLocation = 3
conn.Open
'写入数据库
sSql=\"insert into个人信息VALUES('\" & Data1 & \"','\" & Data2&\"','\"&Data3&\"');\"
Set oRs = CreateObject(\"ADODB.Recordset\")
Set oCom = CreateObject(\"ADODB.Command\")
Set oCom.ActiveConnection = conn
oCom.CommandType = 1
oCom.CommandText = sSql
Set oRs = oCom.Execute
Set oRs = Nothing
conn.Close
Set conn = Nothing
在实际项目中需要修改的只有定义变量时增加或减少数据data的个数,Data1=HMIRuntime.tags(\"编号\").read中的变量名,数据库的名字,以及数据库的表名
2、在读数据按钮中写入一下VBS脚本
读取数据库变量到wincc变量
定义变量
Dim sCon
Dim sSql
Dim oRs
Dim conn
Dim oCom
Dim Con
Dim Data1
Dim Data2
Dim Data3
Dim data4
Dim data5
Dim data6
Dim data7
data7=HMIRuntime.tags(\"编号\").read
Con=\"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Info=False;Initial Catalog=读写数据库;Data Source=.\\WINCC\"
Set conn = CreateObject(\"ADODB.Connection\")
conn.ConnectionString = Con
conn.CursorLocation = 3
conn.Open
sSql=\"SELECT * FROM 个人信息 WHERE 编号='\"&data7&\"';\"
Set oRs = CreateObject(\"ADODB.Recordset\")
Set oCom = CreateObject(\"ADODB.Command\")
Security
Set oCom.ActiveConnection = conn
oCom.CommandType = 1
oCom.CommandText = sSql
Set oRs = oCom.Execute
'Set oRs = Nothing
data4=oRs.Fields(0).Value
data5=oRs.Fields(1).Value
data6=oRs.Fields(2).Value
'data1.write data4
Set data1=HMIRuntime.Tags(\"编号\")
Set data2=HMIRuntime.Tags(\"姓名\")
Set data3=HMIRuntime.Tags(\"年龄\")
data1.Read
data1.Write data4
data2.Read
data2.Write data5
data3.Read
data3.Write data6
Set oRs = Nothing
conn.Close
Set conn = Nothing
Dim sCon
Dim sSql
Dim oRs
Dim conn
Dim oCom
Dim Con
Dim Data1
Dim Data2
Dim Data3
Dim data4
Dim data5
Dim data6
Dim data7
data7=HMIRuntime.tags(\"编号\").read
Con=\"Provider=SQLOLEDB.1;nitial Catalog=Source=panzhiyou;uid=sa;pwd=panzhiyou\"
Set conn = CreateObject(\"ADODB.Connection\")
conn.ConnectionString = Con
conn.CursorLocation = 3
读写数据库;Data
conn.Open
sSql=\"SELECT * FROM 个人信息 WHERE 编号='\"&data7&\"';\"
Set oRs = CreateObject(\"ADODB.Recordset\")
Set oCom = CreateObject(\"ADODB.Command\")
Set oCom.ActiveConnection = conn
oCom.CommandType = 1
oCom.CommandText = sSql
Set oRs = oCom.Execute
'Set oRs = Nothing
data4=oRs.Fields(0).Value
data5=oRs.Fields(1).Value
data6=oRs.Fields(2).Value
'data1.write data4
Set data1=HMIRuntime.Tags(\"编号\")
Set data2=HMIRuntime.Tags(\"姓名\")
Set data3=HMIRuntime.Tags(\"年龄\")
data1.Read
data1.Write data4
data2.Read
data2.Write data5
data3.Read
data3.Write data6
Set oRs = Nothing
conn.Close
Set conn = Nothing
读取数据时,按照编号读取数据,在实际中需要修改数据库语言。运行wincc,再编号输入输出域中输入编号,点击读数据按钮,得到需要的数据
210216连退检查台wincc画面显示钢卷信息的程序:
前提条件:
需要打开SQL2005 添加SQL2000的服务器 添加情况如图:
注:Authentication选项是选择验证模式的。和配置的服务器有关系。一般有两种验证模式。现场的SQL2000的服务器都是以上图示的验证方式。用户名sa,密码123。而WINCC的SQL2005服务器都是另一种身份验证。不需要写用户名和密码。
在画面上添加一个listview控件,对象名称改为listview1;
设置其属性,代码可以,直接设置也可以。此例子为直接设置。设置的内容包括:
1. view属性设为3
2. ColumnHeaders属性添加显示的列名字,设置列的宽度。注意列的个数要和你程序里想显示的每一项的数据个数一致。而且列名也要和每一项的数据显示一致。
此程序列名有:序号,上卷钢卷号,钢带厚度,钢带宽度,焊缝距离。
对应的数据库是:TuiHuo 表是:上卷钢卷信息表。
3. 其余的listview属性的改变可视具体情况进行修改。
对应代码:
Sub OnClick(ByVal Item)
Dim sPro,sDsn,sSer,sCon,sSql,oRS,conn,oCom,oItem,m,n,s,i,oList
sPro=\"Provider=SQLOLEDB;\"
sDsn=\"Initial Catalog=TuiHuo;\"
sSer=\"Data Source=ZHAOLINA;uid=sa;pwd=123;\"
sCon= sPro+sDsn+sSer
sSql=\"SELECT * FROM 上卷钢卷信息表\"
Set conn=CreateObject(\"ADODB.Connection\")
conn.ConnectionString=sCon
conn.CursorLocation=3
conn.Open
Set oRs=CreateObject(\"ADODB.Record\")
Set oCom=CreateObject(\"ADODB.Command\")
oCom.CommandType=1
Set oCom.ActiveConnection=conn
oCom.CommandText=sSql
Set oRs=oCom.Execute
n=oRs.RecordCount
'MsgBox(n)
Set oList=ScreenItems(\"listview1\")
oList.ListItems.Clear
' oList.View =3
' oList.GridLines =True
' olist.ColumnHeaders.Clear
' olist.ColumnHeaders.Add ,,CStr(oRs.Fields(0).Name),100
' olist.ColumnHeaders.Add ,,CStr(oRs.Fields(1).Name),150
' olist.ColumnHeaders.Add ,,CStr(oRs.Fields(9).Name),100
' olist.ColumnHeaders.Add ,,CStr(oRs.Fields(10).Name),100
' olist.ColumnHeaders.Add ,,CStr(oRs.Fields(11).Name),100
If(n>0) Then
oRs.MoveFirst
End If
m=0
Do While Not oRs.EOF
m=m+1
Set oItem=oList.ListItems.Add()
oItem.text=CStr(oRs.Fields(0).value)
oItem.SubItems(1)=CStr(oRs.Fields(1).value)
oItem.SubItems(2)=CStr(oRs.Fields(9).value)
oItem.SubItems(3)=CStr(oRs.Fields(10).value)
oItem.SubItems(4)=CStr(oRs.Fields(11).value)
oRs.MoveNext
Loop
Msgbox(\"查询成功\")
oRs.Close
set oRs=Nothing
conn.Close
set conn=Nothing
end sub
因篇幅问题不能全部显示,请点此查看更多更全内容