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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es für mich wie Sie versuchen um den parameter-Wert in der Zeichenfolge, die enthält Ihre
SELECT
- Anweisung. Allerdings bin ich mir nicht sicher, ob ich verstehe, was Sie versuchen zu tun, so werde ich Ihnen eine einfache getestet Parameterabfrage öffnet ein recordset aus einerADODB.Command
Objekt.Dies ist das Direktfenster-Ausgabe aus dem folgenden code:
Code: