2016-04-19 14 views
1

Ich versuche Parameter Namen aus einer parametrisierte Abfrage in einer MS Access-Datenbank mit diesem Code gespeichert zu bekommen:VBA ADODB - Getting Parameter aus parametrisierte Abfrage

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 

...... 

aber es spielt keine Arbeit, da Parameter Sammlung bleibt leer. Ive versucht, Parameter zu definieren, den folgenden Code vor der SELECT-Anweisung in der SQL-Abfrage wie:

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

Aber ich habe keinen Erfolg gehabt. Ich habe gelesen, dass Microsoft Access ODBC- und OLE DB-Treiber zur Zeit keine automatische Parameterpopulation unterstützen.

Stimmt das? Gibt es eine Möglichkeit, ADO zu verwenden, um Parameternamen aus einer parametrisierten Abfrage in einer MS Access-Datenbank abzurufen?

Vielen Dank im Voraus.

+0

Ich weiß, aber ich normalerweise ADO verwenden und ich möchte diesen Weg beibehalten, da es aus meiner Sicht erleichtert eine zukünftige Migration auf eine andere Datenbank. – Fiz

Antwort

0

Ja, dies ist mit ADODB möglich. Sie müssen nur ein paar kleineren Änderungen an Ihrem VB-Code machen (siehe unten):

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 


Sie können auch mögen: https://support.microsoft.com/en-us/help/181734/how-to-invoke-a-parameterized-ado-query-using-vba-c-java

Ich hoffe, das hilft.

Verwandte Themen