WinCC 7.0 用戶歸檔+Listview控件 制作報表(二)


查詢

??前一篇中我們已經(jīng)按照需求建立了所需變量的用戶歸檔,這樣WINCC會自動將這些變量按照設定的存儲規(guī)則存放到SQL數(shù)據(jù)庫中喧伞。而對歷史數(shù)據(jù)進行查詢,就是對SQL數(shù)據(jù)庫正確操作以導出我們需要的數(shù)據(jù)插掂。通過VBS語言對按鈕對象編輯一個腳本程序就可以方便地實現(xiàn)此功能问潭,這里我們給“查詢”按鈕的事件屬性——“鼠標動作”中添加VBS腳本。

1饼暑、定義連接字符串
??我們是可以通過ODBC方便地訪問數(shù)據(jù)庫的稳析。使用VBS連接數(shù)據(jù)庫,我們要知道以下信息:數(shù)據(jù)庫名弓叛,數(shù)據(jù)源名彰居。我們打開SQL數(shù)據(jù)庫,這時候看到Databases下有很多的數(shù)據(jù)庫撰筷,WINCC建立的數(shù)據(jù)庫名是有規(guī)則的陈惰,一般是“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語句來實現(xiàn)查詢命令首先要獲取兩個DTPicker控件中的時間奴潘,分別表示起、止時間影钉,經(jīng)過比較控件日期來判斷日期查詢日期是否符合條件(起始日期 不能大于 終止日期)画髓,最后再用select語句來查詢dt1和dt2兩個日期之間的記錄。
??需要注意的是平委,系統(tǒng)短日期需要修改成“yyyy/MM/dd”格式奈虾,Win7默認的是“yyyy/M/d”格式,不然在查詢操作比較日期時,會出現(xiàn)意想不到的問題 O(∩_∩)O~肉微,可根據(jù)實際需要來更改時間和日期格式匾鸥。

系統(tǒng)短日期格式
Dim date1,date2,D1,D2
Set D1=ScreenItems("DTP1")   'DTP1控件獲取的為系統(tǒng)短日期/時間格式 "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勿负、連接數(shù)據(jù)庫
??定義好了連接字符串與查詢字符串,我們就可以訪問SQL數(shù)據(jù)庫了劳曹。

'建立連接
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  '創(chuàng)建查詢的命令文本
Set oRs = oCom.Execute
m = oRs.RecordCount    'm變量用于返回有效記錄的數(shù)目

4奴愉、用ListView控件顯示數(shù)據(jù)
??這里我用ListView控件來顯示數(shù)據(jù),也可以用其他控件來顯示铁孵。首先設置控件的顯示方式锭硼,設置好表頭。

'定義ListView控件
Dim olist
Set oList = ScreenItems("LT1")
    oList.View =3 '設置外觀為報表形式
    oList.GridLines =True '顯示網(wǎng)格線
    oList.ColumnHeaders.Clear '清除原有表頭
With oList.ColumnHeaders '設置表頭,中間對齊
    .add ,,"刷卡記錄編號",80
    .add ,,"刷卡時間",150
    .add ,,"車號",100
End With 
    oList.ListItems.Clear  '清除原有數(shù)據(jù)    

'向istView控件中循環(huán)寫入查詢數(shù)據(jù)
MsgBox "查詢結果: 共有"& m &"條記錄"   '提示框

??向ListView控件中循環(huán)寫入查詢數(shù)據(jù)

If (m > 0) Then
    oRs.MoveFirst

    Dim i
    For i=1 To m
'subitems(1)指第1列,oRs.fields(3)指數(shù)據(jù)庫表中的第3列,計數(shù)均從0開始,第0列固定為數(shù)據(jù)庫表中的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蜕劝、斷開數(shù)據(jù)庫
??向ListView控件寫完數(shù)據(jù)后檀头,要記得斷開數(shù)據(jù)庫連接,釋放資源岖沛。

'斷開數(shù)據(jù)庫
Set oRs = Nothing
conn.Close
Set conn = Nothing

??
??完成查詢的VBS腳本后暑始,保存項目,通過step7的仿真寫入部分數(shù)據(jù)烫止,然后運行WinCC畫面蒋荚,可以看到實際的效果。

查詢
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末馆蠕,一起剝皮案震驚了整個濱河市期升,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌互躬,老刑警劉巖播赁,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吼渡,居然都是意外死亡容为,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門寺酪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坎背,“玉大人,你說我怎么就攤上這事寄雀〉寐耍” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵盒犹,是天一觀的道長懂更。 經(jīng)常有香客問我眨业,道長,這世上最難降的妖魔是什么沮协? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任龄捡,我火速辦了婚禮,結果婚禮上慷暂,老公的妹妹穿的比我還像新娘聘殖。我一直安慰自己,他們只是感情好呜呐,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布就斤。 她就那樣靜靜地躺著悍募,像睡著了一般蘑辑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坠宴,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天洋魂,我揣著相機與錄音,去河邊找鬼喜鼓。 笑死副砍,一個胖子當著我的面吹牛,可吹牛的內容都是我干的庄岖。 我是一名探鬼主播豁翎,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼隅忿!你這毒婦竟也來了心剥?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤背桐,失蹤者是張志新(化名)和其女友劉穎优烧,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體链峭,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡畦娄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了弊仪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熙卡。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖励饵,靈堂內的尸體忽然破棺而出驳癌,到底是詐尸還是另有隱情,我是刑警寧澤曲横,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布喂柒,位于F島的核電站不瓶,受9級特大地震影響,放射性物質發(fā)生泄漏灾杰。R本人自食惡果不足惜蚊丐,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望艳吠。 院中可真熱鬧麦备,春花似錦、人聲如沸昭娩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽栏渺。三九已至呛梆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間磕诊,已是汗流浹背填物。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留霎终,地道東北人滞磺。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像莱褒,于是被迫代替她去往敵國和親击困。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內容