搬家第五天-93.Wincc V7.3 项目模块2-数据表查询

我们在使用Wincc过程中,可能需要多次查询数据库,这些功能相似的代码其实可以做成function或者sub反复调用,节省代码编写时间,也便于统一修改 ,这种思路来自于和QQ群友Believe i can fly(244382639)的交流,在此对他表示感谢。funtion和sub代码参考借鉴了Believe i can fly同事的程序,在此对其表示感谢。同时给wincc技术交流QQ群233861234做一个宣传,该群几乎无商业广告,纯粹技术交流,欢迎加入。

     在wincc全路脚本新建一个vbs项目程序SearchTable,写入以下代码:

Sub SearchTable(report,DBName,ssql)
Dim ors,ocom,scon,conn
Dim PCName
Set PCName=HMIRuntime.Tags("@LocalMachineName")
scon="Provider = SQLOLEDB.1;Integrated Security=SSPI;Persist SecurityInfo=False;Initial Catalog ='" _
     & DBName & "';Data Source = " & PCName.Read  & "\WINCC"
Set conn=CreateObject("ADODB.Connection")
conn.ConnectionString=scon
conn.Cursorlocation=3
conn.open
Set ors=CreateObject("ADODB.RecordSet")
Set ocom=CreateObject("ADODB.Command")
ocom.commandtype=1
Set ocom.ActiveConnection=conn
ocom.CommandText=ssql
Set ors=ocom.Execute
Set report.datasource=ors
If err.number<>0 Then
   Msgbox "error code:" & CStr(err.number) & "error source:" & CStr(err.source) & "error description:" & err.description
   err.clear
End If
End Sub

 

      在画面上放置一个DTPicker控件,名字修改为DT,放置一个MSHFGrid控件,名字修改为Report,房子一个查询按钮,在按钮的鼠标点击事件中添加以下VBS脚本(还是以查询用户归档数据表为例)

Sub OnClick(ByVal Item)                  
Dim DBName,ssql,scon,conn
Dim Report,DT
Dim sYear,sMonth,sDay,sDate
Set DT=ScreenItems("DT")
Set Report=ScreenItems("Report")
Set DBName=HMIRuntime.Tags("@DatasourceNameRT")
sYear=Year(DT.Value)
sMonth=Month(DT.Value)
sDay=Day(DT.Value)
sDate=sYear & "/" & sMonth & "/" & sDay
ssql="select Curdate as '日期',Curtime as '时间',FT101 as '流量1',FT102 as '流量2',FT103 as '流量3'," _
    & "PT101 as '压力1',PT102 as '压力2',PT103 as '压力3',TT101 as '温度1',TT102 as '温度2',TT103 as '温度3'," _
    & "LT101 as '液位1',LT102 as '液位2',LT103 as '液位3' from UA#UA where Curdate='" & sDate & "'"
SearchTable report,DBName.Read ,ssql
End Sub

posted @ 2021-02-02 10:38  来自金沙江的小鱼  阅读(780)  评论(0)    收藏  举报