Dies ist eine Folgefrage von MS Access OpenRedcordset reading wrong string. Ich bin mir sicher, dass ich genug Parameter habe, Felder Deklaration, um Werte an OpenRecordSet
Methode zu übergeben, aber ich bin immer noch fest.MS Access OpenRecordset und zu wenig Parameter Problem
Allgemeine Erklärung:
- Benutzer Eingabestartdatum und Enddatum auf ein Formular, das mein Abfragefiltern 2_Total (Einzelwert) My query
- Führen Sie die VBA-Funktion, die die Abfrage in eine Excel-Datei exportiert
Problem: Zu wenige Parameter. Erwartete 4 Fehler auf Set rst = qry.OpenRecordset(dbOpenDynaset)
SQLDesign View
PARAMETERS [BeginDate] DateTime, [EndDate] DateTime;
SELECT Sum(dbo_SO_SalesHistory.DollarsSold) AS SumOfDollarsSold
FROM dbo_SO_SalesHistory
WHERE (((dbo_SO_SalesHistory.InvoiceDate) Between [Forms]![RUN]![textBeginOrderDate] And [Forms]![RUN]![textendorderdate]));
VBA
Option Compare Database
Option Explicit
Public Function Trans2()
Dim xlApp As Excel.Application
Dim xlWB As Excel.Workbook
Dim xlWS As Excel.Worksheet
Dim acRng As Variant
Dim xlRow As Integer
Dim db As DAO.Database
Dim qry As QueryDef
Dim rst As Recordset
Dim prm As DAO.Parameter
Dim strSQL As String
Set db = CurrentDb
Set xlApp = New Excel.Application
Set xlWB = xlApp.Workbooks.Open("C:\Users\J\Desktop\August 2017.xlsx")
Set xlWS = xlWB.Worksheets("Totals")
xlRow = (xlWS.Columns("K").End(xlDown).Row)
Set qry = db.QueryDefs("2_Total")
qry![BeginDate] = [Forms]![Run]![textBeginOrderDate]
qry![EndDate] = [Forms]![Run]![textendorderdate]
Set rst = qry.OpenRecordset(dbOpenDynaset)
Dim c As Integer
c = 11 'C is the one that stores column number, in which c=1 means column A, 11 is for column K, 12 for Column L
xlRow = xlRow + 11
Do Until rst.EOF
For Each acRng In rst.Fields
xlWS.Cells(xlRow, c).Formula = acRng
c = c + 1
Next acRng
xlRow = xlRow + 1
c = 1
rst.MoveNext
If xlRow > 25 Then GoTo rq_Exit
Loop
rq_Exit:
rst.Close
Set rst = Nothing
Set xlWS = Nothing
xlWB.Close acSaveYes
Set xlWB = Nothing
xlApp.Quit
Set xlApp = Nothing
Exit Function
End Function
Die folgenden nicht lösen das Problem. Ich habe immer noch zu wenige Parameter. Erwarteter 4 Fehler.
qry.Parameters("BeginDate").Value = [Forms]![Run]![textBeginOrderDate]
qry.Parameters("EndDate").Value = [Forms]![Run]![textendorderdate]
Mögliches Duplikat [? Ist es möglich, Parameter programmatisch in einer Microsoft Access-Update-Abfrage zu übergeben] (https : //stackoverflow.com/questions/16568461/is-it-possible-to-pass-parameters-programmatical-in-a-microsoft-access-update) –