【问题标题】:Pulling MAX date from a separate access database从单独的访问数据库中提取 MAX 日期
【发布时间】:2018-09-04 08:44:48
【问题描述】:

我正在尝试从单独的访问数据库中获取 MAX 日期。

变量:

dbpath = "C:\Portal\_Dev"
dbname = "Portal.accdb"
strpassword = "OpenSesame"
tblEngage = "tbl_engagement"

我尝试过的代码:

CurrentDb.Execute "SELECT [MS Access;pwd=" & strpassword & ";database=" & dbpath & "\" & dbname & "].[" & tblEngage & "].CDP, Max([MS Access;pwd=" & strpassword & ";database=" & dbpath & "\" & dbname & "].[" & tblEngage & "].Open_Date) AS MaxOfOpen_Date" & _
         "FROM [MS Access;pwd=" & strpassword & ";database=" & dbpath & "\" & dbname & "].[" & tblEngage & "] " & _
         "WHERE [CDP] = '" & Text285 & "'"

我理解的这种方法不起作用,因为 SELECT 没有被告知要查看外部表:

CurrentDb.Execute "SELECT tbl_Engagement.CDP, Max(tbl_Engagement.Open_Date) AS MaxOfOpen_Date" & _
         "FROM [MS Access;pwd=" & strpassword & ";database=" & dbpath & "\" & dbname & "].[" & tblEngage & "] " & _
         "WHERE [CDP] = '" & Text285 & "'"

收到错误:

Select 语句包含保留字或参数名称, 拼写错误或丢失

感谢任何帮助

【问题讨论】:

  • 这些数据库是否都位于同一台机器上?
  • 是的,都在同一台机器上
  • 为什么不采用简单的方法:链接一个表,然后使用DMax 函数(在任何地方,不只是在 VBA 中)。你知道如何添加链接表吗?
  • 我确实考虑过这一点,但我认为拥有一个链接表会使其更容易被任何未经授权的个人访问数据?所以感觉最好使用 VBA 来获取数据
  • 无法执行 SELECT 语句。 Execute 用于操作语句(DELETE、UPDATE、INSERT)。使用 SELECT 语句设置记录集对象。另外,在 MaxOfOpen_Date 之后需要一个空格,这样构造的 SQL 就不会一起运行。

标签: ms-access vba ms-access-2010


【解决方案1】:

使用 SELECT sql 语句打开并设置记录集对象。

一个没有密码加密的简单例子:

Dim rs AS DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT Max(Open_Date) AS MaxOfOpen_Date FROM tbl_Engagement IN '" & dbPath & "\" & dbname & "' WHERE CDP='" & Me.Text85 & "'")
Debug.Print rs!MaxOfOpen_Date

对于带密码的数据库,设置并打开 ADODB 连接对象。此示例使用早期绑定,因此需要激活 MS ActiveX 数据对象库。

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbpath & "\" & dbname & ";Jet OLEDB:Database Password=OpenSesame"
rs.Open "SELECT Max(Open_Date) AS MaxOfOpen_Date FROM tbl_Engagement WHERE CDP='" & Me.Text85 & "';", cn
Debug.Print rs!MaxOfOpen_Date

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-09
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多