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 功能不起作用的主要内容,如果未能解决你的问题,请参考以下文章