WinCC 7.0 用户归档+Listview控件 制作报表(二)


查询

  前一篇中我们已经按照需求建立了所需变量的用户归档,这样WINCC会自动将这些变量按照设定的存储规则存放到SQL数据库中。而对历史数据进行查询,就是对SQL数据库正确操作以导出我们需要的数据。通过VBS语言对按钮对象编辑一个脚本程序就可以方便地实现此功能,这里我们给“查询”按钮的事件属性——“鼠标动作”中添加VBS脚本。

1、定义连接字符串
  我们是可以通过ODBC方便地访问数据库的。使用VBS连接数据库,我们要知道以下信息:数据库名,数据源名。我们打开SQL数据库,这时候看到Databases下有很多的数据库,WINCC建立的数据库名是有规则的,一般是“CC_工程名_年_月_日_时_分_秒R”。那么我们就可以这样定义连接字符串:

'定义连接字符串
Dim sPro,sDsn,sSer,sCon
sPro = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=false;"
sDsn = "Initial Catalog=CC_test_17_12_18_11_29_28R;"
sSer = "Data Source=ADMIN-PC\WINCC"
sCon = sPro + sDsn + sSer

2、定义查询命令
  可以通过SQL语句来实现查询命令首先要获取两个DTPicker控件中的时间,分别表示起、止时间,经过比较控件日期来判断日期查询日期是否符合条件(起始日期 不能大于 终止日期),最后再用select语句来查询dt1和dt2两个日期之间的记录。
  需要注意的是,系统短日期需要修改成“yyyy/MM/dd”格式,Win7默认的是“yyyy/M/d”格式,不然在查询操作比较日期时,会出现意想不到的问题 O(∩_∩)O~,可根据实际需要来更改时间和日期格式。

系统短日期格式
Dim date1,date2,D1,D2
Set D1=ScreenItems("DTP1")   'DTP1控件获取的为系统短日期/时间格式 "2017/12/28 9:00:00"
Set D2=ScreenItems("DTP2")
date1 = Split(D1.value," ",-1,1)
date2 = Split(D2.value," ",-1,1)
Dim dt1,dt2
dt1 = CStr(date1(0))&" "&"00:00:00"
dt2 = CStr(date2(0))&" "&"23:59:59"
 
'比较两个日期得大小   
If DateDiff("d", CDate(D1.value), CDate(D2.value)) < 0 Then
   MsgBox "起始日期: "& date1(0) &"   大于  终止日期: "& date2(0), vbOKOnly + vbExclamation, "警告" 
   Exit Sub
End If

'定义查询命令,查找符合条件的信息,位于两个日期之间的信息
Dim sSql
sSql = "select * from UA#test3 where act_time between '"& dt1 & "'" & "and '" & dt2 & "'"

3、连接数据库
  定义好了连接字符串与查询字符串,我们就可以访问SQL数据库了。

'建立连接
Dim oRs,oCom,conn,m

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
m = oRs.RecordCount    'm变量用于返回有效记录的数目

4、用ListView控件显示数据
  这里我用ListView控件来显示数据,也可以用其他控件来显示。首先设置控件的显示方式,设置好表头。

'定义ListView控件
Dim olist
Set oList = ScreenItems("LT1")
    oList.View =3 '设置外观为报表形式
    oList.GridLines =True '显示网格线
    oList.ColumnHeaders.Clear '清除原有表头
With oList.ColumnHeaders '设置表头,中间对齐
    .add ,,"刷卡记录编号",80
    .add ,,"刷卡时间",150
    .add ,,"车号",100
End With 
    oList.ListItems.Clear  '清除原有数据    

'向istView控件中循环写入查询数据
MsgBox "查询结果: 共有"& m &"条记录"   '提示框

  向ListView控件中循环写入查询数据

If (m > 0) Then
    oRs.MoveFirst

    Dim i
    For i=1 To m
'subitems(1)指第1列,oRs.fields(3)指数据库表中的第3列,计数均从0开始,第0列固定为数据库表中的ID
        With oList.listitems.add
            .text=CStr(oRs.fields(0).value)
            .subitems(1)=CStr(oRs.fields(3).value)
            .subitems(2)=CStr(oRs.fields(4).value)
        End With
        oRs.movenext
    Next
    oRs.Close
Else
End If

5、断开数据库
  向ListView控件写完数据后,要记得断开数据库连接,释放资源。

'断开数据库
Set oRs = Nothing
conn.Close
Set conn = Nothing

  
  完成查询的VBS脚本后,保存项目,通过step7的仿真写入部分数据,然后运行WinCC画面,可以看到实际的效果。

查询
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容