これは、MS Access OpenRedcordset reading wrong stringのフォローアップの質問です。私はOpenRecordSet
メソッドに値を渡すために十分なパラメータ、フィールド宣言を持っていると確信していますが、私はまだ固執しています。MS Access OpenRecordsetでパラメータが少なすぎる
一般的な説明:私のクエリをフィルタし、フォーム上の
- ユーザー入力の開始日と終了日を2_Total(単一の値)My query
- は、ExcelファイルにクエリをエクスポートするVBA関数を実行します
問題: パラメータが少なすぎます。 4エラー SQL
Set rst = qry.OpenRecordset(dbOpenDynaset)
の期待Design 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
以下は、問題を解決していません。私はまだパラメータが少なすぎます。予想される4エラー。
qry.Parameters("BeginDate").Value = [Forms]![Run]![textBeginOrderDate]
qry.Parameters("EndDate").Value = [Forms]![Run]![textendorderdate]
の可能性のある重複した[それは、Microsoft Accessの更新クエリでプログラムパラメータを渡すことは可能ですか?](HTTPS ://stackoverflow.com/questions/16568461/is-it-possible-to-pass-parameters-programmatically-in-a-microsoft-access-update) –