テーブル( "ApplicationTable")からレコードを取得するためのかなりの骨なし検索ツールを作成しようとしています。ユーザーは、テーブル内のフィールド(ApplicationID、FirstName、LastNameなど)に対応するテキストボックスコントロールの数を含むフォームが表示されます。フィールドにデータを入力してから、ボタンをクリックします。検索では、対応するフィールドに検索パラメータが含まれる各レコードが返され、空の検索フィールドは無視されます。データがポップアップするレポートに表示されます。vbaを使用せずに検索機能のクエリを調整しようとしています
たとえば、 "A17"をApplicationIDコントロールに入力すると、ApplicationIDフィールドに "A17"が含まれているすべてのレコードが返されます。 ApplicationIDに "A17"、FirstNameに "John"を入力すると、ApplicationIDフィールドに "A17"が含まれ、FirstNameフィールドに "John"が含まれているすべてのレコードが返されます。すべてのフィールドを空白にして検索ボタンを押すと、テーブル内のすべてのレコードが返されます。
残念ながら、私の人生の間、私はこのことを単純なクエリで動かすためのSQL権限を得ることができないので、vbaを使用する必要があります。しかし、私はそれが必要以上に複雑になっているので、したくないです。 (たとえば、私は結果をExcelにエクスポートしようとしています。これは、transferspreadsheetが動的SQLを受け入れることができないためです)。
SELECT ApplicationTable.PrimaryAppID, ApplicationTable.ApplicationID, ApplicationTable.NevadaApplicationID,
ApplicationTable.EarliestReceivedDate, ApplicationTable.ClaimantFirstName, ApplicationTable.ClaimantLastName,
ApplicationTable.AssignedStaff, ApplicationTable.ContactDate, ApplicationTable.VictimDescription
FROM ApplicationTable;
ヘルプ:それは上の任意のフィルタなしで、
Dim QueryStr As String
Dim AddAnd As Boolean
AddAnd = False
If Not IsNull([Forms]![ClientSearchForm]![ApplicationID]) Then
QueryStr = QueryStr & "((ApplicationTable.ApplicationID) Like '*' &
[Forms]![ClientSearchForm]![ApplicationID] & '*')"
AddAnd = True
End If
If Not IsNull([Forms]![ClientSearchForm]![NevadaApplicationID]) Then
If AddAnd = True Then
QueryStr = QueryStr & " AND "
End If
QueryStr = QueryStr & "((ApplicationTable.NevadaApplicationID) Like '*'
& [Forms]![ClientSearchForm]![NevadaApplicationID] & '*')"
AddAnd = True
End If
If Not IsNull([Forms]![ClientSearchForm]![FirstName]) Then
If AddAnd = True Then
QueryStr = QueryStr & " AND "
End If
QueryStr = QueryStr & "((ApplicationTable.ClaimantFirstName) Like '*' &
[Forms]![ClientSearchForm]![FirstName] & '*')"
AddAnd = True
End If
If Not IsNull([Forms]![ClientSearchForm]![LastName]) Then
If AddAnd = True Then
QueryStr = QueryStr & " AND "
End If
QueryStr = QueryStr & "((ApplicationTable.ClaimantLastName) Like '*' &
[Forms]![ClientSearchForm]![LastName] & '*')"
AddAnd = True
End If
If Not IsNull([Forms]![ClientSearchForm]![AssignedStaff]) Then
If AddAnd = True Then
QueryStr = QueryStr & " AND "
End If
QueryStr = QueryStr & "((ApplicationTable.AssignedStaff) Like '*' &
[Forms]![ClientSearchForm]![AssignedStaff] & '*')"
AddAnd = True
End If
If Not IsNull([Forms]![ClientSearchForm]![VictimDescription]) Then
If AddAnd = True Then
QueryStr = QueryStr & " AND "
End If
QueryStr = QueryStr & "((ApplicationTable.VictimDescription) Like '*' &
[Forms]![ClientSearchForm]![VictimDescription] & '*')"
AddAnd = True
End If
DoCmd.OpenReport "ClientSearchQuery", acViewReport, , QueryStr
"ClientSearchQuery" 私が使用しているコアのクエリは次のとおりです。ここで
は、私が現在使用しているVBAコードのですか?私はiifsを使用してSQLだけでこの問題を解決する必要があると仮定しますが、構文を正しく取得できず、エラーが返されるか間違った結果が返されます。
これは完璧に機能しました。 –