1

VBA モジュールに次の SQL ステートメントがあります。

dbs.Execute "INSERT INTO PA2001CustomReportingTable ([Personnel No], [Subtype], [Start Date], [End Date], [CalDays]) " & _
"SELECT [Personnel No], [Subtype], [Start Date], [End Date], [CalDays] FROM PA2001 " & _
"WHERE ([PA2001].[Cal  days] > 0) AND ([PA2001].[Start Date]>=#" & StartDatePA2001Lower & "#) AND ([PA2001].[End Date]<=#" & EndDatePA2001Upper & "#) AND (" & GetListOfInclusionTypes() & ");"

GetListOfInclusionTypes 呼び出し関数は、ユーザー フォームのリスト ボックスでのユーザー選択を使用して文字列を作成する単純な文字列ビルダーです。

Function GetListOfInclusionTypes() As String

Dim i As Integer
Dim isFirst As Boolean
isFirst = True

'Convert Listbox into String of Selected Leave Types
For i = 0 To Forms("MainReport").Controls("SelLeaveTypes").ListCount - 1

    If Forms("MainReport").Controls("SelLeaveTypes").Selected(i) Then
        If isFirst = True Then
        GetListOfInclusionTypes = "[PA2001].[Subtype]=" & Chr(34) & Forms("MainReport").Controls("SelLeaveTypes").Column(0, i) & Chr(34)
        isFirst = False
        Else
        GetListOfInclusionTypes = GetListOfInclusionTypes & " OR [PA2001].[Subtype]=" & Chr(34) & Forms("MainReport").Controls("SelLeaveTypes").Column(0, i) & Chr(34)
        End If

    End If
Next i

End Function

構築されるサンプル文字列は次のとおりです。

[PA2001].[Subtype] = "0100" Or [PA2001].[Subtype] = "0200" Or [PA2001].[Subtype] = "0300"

ただし、Insert into SQL ステートメントが実行されると、SQL Where 句で指定された日付範囲に該当しない新しいテーブルにデータが挿入されます。私は間違いがどこにあるのか見ていません..

4

1 に答える 1