我正在尝试从单独的访问数据库中获取 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语句包含保留字或参数名 错误拼写或遗失
感谢任何帮助
答案 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