首页 > 解决方案 > 当只有 1 项留在最简单的框中时,数组不会转置

问题描述

我在将项目正确加载到多列列表框中时遇到问题

场景如下:

我将 SQL 数据库中的数据加载到数组中,然后将数组加载到用户窗体中的多列列表框中。我这样做是因为我读到这是最快的方法。

如果查询返回多于一行,则数据在列表框中正确显示为

Value A1 - Value A2 - Value A3 - Value A4
Value B1 - Value B2 - Value B3 - Value B4

但是当查询只返回一行时,它显示为

    Value A1
    Value A2
    Value A3
    Value A4

代码如下:

      
            SQL = "SELECT  (my query)"
            con.Open "(my connection string)"
            rs.Open SQL, con
            myarray = rs.GetRows
    'Fill Listbox      
           With Me.Listbox
               .Clear
               .ColumnCount = 6
               .ColumnWidths = "30;20;170;40;40;20"
               .List = Application.Transpose(myarray)
               .ListIndex = -1
        End With

我正在四处寻找,并试图通过这样做来让代码不转置记录集:


            SQL = "SELECT  (my query)"
            con.Open "(my connection string)"
            rs.CursorLocation = adUseClient 'count number of records in recordset
            rs.Open SQL, con

'Fill Listbox    
         With Me.Listbox
               .Clear
               .ColumnCount = 6
              .ColumnWidths = "30;20;170;40;40;20"
            If rs.RecordCount > 1 Then 'only transpose when count exceeds 1
              .List = Application.Transpose(myarray)
              Else
              .List = myarray 'paste untransposed recordset
            End If 'neu
            
              .ListIndex = -1
            
        End With

但这并没有帮助。记录集仍然显示不正确。也许问题是记录集仅包含 1 条记录时没有转置?显然我在这里。有人可以告诉我发生了什么吗?提前致谢。

标签: arrayslistboxtranspose

解决方案


推荐阅读