我试图在数据数组中保存查询的结果,列名称没有问题但是只有第一行被复制到行的数据数组的所有位置。任何的想法?
Dim alarm
alarm = HMIRuntime.Tags("search").Read
strSQL = "SELECT IdAlarma, Texto FROM dbo.Alarmas WHERE (Texto) LIKE '%" & CStr(alarm) & "%'"
' Create The Connection
Set objConnection = CreateObject("ADODB.Connection")
objConnection.ConnectionString = strConnectionString
objConnection.CursorLocation = 3
objConnection.Open
' Attach The Record Set To The Connection
Set oRs = CreateObject("ADODB.Recordset")
Set objCommand = CreateObject("ADODB.Command")
objCommand.CommandType = 1
Set objCommand.ActiveConnection = objConnection
HMIRuntime.Trace("CONEXION OK")
objCommand.CommandText = strSQL
Set oRs = objCommand.Execute
ColumnCount = oRs.Fields.Count'要显示的列数
RowCount = oRs.RecordCount'要显示的行数
'调整数组大小以保存SQL数据Redim DataArray(ColumnCount - 1,RowCount)
Dim X,Y
'Loop Used to get the field names
For X = 0 To ColumnCount - 1
DataArray(X,0) = oRs.Fields(x).Name
Next
'Loop To Get all row the values
For Y = 1 To RowCount -1
'HERE IT SHOULD STORE THE DIFFERENT ROWS IN THE ARRAY
'BUT ONLY THE FIRST ROW IS SAVED IN EVERY Y POSITION OF THE ARRAY???
DataArray(0, Y) = oRs.Fields("IdAlarma").Value
DataArray(1, Y) = oRs.Fields("Texto").Value
Next
在最后一个循环中,增加'是,它正在遍历数据数组,但它没有通过记录。你基本上每次都要求第1行。
我不太了解ADOOB连接,但是,在SQL中你会使用datareader,它会遍历每一行。
做了一些谷歌搜索后,我认为你需要添加ors.MoveNext()
如果你把它添加到'Y'循环像这样
For Y = 1 To RowCount -1
'HERE IT SHOULD STORE THE DIFFERENT ROWS IN THE ARRAY
'BUT ONLY THE FIRST ROW IS SAVED IN EVERY Y POSITION OF THE ARRAY???
DataArray(0, Y) = oRs.Fields("IdAlarma").Value
DataArray(1, Y) = oRs.Fields("Texto").Value
ors.MoveNext()
Next
这应该移动到oRs记录集中的下一条记录,同时还要移动数据数组。
只是快速查询,但您是否连接到SQL或其他一些数据库?如果您正在使用SQL,那么可以使用一些简单易用的技巧,并且可以让您更轻松! :)
Hth Chicken