我正在用vba编写一个代码,允许使用ms excel中的用户表单在数据库中添加新用户。提交表单后,必须自动更新数据库。我使用DMax函数获取表中最高的现有主键。然后我增加它以获得要添加的新用户的主键。当数据库在ms-access中打开时,代码工作得很好。但是,当ms access未打开时,它返回错误“sub或function not defined”。
以下是出现错误时突出显示的代码:

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

userID是我的变量,UserID是包含主键的列,subscriber_user是数据库中表的名称。
数据库是否必须使用MS Access打开才能正常工作?是否有其他方法可以确保数据库在不需要通过MS Access或任何其他IDE打开的情况下得到更新?

最佳答案

数据库的dmax是access vba函数,而不是excel vba函数。
您需要通过dao/ado进行连接,或者创建如下访问对象:

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

关于database - MS Access未打开时,DMax功能不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31698388/

10-13 05:07