Wincc,SQL,报表示例

        数据库连接的示例,大部分借鉴来得。网上很多。把数据库的名称和表的名称改一下就能连接成功了。下面是写数据到数据库

Sub OnClick(ByVal item)
'提示:
' 1. 使用 <CTRL+SPACE> 或 <CTRL+I> 快捷键打开含所有对象和函数的列表
' 2. 使用 HMI Runtime 对象写入代码。
'  示例:HmiRuntime.Screens("Screen_1")。
' 3. 使用 <CTRL+J> 快捷键创建对象引用。
'从此位置起写入代码:
Dim sSql
Dim sCom
Dim oRs
Dim conn
Dim oCom
Dim Con
Dim data1,data2,data3,sheet
'读取WINCC变量
data1=HMIRuntime.Tags ("number").Read 
'data2=HMIRuntime.Tags ("name").Read 
data3=HMIRuntime.Tags ("age").Read 
'连接数据库,此处为数据库连接的标准语法结构。
Con="Provider=SQLOLEDB.1; Integrated Security =SSPI;Persist Security Info=False; Initial Catalog=sqltest2;Data Source=DESKTOP-0OKQO58\WINCC"

Set conn=CreateObject("ADODB.Connection")
conn.ConnectionString= Con
conn.CursorLocation=3
conn.Open
sheet="test_6"
sSql="insert into "&sheet&" VALUES ('"&Now&"','"&data1&"','"&data3&"');"    '动态写入表内
MsgBox "。。。。。"'(如果和数据库通讯成功,弹出信息)
'

'下面的部分语句,也是数据库的标准语法,对数据库进行操作时,所需要的属性和方法。
'Initial Catalog= 后面为数据库名称,insert into 后面为数据表名称,
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


End Sub

 为了灵活启停做了一个单按钮启停脚本,代码如下

Sub OnClick(ByVal item)
'提示:
' 1. 使用 <CTRL+SPACE> 或 <CTRL+I> 快捷键打开含所有对象和函数的列表
' 2. 使用 HMI Runtime 对象写入代码。
'  示例:HmiRuntime.Screens("Screen_1")。
' 3. 使用 <CTRL+J> 快捷键创建对象引用。
'从此位置起写入代码:
Dim btn 
Set btn = HMIRuntime.Screens("画面_1").ScreenItems("按钮_5")
If(btn.TextOff="开始") Then
	HMIRuntime.Tags("zanting_test").Write(1)
	btn.TextOff="暂停"
Else
	HMIRuntime.Tags("zanting_test").Write(0)
	btn.TextOff="开始"
End If


End Sub

连接SQL数据库查找数据,用了两个ActiveX控件:Microsoft Date and Time Picker Control 6.0

和Microsoft FlexGrid Control,Version 6.0

第二个控件你下载一下excel,ms公司的。就有了。

Sub OnClick(ByVal item)
'提示:
' 1. 使用 <CTRL+SPACE> 或 <CTRL+I> 快捷键打开含所有对象和函数的列表
' 2. 使用 HMI Runtime 对象写入代码。
'  示例:HmiRuntime.Screens("Screen_1")。
' 3. 使用 <CTRL+J> 快捷键创建对象引用。
'从此位置起写入代码:
On Error Resume Next
Dim sSql
Dim sCom
Dim oRs
Dim conn
Dim oCom
Dim Con
Dim data1,data2,data3

Dim data4,data5,data6,data7,data8
'下面的data7变量为在HMI所输入的编号查询变量,结合下面的SELECT语法,将输入与表中编号比较,等于则取出该行值。
data7=HMIRuntime.Screens("画面_1").ScreenItems("DTPicker_1").Value
data8=HMIRuntime.Screens("画面_1").ScreenItems("DTPicker_2").Value
MsgBox data7
'连接数据库
Con="Provider=SQLOLEDB.1; Integrated Security =SSPI;Persist Security Info=False; Initial Catalog=sqltest2;Data Source=DESKTOP-0OKQO58\WINCC"
Set conn=CreateObject("ADODB.Connection")
conn.ConnectionString= Con
conn.CursorLocation=3
conn.Open
MsgBox "。。。。。"
'读取数据库
'下面语句为查询数据库SELECT语句
sSql="SELECT * FROM Table_test WHERE 时间 between '"&data7&"' and '"&data8&"';"
'FROM 后面为读取的数据库名称
'标准的数据库操作属性和方法
Set oRs=CreateObject("ADODB.Recordset")
Set oCom=CreateObject("ADODB.Command")
Set oCom.ActiveConnection=conn
oCom.CommandType=1
oCom.CommandText=sSql
Set oRs=oCom.Execute
Dim obj_excel,i,j
Set obj_excel=HMIRuntime.Screens("画面_1").ScreenItems("MSFlexGrid_1")
obj_excel.Rows=oRs.recordcount
obj_excel.Cols=3
Dim duiqi
For duiqi=1 To 3
    obj_excel.ColAlignment(duiqi)=4
    Next
MsgBox oRs.recordcount
For i=0 To oRs.recordcount
    For j=0 To 3
    obj_excel.TextMatrix(i,j) = Trim(oRs.fields(j).value)'用trim是因为读出来的数据后面带有空格不方便设置单元格格式。
    Next
    oRs.movenext
    Next 
data1.Read
data1.Write data4
data2.Read
data2.Write data5
'数据库操作完的结束语句,为标准格式语句。
Set oRs=Nothing
conn.Close
Set conn=Nothing

End Sub

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值