MS Access 未打开时 DMax 功能不起作用

Posted

技术标签:

【中文标题】MS Access 未打开时 DMax 功能不起作用【英文标题】:DMax function not working when MS Access is not open 【发布时间】:2015-07-29 10:51:56 【问题描述】:

我正在用 VBA 编写代码,允许使用 MS Excel 中的用户表单将新用户添加到数据库中。提交表单后,数据库必须自动更新。我正在使用DMax 函数来获取表中现有的最高主键。然后我将其递增以获取要添加的新用户的主键。当数据库在 MS Access 中打开时,代码可以完美运行。但是,它返回错误“未定义子或函数”。每当 MS Access 未打开时。 以下是出现错误时突出显示的代码:

userID = DMax("[UserID]", "subscriber_user") + 1

userID是我的变量,UserID是包含主键的列,subscriber_user是数据库中的表名。

是否需要使用 MS Access 打开数据库才能正常工作?是否有另一种方法可以确保数据库得到更新,而无需通过 MS Access 或任何其他 IDE 打开它?

【问题讨论】:

您应该使用 DAO/ADO 来更新数据,在这种情况下,您可以使用 SELECT 查询获取 ID。不过不太清楚为什么需要PK。 @Rory 我正在使用 SQL 查询更新数据,它工作得很好。我唯一的问题是 DMax 功能。我对这一切都很陌生,我不确定自动增量应该如何在这里工作,所以我得到了最新记录的 PK,所以我可以使用代码增加它,然后将它传递到我插入新记录的查询中桌子。 你的PK不是自动编号吗?如果是,则添加数据时不需要包含它。 @Rory 我不是创建数据库的人,所以我不太确定,但我正在调查它。谢谢! 【参考方案1】:

数据库的 DMax 是 Access VBA 函数,而不是 Excel VBA 函数。

您需要通过 DAO/ADO 进行连接,或者像这样创建一个 Access 对象:

Public Sub AccessDmax()

    Dim userID as Integer
    Dim oAccess As Object
    Set oAccess = CreateObject("Access.Application")

    oAccess.Visible = False
    oAccess.OpenCurrentDatabase "C:\test_databases\test.accdb"

    userID = oAccess.DMax("ID", "subscriber_user")

    oAccess.Quit
    Set oAccess = Nothing

End Sub

【讨论】:

成功了!我仍然对 Access 下哪些函数以及 Excel 下哪些函数感到困惑。非常感谢您。

以上是关于MS Access 未打开时 DMax 功能不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Python 套接字库认为套接字在未打开时已打开

是否可以在 PWA 未打开时使用服务人员跟踪地理位置

MS access mdb 文件第一次从 Access 2007 打开时处于“修复”状态

应用程序被杀死/关闭/未打开时的 IOS 推送通知操作

Chrome 通知 - 即使在网站未打开时也能神奇推送

当应用程序未打开时,可以在 Firebase 消息服务中完成哪些任务?