从单独的访问数据库中提取MAX日期

时间:2018-03-26 08:55:22

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

我正在尝试从单独的访问数据库中获取 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 & "'"

我理解这种方法因为没有被告知查看外部表格而无法工作:

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语句包含保留字或参数名   错误拼写或遗失

感谢任何帮助

1 个答案:

答案 0 :(得分:2)

使用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 Data Objects库处于活动状态。

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
相关问题