Access VBA 函数为不同的用户产生不同的结果

Posted

技术标签:

【中文标题】Access VBA 函数为不同的用户产生不同的结果【英文标题】:Access VBA Function produces different results for different users 【发布时间】:2019-12-10 15:03:55 【问题描述】:

我有一个通过宏运行的 VBA 模块。该代码针对单个表运行五个查询以计算五个不同的数量,并将它们放在发送给各方的电子邮件正文中。

当我运行该模块时,它会在消息中生成正确的计数。当员工运行它时,查询会为五个计数中的每一个生成零。

我们都使用 Access 2016,所以版本不是一个因素。

这让我摸不着头脑。

有没有人遇到过这种情况?我不知道原因。

下面的代码sn-p:

    Set rs = db.OpenRecordset("SELECT Count(*) As Total FROM [Migration List] Where TargetUserMigrationDate = #" & NextMigrationDate & "#")
    Total = rs!Total
    Set rs = db.OpenRecordset("SELECT Count(*) As AUSTcount FROM [Migration List] Where BatchNumber Like 'UAUST*' AND TargetUserMigrationDate = #" & NextMigrationDate & "#")
    AUSTcount = rs!AUSTcount
    Set rs = db.OpenRecordset("SELECT Count(*) As EMEAcount FROM [Migration List] Where BatchNumber Like 'UEMEA*' AND TargetUserMigrationDate = #" & NextMigrationDate & "#")
    EMEAcount = rs!EMEAcount
    Set rs = db.OpenRecordset("SELECT Count(*) As AMERcount FROM [Migration List] Where BatchNumber Like 'UAMER*' AND TargetUserMigrationDate = #" & NextMigrationDate & "#")
    AMERcount = rs!AMERcount
    Set rs = db.OpenRecordset("SELECT Count(*) As APACcount FROM [Migration List] Where BatchNumber Like 'UAPAC*' AND TargetUserMigrationDate = #" & NextMigrationDate & "#")
    APACcount = rs!APACcount
    Set rs = db.OpenRecordset("SELECT Count(*) As MACcount FROM [Migration List] Where [Migration List].[Mac User] = TRUE AND TargetUserMigrationDate = #" & NextMigrationDate & "#")
    MACcount = rs!MACcount

【问题讨论】:

有一个VBA模块很好,但是如果你不分享它,没有人可以帮助你,我害怕...... 可能语言环境会影响结果。 一个更完整的样本可能会很明显见minimal reproducible example。 ***.com/questions/2710621/… 使用Debug.Print:How to debug dynamic SQL in VBA -- 并检查你们是否链接到相同的数据,并使用相同的日期。 【参考方案1】:

这在这里和那里都可以工作:

Set rs = db.OpenRecordset("SELECT Count(*) As AUSTcount FROM [Migration List] Where BatchNumber Like 'UAUST*' AND TargetUserMigrationDate = #" & Format(NextMigrationDate, "yyyy\/mm\/dd") & "#")

如果您不强制格式,日期值将被转换为本地设置的文本表达式。

【讨论】:

感谢您和所有人。我确认日期格式的差异是罪魁祸首。代码更改就像一个魅力。

以上是关于Access VBA 函数为不同的用户产生不同的结果的主要内容,如果未能解决你的问题,请参考以下文章

从 Excel 调用 Access VBA 函数

如何在 vba(access) 中将变量设置为我的表单列表框之一?

在列表框 ms-access 2013 VBA 中将多个不同的字段作为列表项返回

Access (VBA) - 追加表中尚未包含的记录

从 Excel 调用的访问 vba 函数导致返回不同的值

MS Access VBA 嵌套循环错误处理。我需要在每个嵌套循环中进行不同的错误处理。它是如何工作的?