1、例程:Wincc 读写 SQLServer 数据库一、在数据库中建立数据库文件,文件名为“读写数据库” ,在数据库中建立新的表,命名为“个人信息”分别建立编号、姓名、年龄。二、数据库中建立表后,在 wincc 中建立与数据库中类型相同的变量,变量类型相同在读写数据时很重要。在图形编辑器中新建画面,并在画面中增加三个输入输出域,并连接变量。三、添加两个按钮控件,分别命名为写数据、读数据1、在写数据按钮中写入一下 VBS 脚本wincc 变量写入数据库定义变量Dim sCon Dim sSql Dim oRs Dim conn Dim oComDim ConDim Data1, Data2, Da
2、ta3读取 wincc 变量Data1=HMIRuntime.tags(“编号 “).readData2=HMIRuntime.tags(“姓名 “).readData3=HMIRuntime.tags(“年龄 “).read连接数据库Con=“Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=读写数据库;Data Source=.WINCC“Set conn = CreateObject(“ADODB.Connection“)conn.ConnectionStrin
3、g = Conconn.CursorLocation = 3conn.Open写入数据库sSql=“insert into 个人信息 VALUES(“ “Set oRs = CreateObject(“ADODB.Recordset“)Set oCom = CreateObject(“ADODB.Command“)Set oCom.ActiveConnection = connoCom.CommandType = 1oCom.CommandText = sSqlSet oRs = oCom.ExecuteSet oRs = Nothingconn.CloseSet conn = Nothing
4、Dim sCon Dim sSql Dim oRs Dim conn Dim oComDim ConDim Data1, Data2, Data3读取 wincc 变量Data1=HMIRuntime.tags(“编号 “).readData2=HMIRuntime.tags(“姓名 “).readData3=HMIRuntime.tags(“年龄 “).read连接数据库Con=“Provider=SQLOLEDB.1;nitial Catalog=读写数据库;Data Source=panzhiyou;uid=sa;pwd=panzhiyou“Set conn = CreateObject
5、(“ADODB.Connection“)conn.ConnectionString = Conconn.CursorLocation = 3conn.Open写入数据库sSql=“insert into 个人信息 VALUES(“ “Set oRs = CreateObject(“ADODB.Recordset“)Set oCom = CreateObject(“ADODB.Command“)Set oCom.ActiveConnection = connoCom.CommandType = 1oCom.CommandText = sSqlSet oRs = oCom.ExecuteSet o
6、Rs = Nothingconn.CloseSet conn = Nothing在实际项目中需要修改的只有定义变量时增加或减少数据 data 的个数,Data1=HMIRuntime.tags(“编号 “).read 中的变量名,数据库的名字,以及数据库的表名2、在读数据按钮中写入一下 VBS 脚本读取数据库变量到 wincc 变量定义变量Dim sCon Dim sSql Dim oRs Dim conn Dim oComDim ConDim Data1Dim Data2Dim Data3Dim data4Dim data5Dim data6Dim data7data7=HMIRuntime
7、.tags(“编号“).readCon=“Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=读写数据库;Data Source=.WINCC“Set conn = CreateObject(“ADODB.Connection“)conn.ConnectionString = Conconn.CursorLocation = 3conn.OpensSql=“SELECT * FROM 个人信息 WHERE 编号=“Set oRs = CreateObject(“ADOD
8、B.Recordset“)Set oCom = CreateObject(“ADODB.Command“)Set oCom.ActiveConnection = connoCom.CommandType = 1oCom.CommandText = sSqlSet oRs = oCom.ExecuteSet oRs = Nothingdata4=oRs.Fields(0).Valuedata5=oRs.Fields(1).Valuedata6=oRs.Fields(2).Valuedata1.write data4Set data1=HMIRuntime.Tags(“编号“)Set data2=
9、HMIRuntime.Tags(“姓名“)Set data3=HMIRuntime.Tags(“年龄“)data1.Read data1.Write data4data2.Read data2.Write data5data3.Read data3.Write data6Set oRs = Nothingconn.CloseSet conn = NothingDim sCon Dim sSql Dim oRs Dim conn Dim oComDim ConDim Data1Dim Data2Dim Data3Dim data4Dim data5Dim data6Dim data7data7=
10、HMIRuntime.tags(“编号“).readCon=“Provider=SQLOLEDB.1;nitial Catalog=读写数据库;Data Source=panzhiyou;uid=sa;pwd=panzhiyou“Set conn = CreateObject(“ADODB.Connection“)conn.ConnectionString = Conconn.CursorLocation = 3conn.OpensSql=“SELECT * FROM 个人信息 WHERE 编号=“Set oRs = CreateObject(“ADODB.Recordset“)Set oCo
11、m = CreateObject(“ADODB.Command“)Set oCom.ActiveConnection = connoCom.CommandType = 1oCom.CommandText = sSqlSet oRs = oCom.ExecuteSet oRs = Nothingdata4=oRs.Fields(0).Valuedata5=oRs.Fields(1).Valuedata6=oRs.Fields(2).Valuedata1.write data4Set data1=HMIRuntime.Tags(“编号“)Set data2=HMIRuntime.Tags(“姓名“
12、)Set data3=HMIRuntime.Tags(“年龄“)data1.Read data1.Write data4data2.Read data2.Write data5data3.Read data3.Write data6Set oRs = Nothingconn.CloseSet conn = Nothing读取数据时,按照编号读取数据,在实际中需要修改数据库语言。运行 wincc,再编号输入输出域中输入编号,点击读数据按钮,得到需要的数据210216 连退检查台 wincc 画面显示钢卷信息的程序:前提条件:需要打开 SQL2005 添加 SQL2000 的服务器 添加情况如图:
13、注:Authentication 选项是选择验证模式的。和配置的服务器有关系。一般有两种验证模式。现场的 SQL2000 的服务器都是以上图示的验证方式。用户名 sa,密码 123。而WINCC 的 SQL2005 服务器都是另一种身份验证。不需要写用户名和密码。在画面上添加一个 listview 控件,对象名称改为 listview1;设置其属性,代码可以,直接设置也可以。此例子为直接设置。设置的内容包括:1. view 属性设为 32. ColumnHeaders 属性添加显示的列名字,设置列的宽度。注意列的个数要和你程序里想显示的每一项的数据个数一致。而且列名也要和每一项的数据显示一致。
14、此程序列名有:序号,上卷钢卷号,钢带厚度,钢带宽度,焊缝距离。对应的数据库是:TuiHuo 表是:上卷钢卷信息表。3. 其余的 listview 属性的改变可视具体情况进行修改。对应代码:Sub OnClick(ByVal Item) Dim sPro,sDsn,sSer,sCon,sSql,oRS,conn,oCom,oItem,m,n,s,i,oListsPro=“Provider=SQLOLEDB;“sDsn=“Initial Catalog=TuiHuo;“sSer=“Data Source=ZHAOLINA;uid=sa;pwd=123;“ sCon= sPro+sDsn+sSers
15、Sql=“SELECT * FROM 上卷钢卷信息表“Set conn=CreateObject(“ADODB.Connection“)conn.ConnectionString=sConconn.CursorLocation=3conn.OpenSet oRs=CreateObject(“ADODB.Record“)Set oCom=CreateObject(“ADODB.Command“) oCom.CommandType=1Set oCom.ActiveConnection=connoCom.CommandText=sSqlSet oRs=oCom.Executen=oRs.Record
16、CountMsgBox(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.
17、ColumnHeaders.Add ,CStr(oRs.Fields(10).Name),100 olist.ColumnHeaders.Add ,CStr(oRs.Fields(11).Name),100 If(n0) ThenoRs.MoveFirstEnd Ifm=0Do While Not oRs.EOFm=m+1Set 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.MoveNextLoopMsgbox(“查询成功“)oRs.Closeset oRs=Nothingconn.Closeset conn=Nothingend sub