【发布时间】:2018-11-25 02:25:35
【问题描述】:
我有两个通过 vba 在单击事件上填充的列表框。表 'Project' 是一个 odbc 数据源,有 250 条记录。
List1.RowSource = "SELECT Name FROM Project WHERE ProjectID = " & ProjectID.Caption & " AND Year = " & ActualYear.Caption & " ORDER BY Name"
List2.RowSource = "SELECT ProjectShare FROM Project WHERE ProjectID = " & ProjectID.Caption & " AND Year = " & ActualYear.Caption & " ORDER BY Name"
到目前为止一切顺利。但是当我运行这段代码时,每次最多需要 30 秒才能完成。我想,好吧,这是因为 odbc 等等。但是当我只运行这段代码的一行时(不管是哪一行),它都快如闪电(0.1秒)。
怎么可能,一个查询需要 0.1 秒,两个查询需要 30 秒?我可以在这两行之间打断吗?顺便提一句。没有 odbc,无论多少行,一切都像魅力一样工作
【问题讨论】:
-
很难说。您可能在那里遇到锁定问题。您可以将两个列表绑定到同一个记录集(同时拉入 Name 和 ProjectShare),并隐藏第一个列表中的第二列和第二个列表中的第一列.这可能会大大提高速度。如果您有兴趣,我可以分享代码作为答案。
-
您可以在两行之间尝试 DoEvents。但 Erik 的建议要优雅得多,开销也更少。
-
@ErikvonAsmuth 两次使用相同的 SQL 字符串并没有改变任何东西。有没有其他方法可以将它们绑定到同一个记录集?
-
是的,我只是分享代码