代码之家  ›  专栏  ›  技术社区  ›  räph

为什么VBA中的任务在前一个任务完成之前就被执行了?

  •  1
  • räph  · 技术社区  · 16 年前

    我得到了下面的代码,它将db中的行读取到activex控件中,然后尝试将这些值放入数组中。VXData1ActiveX是专有的,没有细节,但基本上它关心ADO连接、执行SQL命令和将结果集放入控件元素。

    //put all records from the db into the vxData1 datagrid
    vxData1.SQLCommand = "SELECT x,y,z FROM t ORDER BY z"
    
    //put the datagrid values into an array
    Dim Array_Werte(500) As String
    vxData1.MoveFirst
    For i = 0 To 500 Step 1
       Array_Werte(i) = vxData1.Column1 & ";" & vxData1.Column2 & ";" & vxData1.Column3
       vxData1.MoveNext
    Next i
    

    出现以下问题:数组并不总是包含它应该拥有的所有数据(非常不可预测)。

    当我调试代码并遍历循环时,一切都像一个魔咒。所以我得出结论,当我进入循环时,耗时的数据库查询(大数据集)还没有完成。

    现在我想知道:这是代码的问题还是vba或脚本语言的一个“特性”? 我在网上看到过一些东西,比如在那里放置一个User.wait,但我永远不知道我的查询需要多长时间,这看起来真的很糟糕。

    1 回复  |  直到 16 年前
        1
  •  0
  •   Siddharth Rout    14 年前

    • ActiveX组件是.exe还是.dll?我似乎记得在VB6中,DLL运行“进程内”,exe运行“进程外”,即异步运行。我不知道这怎么适用于VBA。