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日
下一篇 2017年5月29日

相关推荐

  • 找学习资料

    在哪里能找到视频教程? 最佳答案 http://www.gkzhan.com/ziliao/show/5808.html 提问者对于答案的评价:谢谢大家!

    SIMATIC IPC/PG 2017年6月1日
  • pc\pg连接S7-400

    各位老师:我们单位因效益不好停产,我将工控机拆掉,请问复产时,怎样做才能使网络连接好。谢谢各位老师!!!小虾米 问题补充:用的以太网做通讯连接,害怕回头连不上。有什么必要的设置吗?…

    SIMATIC IPC/PG 2017年5月31日
  • 怎样用CP5611和CPU226进行通讯?

    自制屏蔽电缆的接法是PRFIBUS电缆3-3,8-8。MPI电缆3-3,5-5,8-8。或3-3,4-4,5-5,8-8。  都不能通讯,我是用下载程序来判断的…

    SIMATIC IPC/PG 2017年6月1日
  • 以太网通讯WINCC

    我现在做一个,3台电脑,2台300或400的PLC,还有三个是无线传输的仪表,电脑采用WINCC,有电脑监控PLC和仪表,采用什么方式最好,PLC和电脑采用以太网,不知道仪表该怎么…

    SIMATIC IPC/PG 2017年5月31日
  • STEP 7-MicroWIN不能卸载

    第一台计算机已安装了STEP 7-MicroWIN但是不能卸载,一点击卸载就提示重起。重起后一样!第二台计算机没有安装STEP 7-MicroWIN。点击安装后…

    SIMATIC IPC/PG 2017年5月29日
  • viccflexibole做一个电机的3个状态

    想问下viccflexibole做一个电机的3个状态?用的是KTP178.我在画面中做了个文本和变量表.(2个变量,Q0.0  M1正转 Q0.1绿色…

    SIMATIC IPC/PG 2017年5月31日
  • PC Access与S7-200通讯问题

    设置PC Access与S7-200通讯联系,当选择PG/PC接口时,提示“意外错误”。请问这是什么原因,如何解决?谢谢! 问题补充:意外错误已经解决,将网卡拆下,问题消…

    SIMATIC IPC/PG 2017年5月29日
  • VB与OPC服务器的AddItems提示类型不匹配

    主要代码如下: Dim ObjServer As OPCServer      …

    SIMATIC IPC/PG 2017年5月31日
  • 组态疑问

    1、编程软件STEP7的组态与Wincc的组态有什么区别2、用西门子工控机通过profibus总线与外部IO模块连接,用什么软件组态外部IM153模块和IO模块3、与库卡机器人如何…

    SIMATIC IPC/PG 2017年5月28日
  • 各位高手,关于wincc使用报表编辑器打印作业遇到的问题

    原项目使用报表编辑器的打印功能,历史数据查询表格使用右上角的打印按键打印出的表格如下;打印趋势图可以但是打印趋势表只有表头,里面的内容都是空白的,请问是否哪里设置有错误?1图打印趋…

    2021年7月5日