【问题标题】:Connecting Access with SAS使用 SAS 连接 Access
【发布时间】:2015-06-29 16:18:40
【问题描述】:

我在 SAS 和 Access 方面拥有丰富的经验,并且我知道如何从 VBA 调用 Access,但是我遇到了需要帮助的表锁问题。

基本上我正在做的是在 SAS 中运行一个 proc freq,将它传递给 Access 中的一个表,以便可以在子表单中读取它。

我有一个带有一些组合框的表单,用户可以在其中选择有关他们想要频率的变量的信息。然后他们点击一个按钮,VBA 将这些参数传递给 SAS,然后子表单将填充来自 SAS 的频率数据。

除了最后一部分,一切都正常。

我已成功从 Access 获取参数,将它们传递给 SAS,并运行正确的频率。但在 SAS 将 proc 导出回 Access 期间,我收到一条错误消息:“执行:数据库引擎无法锁定表“FREQ”,因为它已被其他人或进程使用。”

问题是 SAS 导出到的表在 Access 中被打开 SAS 的表单使用。

由于在 SAS 处理时我显然没有使用表单,有没有办法让表单解锁或断开与表的连接,以便 SAS 可以访问它,然后在 SAS 完成处理后将表重新连接到表单?

我尝试拆分数据库,但遇到了同样的问题。

【问题讨论】:

  • 能否关闭表单,更新表格,然后重新打开表单?
  • 我还是会遇到同样的问题。我可以告诉它关闭并重新打开,但 Access 不知道要等待 SAS 重新打开,因此它只会在 SAS 运行时关闭并重新打开并产生同样的问题
  • 您是否偶然获得了 SAS Add-in for Microsoft Office 的许可?
  • 让您的 sas 更新更新临时表中的特定值,因为它是最后一次操作。在开始更新之前,请关闭您的表单并打开一个带有定时事件的隐藏表单,以定期检查临时表中的特定值。一旦 on-timer 事件找到值,关闭隐藏的表单,打开你的主表单备份。
  • 让 SAS 将结果写入 CSV。然后在访问中导入 CSV。有点丑,但应该避免锁定问题。

标签: ms-access vba sas


【解决方案1】:

问题可能是由于 SAS 正在与 ACCESS 连接。先清除连接(如:libname libname_name clear),再用Access连接。

【讨论】:

    猜你喜欢
    • 2013-12-09
    • 1970-01-01
    • 2012-09-13
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2015-10-07
    相关资源
    最近更新 更多