如何使用记录集数据填充数组

Cur*_*che 18 performance ms-access

我试图将记录集中的数据直接移动到数组中.我知道这是可能的,但具体来说我想在VBA中这样做,因为这是在MS Access 2003中完成的.

通常我会做类似以下的事情来实现这个目标:

    Dim vaData As Variant 
    Dim rst As ADODB.Recordset

    ' Pull data into recordset code here...

    ' Populate the array with the whole recordset.
    vaData = rst.GetRows 
Run Code Online (Sandbox Code Playgroud)

VB和VBA之间存在什么差异,这使得这种类型的操作不起作用?

性能问题怎么样?这是一项"昂贵"的行动吗?

Alb*_*lal 18

以下代码适用于我:

Dim rst           As ADODB.Recordset
Dim vDat          As Variant

Set rst = CurrentProject.Connection.Execute("select * from tblTemp4")
vDat = rst.GetRows
Run Code Online (Sandbox Code Playgroud)

进行调试编译,如上所述,这可能是引用问题.如上所述,有些人更喜欢DAO,但请记住,DAO要求你做一个movelast.ADO没有.如今,ADO或DAO真正归结为您的优势,性能很少成为问题.ADO往往对对象模型有点清晰,但无论你的熟人是什么,在大多数情况下都是最好的选择

  • 2020 年仍在使用 ADO。还没有消亡。比任何其他访问 SQL Server 的方法都要快得多。 (3认同)
  • 现在,通过测试GetRows可以看到,如果不向其传递任何参数,它将仅检索一行。您可以选择一个任意大的数字,然后跳过.MoveLast以避免性能下降。或者,您可以通过检查表的.RecordCount属性来获得准确的记录计数,尽管该属性不适用于链接表,因此您必须直接使用后端(并非所有代码都难于编写,而且肯定比a高效) MoveLast(在大型记录集上),但仅在单表记录集上不能使用。 (2认同)