Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 从单独的access数据库中提取最大日期_Ms Access_Vba_Ms Access 2010 - Fatal编程技术网

Ms access 从单独的access数据库中提取最大日期

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

我正试图从一个单独的access数据库中获取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 & "'"
我尝试过的代码:

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就不会一起运行。