我已经将画面上的变量数据导入指定的数据库,
现在要将数据库的数据显示在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