VB查询历史数据某一时间段内的最大值

现在要通过一个查询按钮查询一段时间内历史归档数据的最大值,并将最大值输出到画面中显示,我用VB脚本实现,脚本程序如下所示:
Sub OnClick(Byval Item)                                                    

Dim sPro,sDsn,sSer,sCon,sSql

Dim conn,oRs ,oCom,oList, oItem

Dim V,Max,tem

Dim m,n,s,nRec

Dim BiginTime,EndTime

Set BiginTime=HMIRuntime.tags("BeginTime")

Set EndTime =HMIRuntime.tags("EndTime")

sPro="Provider=WinCCOLEDBProvider.1;"

sDsn=" Catalog=CC_ART_10_04_30_23_55_43R;"

sSer ="Data Source=wangkou.\WinCC"

sCon= sPro+ sDsn+ sSer

sSql = "TAG:R,'DIANDU\1#KWH','2010-05-02 08:38:00.000','2010-05-02 08:42:00.000'"

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

n= oRs.RecordCount

If (n>0) Then

oRs.movefirst

n=0

Max= oRs.Fields(2).Value

Do While Not oRs.EOF

n=n+1

V= oRs.Fields(2).Value

If V>Max Then Max=V

oRs.MoveNext

Loop

oRs.Close

If(n>1) Then

Set tem=HMIRuntime.tags("tag0").read

    max.write tem

Else

HMIRuntime.Trace"selection return nofields" &vbNewLine

End If

End If

conn. Close
Set oRs=Nothing
Set oCom=Nothing
Set conn =Nothing

End Sub
现在的问题是在画面显示中没有数据显示。
说明:
查询的时间为:2010-05-02  16:38:00.000至2010-05-02 16:42:00.000'"
tag0为wincc画面中要查看的变量。

归档名称:diandu 归档数据为:1#kwh
有哪位大侠知道以上脚本问题出在哪儿呀?

最佳答案

1) 语句中有3个if,但只有两个end if
2) max.write tem应该是 tem.write max
3) 你可以加上msgbox看脚本执行到哪里停了,再逐个排查。
Set oRs=oCom.execute以下的语句改成:
n= oRs.RecordCount
max=0
If (n>0) Then
oRs.movefirst

Do While Not oRs.EOF

If oRs.Fields(2).Value>Max Then 
   Max=oRs.Fields(2).Value
end if
oRs.MoveNext
Loop
Else
HMIRuntime.Trace"selection return nofields" &vbNewLine
end if
oRs.Close
'dim tem
Set tem=HMIRuntime.tags("tag0").read
    tem.write max
oRs.Close
set tem=nothing
Set oRs=Nothing
Set oCom=Nothing
Set conn =Nothing
End Sub

提问者对于答案的评价:
非常谢谢你的帮忙,不过主要问题不是出在这儿,而是n没有数据输出,始终输出为-1,后来增加了一条指令,就可以了。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc269406.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日 上午6:45
下一篇 2019年6月11日 上午6:46

相关推荐

  • wincc变量关联

    怎样将wincc里面的两个变量关联起来?如:变量a为1时,变量b为1000;变量a为0时,变量b为0 最佳答案 wincc vbs全局脚本:dim mytagm…

    SIMATIC WinCC 2017年6月7日
  • WINCC screen.pdl起始画面修改问题

    如图,screen画面为起始画面 ,我另存了一份screen11画面想自己编辑一个起始画面,但是screen11为起始画面运行起来后导航栏按钮点了后没有反应弹不出画面,请…

    SIMATIC WinCC 2020年11月1日
  • 寻求解决ERP或MES系统远程读取WINCC系统历史数据的解决方案。

    厂区打算上一个ERP系统,远程采集WINCC系统数据,寻求解决方案。越详细越好。感谢。也可邮件联系我,3328688@163.com 问题补充:麻烦谁有Connectivity&n…

    SIMATIC WinCC 2019年6月11日
  • wincc报警功能用画面模板做是否可行

    项目中想一有报警事件,无论当前在何画面都能弹出报警画面。以前的做法是在每个画面中都做个报警小画面,觉得不是太理想。    能否用画面模板+全…

    SIMATIC WinCC 2019年6月11日
  • WinCC输入输出域边框凹陷设置

    WinCC输入输出域,矩形等对象的边框如何设置成凹陷样式,如图片中那样 图片说明:    钻石用户推荐最佳答案 将“输入/输出域”的边框颜色改为白色,然后画两条…

    2021年7月5日
  • WINCC7.2画面怎么加循环

    我想用一个变量,当他等于1时自动打开其他画面, 画面对象里只有“对象更改”和”打开画面”两个加脚本,但是我需要那种在画面中周期执行的,这个要把脚本加在哪啊,各位大神指导一…

    SIMATIC WinCC 2021年7月5日
  • PLC与WINCC数据交换问题

    别人4年前做的项目,因工艺改变需要把原来的数据长度加长,DB10.DBD2在块中定义变量是REAL型,WINCC中定义是16进制,见图,实际显示6位数,想显示7位数,我把WINCC…

    2019年6月11日
  • WINCC7.3数字量怎么做低电平报警

    WINCC7.3数字量怎么做低电平报警,也就是为零的时候报警? 最佳答案 报警记录中报警标签条属性选下降沿产生,也可在最右边竖例中找到对应设置。 提问者对于答案的评价:我试试看 专…

    SIMATIC WinCC 2017年6月11日
  • WINCC中怎样插入自已的图片

    我想在WINCC中插入自已的照片,请各位大侠帮忙指教。 最佳答案 打开画面编辑器,选择对象选项板->智能对象->图形对象,点击查找按钮并选择你保存的BMP文件即可。 提…

    SIMATIC WinCC 2018年12月5日
  • wincc中c脚本

    wincc脚本无法使用,编译时出错老多了,明确一下不是代码的事,大神指点江山! 问题补充:一句代码也没写,就出现这么多错误!我重装了一下,一次好用!再后来又出现这样的错误! 最佳答…

    SIMATIC WinCC 2017年8月24日