[以下では、vba でパラメーターを設定して、アクセス クエリに送信します。クエリは、開始日、終了日、理由コード、およびサブグループを取ります。整数であるサブグループを除いて、すべての基準は文字列です。
Sub FinalDrill()
'Step 1: Declare your variables
Dim DatabasePath As String
DatabasePath = ThisWorkbook.Path & "\SpreadSheetData.accdb"
Dim MyDatabase As DAO.Database
Dim MyQueryDef As DAO.QueryDef
Dim MyRecordset As DAO.Recordset
Dim i As Integer
'Step 2: Identify the database and query
Set MyDatabase = DBEngine.OpenDatabase _
(DatabasePath)
Set MyQueryDef = MyDatabase.QueryDefs("FinalDrill")
'Step 3: Define the Parameters
With MyQueryDef
.Parameters("[Start Date]") = GetStartDate()
.Parameters("[End Date]") = GetEndDate()
.Parameters("[Reason Code]") = "C"
.Parameters("[Sub Group]") = 2
End With
'Step 4: Open the query
Set MyRecordset = MyQueryDef.OpenRecordset
最後の行で「実行時エラー 3464」がスローされます - 条件式のデータ型が一致しません
開始日と終了日だけで別のサブからこの正確なタイプのクエリを実行し、それがうまく機能するため、取得できません....コメントアウトしても
'.Parameters("[Reason Code]") = "C"
'.Parameters("[Sub Group]") = 2
アクセスクエリを開始日と終了日以外のみに変更すると、同じエラーが発生します。
多分私は疲れていて、明らかな何かが欠けています。どんな助けも素晴らしいでしょう。
アップデート
以下のクエリは機能するので、アクセスクエリに問題があると推測しています。
'Step 1: Declare your variables
Dim DatabasePath As String
DatabasePath = ThisWorkbook.Path & "\SpreadSheetData.accdb"
Dim MyDatabase As DAO.Database
Dim MyQueryDef As DAO.QueryDef
Dim MyRecordset As DAO.Recordset
Dim i As Integer
'Step 2: Identify the database and query
Set MyDatabase = DBEngine.OpenDatabase _
(DatabasePath)
Set MyQueryDef = MyDatabase.QueryDefs("levelOnePie")
'Step 3: Define the Parameters
With MyQueryDef
.Parameters("[Start Date]") = GetStartDate()
.Parameters("[End Date]") = GetEndDate()
End With
'Step 4: Open the query
Set MyRecordset = MyQueryDef.OpenRecordset
私がそれらを見つけると、より多くの結果で更新されます.