求助:数据集在画面和全局脚本的传递

已锁定

xthuaqiang

  • 帖子

    41
  • 精华

    0
  • 被关注

    1

论坛等级:游士

注册时间:2008-03-02

普通 普通 如何晋级?

求助:数据集在画面和全局脚本的传递

842

2

2012-01-23 18:08:33

WinCC VBs cript中的Dataset的使用问题
******************************************************************************
目的:从变量记录中取出数据到数据集中,通过定时出发的全局脚本和记录集的移动把变量顺序写入另外的变量中。
遇到问题:怎样把获得的记录集传递到全局脚本中。(Dataset获得的成员能在不同画面中传递,而不能传递到全局脚本中)
下面是脚本和脚本调试器的运行错误提示。
*******************************************************************************
Main中按钮SETA的OnClick
*******************************************************************************
其中S_D,S_T,E_D,E_T为日历控件

‘建立连接并获取记录集,将记录集加到Dataset中

Sub OnClick(ByVal Item)
Dim x2
Set x2=HMIRuntime.Tags("@DatasourceNameRT")
Dim c_S_D,c_S_T,c_E_D,c_E_T,c_T1,c_T2,c_T3,c_T4
Set c_S_D=ScreenItems("S_D")
Set c_S_T=ScreenItems("S_T")
Set c_E_D=ScreenItems("E_D")
Set c_E_T=ScreenItems("E_T")
Set c_T1=ScreenItems("Txt1")
Set c_T2=ScreenItems("Txt2")
Set c_T3=ScreenItems("Txt3")
Set c_T4=ScreenItems("Txt4")
Dim strCNN,strSQL
Dim Time_Begin,Time_End
Time_Begin=FormatDateTime(c_S_D.Value,2)+" "+FormatDateTime(c_S_T.Value,3)
Time_End=FormatDateTime(c_E_D.Value,2)+" "+FormatDateTime(c_E_T.Value,3)
c_T1.Text=Time_Begin
c_T2.Text=Time_End
Time_Begin=DateAdd("h",-8,Time_Begin)
Time_End=DateAdd("h",-8,Time_End)
'sPro = "Provider=WinCCOLEDBProvider.1;"
'sDsn = "Catalog="
'sDsn =sDsn & tagdb.Read & ";"
'sSer = "Data Source=.\WinCC"
'lscon = sPro & sDsn & sSer
strCNN= "Provider=WinCCOLEDBProvider.1;Catalog="
strCNN=strCNN & x2.Read & ";Data Source=.\WinCC"
strSQL="Tag:R,('ProcessValueArchive\F_V';'ProcessValueArchive\F_V_1')," & Time_Begin
'strSQL="Tag:R,(1;2),'2011-12-29 8:30:00.000','2011-12-29 8:31:00.000'"
strSQL=strSQL & "," & Time_End
c_T3.Text=strCNN
c_T4.Text=strSQL
Dim hCNN,hCOM,hRS
Set hCNN=CreateObject("ADODB.Connection")
Set hRS=CreateObject("ADODB.Recordset")
hCNN.ConnectionString=strCNN
hCNN.CursorLocation = 3
hCNN.Open
' 2.2 Use command text for query
Set hCOM = CreateObject("ADODB.Command")
hCOM.CommandType = 1
Set hCOM.ActiveConnection =hCNN
hCOM.CommandText = strSQL
Set hRS = hCOM.Execute
hRS.movefirst
Dim c_T5
Set c_T5=ScreenItems("Txt5")
c_T5.Text=FormatNumber(hRS.Fields(2).Value, 4)
'HMIRuntime.DataSet.Add "PCNN",hCNN
HMIRuntime.DataSet.Add "PRS",hRS
Dim bt
Set bt=HMIRuntime.Tags("B_V")
bt.Write 1
End Sub
根据用日历控件取变量记录的起始和结束时间,建立连接和记录集,并添加到Dataset中以备其他VBS脚本调用。

*****************************************************************************
pic1中按钮UP 的OnClick
*****************************************************************************

‘通过movenext移动记录,并把记录中值写入相应变量中

Sub OnClick(ByVal Item)
Dim s1
Set s1=HMIRuntime.DataSet("PRS").Value
Dim t1
Set t1=ScreenItems("stxt2")
If Not s1.eof Then
s1.movenext
End If
t1.Text=FormatNumber(s1.Fields(2).Value, 4)
'HMIRuntime.DataSet.Remove("PRS")
End Sub
能正常进行记录移动。(如下图所示)


******************************************************************************
全局脚本Aktion2.Bac
******************************************************************************

‘通过movenext移动记录,并把记录中值写入相应变量中

Option Explicit
Function action
'On Error Resume Next
Dim s1,tf
Set s1=HMIRuntime.DataSet("PRS").Value
Dim t1
Set t1=HMIRuntime.Tags("F_V_3")
If Not s1.eof Then
s1.movenext
End If
t1.Write FormatNumber(s1.Fields(2).Value, 4)
End Function

画面和全局脚本中的Set s1=HMIRuntime.DataSet("PRS").Value同样指令为什么画面之间可以传递,不能从画面传递到全局脚本中。
希望各位专家给予指导。
谢谢!
求助:数据集在画面和全局脚本的传递 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32931条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。