multithreading - MS Access 中的多线程,异步处理

标签 multithreading ms-access vba

这个问题在这里已经有了答案:





Multi-threading in VBA

(8 个回答)


4年前关闭。




我知道这个标题听起来很疯狂,但这是我的情况。

在某个用户事件之后,我需要更新几个与用户当前正在做的事情“无关”的表。目前,这需要几秒钟的时间来执行并导致用户一定程度的挫败感。有没有办法在第二个进程中执行我的更新,或者在处理时不会“卡住”我的应用程序的 UI?

谢谢

最佳答案

我会解决问题的核心 - 调整数据更新查询以使其运行得更快。

话虽如此,MS Access 不支持多线程。

因此,当您对过程进行阻塞调用时,MS Access 将卡住屏幕,直到调用返回。

编辑

如果您通过慢速网络连接更新大表,DAO 并不是您最好的 friend 。您可能需要考虑切换到使用 ODBC 连接并运行优化的更新语句。

编辑 2

当您使用 ODBC 时,您必须编写 ADO 风格的代码来完成这项工作。请注意此示例代码是 OTTOMH。

dim myConn as ADODB.Connection
dim myCmd as ADODB.Command

set myConn = new ADODB.Connection
myConn.ConnectionString = "Provider=SQLOLEDB;Server=MyServerName;Initial Catalog=MyCatalogName;UID='XXX';PWD='YYY'"
myConn.Open

set myCmd =  new ADODB.Command (myConn)
myCmd.SQL = "Update MyTable Set MyColumn = '" & MyDataVariable & "' Where MyPK = '" & MyPKVariable & "'"
myCmd.Execute

myCmd.close
myConn.close

关于multithreading - MS Access 中的多线程,异步处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2898953/

相关文章:

vba - 运行宏时出错

java - 类线程在实例初始化时是否安全

ms-access - 以连续形式显示多对多关系

c# - 使用 C# 和 asp.net 将 sql 插入 access db 时出现语法错误

arrays - For-Next 循环和数组 - VBA

excel - 管理电子表格版本控制

mysql - SQL 最后插入到 Drupal 中。它真的是线程安全的吗?

.net - 使用线程VB调用Web服务时,发生InvalidOperationException。网

c# - 如何在 C# 应用程序中启用 MMCSS?

ms-access - 通过链接到 Access 数据库的 ODBC 数据源进行缓慢的数据 Access