Wie rufen Sie MS Access-Parameter-Abfragen mit VBA-dynamische SQL-SELECT-Anweisungen

Ich gesucht habe, MSDN, StackOverflow, SQLServer-zentrale und zu vielen Seiten zu erwähnen. Ich habe versucht, für ein paar Tage, um einen Weg finden, um auszuführen, parameter-Abfragen in MS Access unter Verwendung von dynamischer SQL-SELECT-Anweisungen in Excel-VBA-code. Das system das ich verwende, funktioniert sehr gut mit SQL Server TVFs, aber ich habe es zu konvertieren, um Zugriff aufgrund von Verlust-server-Unterstützung. Der VBA-code gestartet wird, indem die Schleife durch einen 'input' - Blatt in der Excel-picking-up-parameter-Werte und-Funktion/Abfrage-Namen, die verwendet wird, um dynamische SQL-SELECT-Anweisungen. Hier ist der code, der baut die Verbindung auf und ruft die Access-Abfrage nur für eine der Abfragen (es sind 20), erfordert nur 1 input-Parameter:

Dim strSQL

' set up our connection
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\PathToDB Tables 2013-12-13.accdb;"
Set conn = CreateObject("ADODB.Connection")
conn.Open strConnection
' open the view and create the report
Set rs = CreateObject("ADODB.recordset")
Application.ODBCTimeout = 0
conn.CommandTimeout = 0
strSQL = "select * FROM "
strSQL = strSQL & strFunction
strSQL = strSQL & " (" & strParameters & ");"
'strSQL = strSQL & strOrderBy
rs.Open strSQL, conn

Den Wert in strSQL an dieser Stelle ist SELECT * FROM Report_1_2_StaffAdds (#12/31/2013#);

Tritt der Fehler in der Zeile rs.Open strSQL, conn
Mit der Fehlermeldung ‘Syntaxfehler in FROM-Klausel.'

Hier ist die MS-Access-Query: Query name ist Report_1_2_StaffAdds)

PARAMETERS [previous_month] DateTime;
SELECT [1_2_StaffAddsPart1].Unit, [1_2_StaffAddsPart1].Role, [1_2_StaffAddsPart1].Start_Date, [1_2_StaffAddsPart2].First_Worked, [1_2_StaffAddsPart2].Last_Worked, [1_2_StaffAddsPart1].Emp_Name, [1_2_StaffAddsPart1].Emp_Id, [1_2_StaffAddsPart2].Hours_to_Date
FROM 1_2_StaffAddsPart1 INNER JOIN 1_2_StaffAddsPart2 ON [1_2_StaffAddsPart1].Emp_Id = [1_2_StaffAddsPart2].Emp_Id;

Jede Hilfe wird sehr geschätzt. Ich glaube, wenn ich eine Antwort bekommen können, ich kann überarbeiten, um bis zu 3 input-Parameter, je nachdem, welche Access-Abfrage zu einem gegebenen Zeitpunkt.

  • user3299120, versuchen Sie bitte, um sicherzustellen, dass Ihr code wird formatiert, nachdem Sie posten Sie Ihre Frage
  • Hinzugefügt MS-Access-tag, um Ihre Frage, die richtigen Menschen, die sich auf Ihre Frage
InformationsquelleAutor user3299120 | 2014-02-11
Schreibe einen Kommentar