2016-04-19 90 views
1

我正尝试使用此代码存储在MS Access数据库的参数化查询获取参数名:因为参数集VBA ADODB - 从参数化查询获取参数

Dim cmd As New ADODB.Command 
Dim cnn As ADODB.Connection 

Set cnn = CurrentProject.Connection 

With cmd 
    .ActiveConnection = cnn 
    .CommandType = adCmdStoredProc 
    .NamedParameters = True 
    .CommandText = "nameOfParameterizedQuery" 
    .Parameters.Refresh 
End With 

...... 

但是它doesn't工作,仍然空着。我曾尝试在SQL查询中的SELECT语句之前添加以下代码来定义参数,如下所示:

PARAMETERS [parameter1] Datatype, [parameter2] Datatype .... ; 
SELECT .... 

但是我没有成功。我读过Microsoft Access ODBC和OLE DB驱动程序目前不支持自动参数填充。

这是真的吗?有没有办法使用ADO从MS Access数据库中的参数化查询中获取参数名称?

在此先感谢。

+0

我知道,但我习惯性地使用ADO,并且我想保持这种方式,因为从我的角度来看,它使未来迁移到其他数据库变得更加容易。 – Fiz

回答

0

是的,可以用ADODB做到这一点。你只需要进行一些小的修改您的VB代码(见下文):

Dim cmd as New ADODB.Command 
Dim cnn as New ADODB.Connection 

cnn.Provider = "blah" 
cnn.Open = "blah;blah" 

cmd.ActiveConnection = cnn 
cmd.CommandText = "NameOfParameterizedQuery" 
cmd.Parameters.Append cmd.CreateParameter(, adDate, adParamInput, Value:=#6/1/17#) 

Range("A1").CopyFromRecordset Cmd.Execute 

cnn.Close 
Set cmd = nothing 
Set cnn = nothing 


您可能还会喜欢: https://support.microsoft.com/en-us/help/181734/how-to-invoke-a-parameterized-ado-query-using-vba-c-java

我希望帮助。