Ms access 从单独的access数据库中提取最大日期
我正试图从一个单独的access数据库中获取MAX日期 变量:Ms access 从单独的access数据库中提取最大日期,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,我正试图从一个单独的access数据库中获取MAX日期 变量: dbpath = "C:\Portal\_Dev" dbname = "Portal.accdb" strpassword = "OpenSesame" tblEngage = "tbl_engagement" CurrentDb.Execute "SELECT [MS Access;pwd=" & strpassword & ";database=" & dbpath & "\" & db
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 & "'"
我尝试过的代码:
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 & "'"
收到错误:
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语句包含一个保留字或一个参数名
拼写错误或丢失
欢迎提供任何帮助使用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
使用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
这些数据库都位于同一台机器上吗?是的,都在同一台机器上。为什么不用简单的方法:链接一个表,然后使用
DMax
function(在任何地方,而不仅仅是在VBA中)。你知道如何添加链接表吗?我确实考虑过了,但是我想有一个链接表会让任何未授权的人更容易访问数据。因此,最好使用VBA获取数据,因为无法执行SELECT语句。Execute用于操作语句(DELETE、UPDATE、INSERT)。使用SELECT语句设置记录集对象。另外,在MaxOfOpen_Date之后需要一个空格,这样构造的SQL就不会一起运行。这些数据库都位于同一台机器上吗?是的,都在同一台机器上为什么不用简单的方法来完成:链接一个表,然后使用DMax
功能(在任何地方,而不仅仅是在VBA中)。你知道如何添加链接表吗?我确实考虑过了,但是我想有一个链接表会让任何未授权的人更容易访问数据。因此,最好使用VBA获取数据,因为无法执行SELECT语句。Execute用于操作语句(DELETE、UPDATE、INSERT)。使用SELECT语句设置记录集对象。另外,在MaxOfOpen_Date之后需要一个空格,这样构造的SQL就不会一起运行。