SQL VB:在DataArray中存储查询行,但它只保存第一行

问题描述 投票:1回答:1

我试图在数据数组中保存查询的结果,列名称没有问题但是只有第一行被复制到行的数据数组的所有位置。任何的想法?

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
sql arrays vb.net loops rows
1个回答
1
投票

在最后一个循环中,增加'是,它正在遍历数据数组,但它没有通过记录。你基本上每次都要求第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

© www.soinside.com 2019 - 2024. All rights reserved.