wincc报表实现?

用wincc怎么实现连接SQL服务器的记录,将数据写入SQL,并在报表中输出SQL相应的数据?最好是提供VC和VB的两种解决方案~~

最佳答案

1 wincc怎么实现连接SQL服务器的记录, 是要WinCC 的归档数据,还是自己用脚本归档,若是自己的脚本归档,是用sql ole db,
 若是使用WinCC 的归档数据, 使用provider ole ,db .
 a 使用sql ole db, 读用户归档
 Sub OnClick(ByVal Item)                    

 Dim sDsn 
 Dim sSer 
 Dim sCon 
 Dim sSql 
 Dim conn 
 Dim oRs 
 Dim oCom 
 Dim sPro 
 Dim m,n,s
 Dim a,b,c
 Dim Listview1
 Dim oItem 
 Dim xlsApp
 Dim strDateTime 

 Dim iMS

 Set Listview1 = ScreenItems("Control1") 

 

 sCon ="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=CC_database_08_10_20_14_59_38R;Data Source=YSY\WINCC"

 
 sSql = "Select * from UA#myua"
 MsgBox "Open with:" & vbCr & sCon & vbCr & sSql & vbCr 

 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.Fields.Count

 
 Set xlsApp=CreateObject("Excel.Application")
 xlsApp.Visible=True
 xlsApp.Workbooks.Open"E:\sample.xls"

 
 If (m > 0) Then 
 oRs.MoveFirst
 n = 1

 xlsApp.Cells(1,1).Value=oRs.Fields(0).Name
 xlsApp.Cells(1,2).Value=oRs.Fields(1).Name
 xlsApp.Cells(1,3).Value=oRs.Fields(2).Name

 Do While Not oRs.EOF
 n = n + 1
 xlsApp.Cells(n,1).Value=oRs.Fields(0).Value
 xlsApp.Cells(n,2).Value=oRs.Fields(1).Value
 xlsApp.Cells(n,3).Value=oRs.Fields(2).Value

 oRs.MoveNext
 Loop
 xlsApp.ActiveWorkBook.Save
 xlsApp.Workbooks.Close
 xlsApp.Quit
 Set xlsApp=Nothing

 

 
 End If 
 oRs.Close
 Set oRs = Nothing
 conn.Close
 Set conn = Nothing
 End Sub

 b,使用provider ole ,db 读归档数据
 Sub OnClick(ByVal Item)                 
                                                           
 Dim xlsApp
 Dim sDsn 
 Dim sSer 
 Dim sCon 
 Dim sSql 
 Dim conn 
 Dim oRs 
 Dim oCom 
 Dim sPro 
 Dim m,n,s
 Dim a,b,c

 sPro = "Provider=WinCCOLEDBProvider.1;"
 sDsn = "Catalog=CC_vbs_08_05_26_14_56_45R;"   //该为自己的数据库名称
 sSer = "Data Source=.\WinCC"
 sCon = sPro + sDsn + sSer

 // 该为自己的归档名称和变量名称

 sSql = "Tag:R,('ProcessValueArchive\tag1';'ProcessValueArchive\tag2'),'2008-07-2 00:32:00.000','2008-07-2 17:34:00.000'" 

 MsgBox "Open with:" & vbCr & sCon & vbCr & sSql & vbCr 

 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.Fields.Count
 Set xlsApp=CreateObject("Excel.Application")
 xlsApp.Visible=True
 xlsApp.Workbooks.Open"E:\sample.xls"

 
 xlsApp.Cells(10,2).Value=6
 If (m > 0) Then 
 oRs.MoveFirst
 n = 1

 xlsApp.Cells(1,1).Value=oRs.Fields(0).Name
 xlsApp.Cells(1,2).Value=oRs.Fields(1).Name
 xlsApp.Cells(1,3).Value=oRs.Fields(2).Name
 xlsApp.Cells(1,4).Value=oRs.Fields(3).Name
 xlsApp.Cells(1,5).Value=oRs.Fields(4).Name
 Do While Not oRs.EOF
 n = n + 1
 xlsApp.Cells(n,1).Value=oRs.Fields(0).Value
 xlsApp.Cells(n,2).Value=oRs.Fields(1).Value
 xlsApp.Cells(n,3).Value=FormatNumber(oRs.Fields(2).Value,2)
 xlsApp.Cells(n,4).Value=Hex(oRs.Fields(3).Value)
 xlsApp.Cells(n,5).Value=Hex(oRs.Fields(4).Value)
 oRs.MoveNext
 Loop
 xlsApp.ActiveWorkBook.Save
 xlsApp.Workbooks.Close
 xlsApp.Quit
 Set xlsApp=Nothing
 End If 
 oRs.Close
 Set oRs = Nothing
 conn.Close
 Set conn = Nothing

 End Sub

提问者对于答案的评价:
可以

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年5月29日 下午6:59
下一篇 2017年5月29日 下午7:00

相关推荐

  • 西门子PLC客制化

    可定制配置和机架安装吗 最佳答案 我了解的,应该可以。只要量够了附S7-200的客制化PLC TS40A主板与电源板在一起,而且是可拆卸端子 图片说明:  &n…

    2017年5月29日
  • 如何学习工控机?

    请教熟悉工控机的大侠:如何学习用工控机IPC作为控制器做设备?买了一本薛、何编著的《工控机及组态控制技术原理与应用》,好像挺理论化的。你们是怎么学会工控机的呢? 钻石用户推荐最佳答…

    SIMATIC IPC/PG 2020年11月1日
  • SIMADYN D和人机界面的通讯

    我们公司有台设备,自动化主要部分:S7-412,SIMADYN D和人机界面。现出现一个问题:设备能正常运转,但是SIMADYN D和人机界面的部分数据交换出现…

    SIMATIC IPC/PG 2017年5月31日
  • IPC547E是否可以兼容XP系统?

    IPC547E标配里面只有WIN7和SERVER2008的选项。如果我自己装成WIN XP系统可以兼容吗?西门子的硬件驱动能安装在XP系统上吗? 问题补充:我担心的是,西…

    SIMATIC IPC/PG 2017年5月28日
  • 数显表+上位机

    设备:数显表(带485接口) ,上位机(WINCC),485与232转换器 通讯:MODBUS(RTU) 问题:1、WINCC能否直接读数显表的数据?…

    SIMATIC IPC/PG 2017年5月31日
  • 7个S7-200分站和wincc通讯

    我现在有个7个S7-200的分站最远的2000米, 我如何吧7个站都连接到Wincc上来,需要如何通讯。需要光电转换吗 ? 问题补充:走光纤如何走,光电转换怎么…

    SIMATIC IPC/PG 2017年5月31日
  • 光栅安装

    尺带式光栅安装方法 最佳答案 不同厂家的产品有不同的安装要求,所以建议你与生产厂家联系解决。 也可以参考光栅尺厂家提供的说明书,有些还需要专业人员经过培训才可以安装。&n…

    SIMATIC IPC/PG 2017年5月31日
  • 请教关于IPC477D系统还原的问题

    我公司很多工控机都是西门子IPC477D,设备随机资料含系统备份,厂家告知是用SIMATIC IPC Image & Partition&n…

    SIMATIC IPC/PG 2020年11月1日
  • 西门子变频器

    变频器型号是6SE7027—2ED61-Z,X9上的7和9用来控制主接触器吸合的,今天变频器工作中突然主接触器短开。变频器没有报任何故障。我把7和9短接,主接触器吸合,变频器正常工…

    SIMATIC IPC/PG 2017年6月1日
  • 西门子PG操作系统重装了

    西门子PG操作系统重装了系统 重新了STEP7软件 能恢复各卡槽功能  能对MMC卡编程吗 问题补充:如果恢复不了各卡槽的功能 请…

    SIMATIC IPC/PG 2017年5月28日