0

[以下では、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

私がそれらを見つけると、より多くの結果で更新されます.

4

1 に答える 1

0

OK、関数 GetStartDate() と GetEndDate() は他の subs() の前のクエリで機能しますが、Wawrzyniec が言ったことを考えて、日付パラメーターをそれらを保持するセルに変更しました。

With MyQueryDef
    .Parameters("[Start Date]") = Sheets("DASHBOARD").[C4]
    .Parameters("[End Date]") = Sheets("DASHBOARD").[C5]
    .Parameters("[Reason Code]") = "C"
    .Parameters("[Sub Group]") = 2
End With

日付を取得するためにこれらの関数を使用した理由は、ダッシュボードの機能が StartDate セルが空の場合、データの開始日を使用し、終了日がない場合は今日の日付を使用することを意味していたためです。

このドリル ダウンの前に他の 2 つのドリル ダウンが実行されるので、日付をセルに配置して、この最後のドリル ダウンで取得できるようにします。

于 2013-03-11T01:03:49.143 に答える