Historian实时数据库链接提供了一种高效的数据管理解决方案,旨在帮助企业收集、存储和分析工业控制系统产生的大量数据。
以下是重新组织后的代码描述:
在下面的VBA子程序`Command1_Click()` 中实现了一个简单的数据库操作流程:
- 定义了两个对象变量:一个用于连接(connection1)到iHistorian服务器,另一个用于记录集(recset1)来存储查询结果。
- 使用错误处理语句 `On Error GoTo ErrorHandler` 来捕获可能发生的异常并显示相应的错误信息。
程序通过两种方式之一建立与默认的iHistorian服务器或指定服务器的连接。在本例中使用的是带有用户名和密码的具体服务器连接字符串:
```vba
strConnectionString$ = Provider=ihOLEDB.iHistorian.1;Data Source=MYSERVER;User Id=user1;Password=password1
```
建立数据库链接后,执行SQL查询语句以从`ihTags`表中选择所有数据。
- 使用循环遍历记录集,并通过 `Debug.Print recset1.Fields(0)` 输出每个字段的第一个元素的值。
接着计算并显示返回行数。如果没有任何结果,则会弹出一个消息框提示“没有返回任何查询行”。如果有返回的数据,将显示实际返回的行数。
- 最后关闭与数据库的所有连接和记录集对象,并释放资源以避免内存泄漏问题。
以下是上述描述对应的VBA代码:
```vba
Private Sub Command1_Click()
Dim connection1 As New ADODB.Connection, recset1 As New ADODB.Recordset
Dim iCount&, strConnectionString$
On Error GoTo ErrorHandler
连接到默认的iHistorian服务器或指定的服务器使用用户名和密码登录
strConnectionString$ = Provider=ihOLEDB.iHistorian.1;Data Source=MYSERVER;User Id=user1;Password=password1
connection1.ConnectionString = strConnectionString$
connection1.Open
执行选择操作,从ihTags表中获取所有数据
recset1.Open SELECT * FROM ihTags, connection1
iCount = 0
Do While Not recset1.EOF
Debug.Print recset1.Fields(0)
recset1.MoveNext
iCount = iCount + 1
Loop
显示查询结果的行数统计信息
If iCount = 0 Then MsgBox No rows were returned in the query
Else: MsgBox iCount & rows returned.
关闭记录集和数据库连接,释放资源
recset1.Close
Set recset1 = Nothing
connection1.Close
Exit Sub ErrorHandler:
MsgBox Err.Description
End Sub
```