找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
问题
取消精华
首页精华问答
取消推荐
高端用户推荐
申请置评
已申请置评
修改
修改标签
添加标签
官方认证
取消官方认证
修改标签
添加标签
转移分类
删除
{{itemCategory}}
收藏({{answerDetail.Q_FavoriteCounts}})
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
专家建议
取消最佳答案
修改
你这个问题很好,
在 WinCC 7.5 SP2 中使用 VBS 查询归档数据时遇到显示问题,可能是由于版本差异或语法兼容性问题。以下是针对 WinCC 7.5 SP2 的改进脚本方案:
完整解决方案(WinCC 7.5 SP2 兼容版):
vbs
Option Explicit
Function QueryArchiveData()
Dim objTag, objArchive, objResult
Dim startTime, endTime, strTags, tableControl
Dim i, j, row
' 1. 定义查询参数
startTime = "2024-01-01 00:00:00" ' 修改为您的开始时间
endTime = "2024-01-02 00:00:00" ' 修改为您的结束时间
strTags = "Tag1,Tag2,Tag3" ' 修改为您要查询的变量名,用逗号分隔
' 2. 获取表格控件对象(修改为您的实际控件名)
On Error Resume Next
Set tableControl = ScreenItems("ArchiveTable")
If Err.Number <> 0 Then
MsgBox "无法找到表格控件!请检查控件名称。", vbExclamation
Exit Function
End If
On Error GoTo 0
' 3. 初始化表格
tableControl.ColumnCount = 0
tableControl.RowCount = 1 ' 保留标题行
' 4. 创建归档连接
Set objArchive = CreateObject("WinCC.Archive.1")
If objArchive Is Nothing Then
MsgBox "无法创建归档对象!", vbCritical
Exit Function
End If
' 5. 设置查询参数
objArchive.ArchiveServer = "."
objArchive.TimeType = 0 ' 0=绝对时间,1=相对时间
' 6. 执行查询
Set objResult = objArchive.ProcessedValuesRaw( _
strTags, _
startTime, _
endTime, _
0, 0, 0, 0)
' 7. 检查结果
If objResult Is Nothing Then
MsgBox "查询返回空结果!", vbInformation
Exit Function
End If
' 8. 准备表格列
tableControl.ColumnCount = objResult.ValueCount + 1 ' 加1用于时间列
tableControl.SetColumnLabel 1, "TimeStamp"
For i = 1 To objResult.ValueCount
tableControl.SetColumnLabel i+1, objResult.ValueName(i)
Next
' 9. 填充数据
tableControl.RowCount = objResult.RowCount + 1 ' +1 for header
For i = 1 To objResult.RowCount
' 时间列
tableControl.SetText 1, i, objResult.Time(i)
' 数据列
For j = 1 To objResult.ValueCount
tableControl.SetText j+1, i, objResult.Value(i, j)
Next
Next
' 10. 释放对象
Set objResult = Nothing
Set objArchive = Nothing
MsgBox "数据查询完成!共获取 " & objResult.RowCount & " 条记录。", vbInformation
End Function
WinCC 7.5 SP2 特有注意事项:
对象模型差异:
WinCC 7.5 使用较旧的 WinCC.Archive.1 对象,而 WinCC 8.0 可能使用更新的接口
确保使用正确的 ProgID 创建对象
权限问题:
在 WinCC 7.5 中可能需要以管理员权限运行脚本
检查归档服务器的连接权限
常见问题排查:
vbs
' 调试代码:检查归档是否可用
Sub CheckArchiveAccess()
Dim arch
Set arch = CreateObject("WinCC.Archive.1")
If arch Is Nothing Then
MsgBox "无法创建归档对象!可能是:1) WinCC版本不支持 2) 权限不足 3) 组件未注册", vbCritical
Else
MsgBox "成功创建归档对象,版本:" & arch.Version, vbInformation
Set arch = Nothing
End If
End Sub
备选方案(如果上述方法仍不工作):
vbs
' 使用 WinCC OLE DB Provider 查询
Sub QueryViaOLEDB()
Dim conn, rs, sql
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=WinCCOLEDBProvider.1;Data Source=."
sql = "SELECT DateTime, Value FROM Archive WHERE " & _
"TagName='YourTagName' AND " & _
"DateTime BETWEEN '" & startTime & "' AND '" & endTi
希望可以帮到你,记得给个好评。。
等您来回答
换一换
{{item.CoinValue}}西币
{{item.VisitNum}}人想问
本版相关问题
换一换
专家置评
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!

西门子商城