将数据库数据显示到WINCC中的微软的spreedsheet表格控件

我已经将画面上的变量数据导入指定的数据库,
 现在要将数据库的数据显示在WINCC中的微软的spreedsheet表格控件中,查询单个数据的单个时刻已经可以了,现在想,查询某个变量的名字,将其每个时刻的所有数据一起显示在表格控件中,下面是我的程序
 Sub OnClick(ByVal Item)                                           
 Dim objConnection

 Dim objCommand

 Dim objRecordset

 Dim strConnectionString

 Dim strSQL

 Dim lngValue

 Dim lngCount

 Dim xlapp

 Dim xlsheet

 Dim xlbook

 strConnectionString = "Provider=MSDASQL;DSN=test;DATABASE=linhe;UID=sa;PWD=linhe;" 

 strSQL = "select PF01AITATT0101 from lh where dt ='2009-06-26 8:53:00'" 

 Set objConnection = CreateObject("ADODB.Connection")

 objConnection.ConnectionString = strConnectionString

 objConnection.Open

 Set objRecordset = CreateObject("ADODB.Recordset")

 Set objCommand = CreateObject("ADODB.Command")

 objCommand.ActiveConnection = objConnection

 objCommand.CommandText = strSQL

 Set objRecordset = objCommand.Execute

 lngCount = objRecordset.Fields.Count

 If (lngCount>0) Then

 Dim xlspreadsheet

 Set xlspreadsheet=ScreenItems("control")

 xlspreadsheet.Range("a1:af65536").ClearContents

 xlspreadsheet.Range("a65536").End(xlUp).Offset(1).CopyFromRecordset objCommand.Execute
 'A列的最后一个有数据单元格向下偏移量为1行的单元格
 '运行到这个地方时,脚本就运行不下去了
 Else

 HMIRuntime.Trace "Selection returned no fields" & vbNewLine 

 End If

 Set objCommand = Nothing

 objConnection.Close

 Set objRecordset = Nothing

 Set objConnection = Nothing

 End Sub

 我想问问论坛里的高手,不运行的那句脚本有点什么语法问题。
 涉及到EXCEL的知识,我自己不熟悉,所以我想可能问题就出在这里。

最佳答案

根据我测试的结果EXCEL VBA/VISUAL BASIC对CopyFromRecordset 支持的还不错,但是在WinCC中却无法正常工作,提示:Class doesn't support Automation

 代码中的一些错误:
 在objConnection.Open之前加一句objConnection.CursorLocation=3,否则可能取不到数据
 另外lngCount = objRecordset.Fields.Count应该改为lngCount = objRecordset.RecordCount
 还有你的xlUP没有声明

提问者对于答案的评价:
您果然都所有的东西都有一定了解!我是解决问题后才看到的答复,您说的一点没错,我现在已经不用copyform了,我用了其他的方式,非常感谢您的赐教!对后来者同样是一种帮助。

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

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

相关推荐