注:私はVBAにかなり慣れていません。カスタム フィルターにOr機能を作成しようとしています。ここで、ユーザーはいずれかをフィルター処理するオプションを使用できます。ユーザーが3つのフィールド、比較、基準をすべて選択して1つの選択にする必要があると考えています.Orボタンを押すと、別の選択が生成されます...フィルターボタンをクリックするまで。これまでのところ機能するフィルターのコードがあります。
これは私がこれまでに持っているばかげたドラフトです Private Sub cmdOr_Click()
Dim selectOr As Integer
ここで、これら 3 つのフィールドを 1 つのインジケーターに設定する方法がわかりません
selectOr = Field & Comparison & Criteria
If IsNull(selectOr) Then
MsgBox "All three fields, Comparison and Criteria must be selected", vbOKCancel, "Filter"
Else
selectOr
ここでは、ユーザーができるだけ多くのOr
オプションを選択できるように、私のインクリメントを行います。
selectOr 1
End Sub
はっきりしているといいのですが、そうでない場合はお知らせください!ありがとう!
これまでのところ、フィルターボタンにあるものは次のとおりです。注: 辞書、コレクション、その他のモジュールが使用されています。
Private Sub cmdOK_Click()
Dim Filter As IFilter, filterString As String, filterComparison As String, FilterCriteria As String, sanitizedFilterCriteria As
String, PrimaryFilter As String, primarySchema As String,
primaryTable As String, primaryKey As String, targetTable As String,
targetField As String, Target() As String, filterItem As
ControlDefinition_Filter
Me.Dirty = False
'Gather data for the primary filter from the active form
With XFormToFilter
.ResetFilter
Set .FilterBuilder.FormToFilter = FormToFilter
PrimaryFilter = IIf(.BaseFilter = vbNullString, _
.NullFilter, _
.BaseFilter)
primaryTable = .FilterTable
primaryKey = .key
End With
With Me.RecordsetClone
If .RecordCount > 0 Then
.MoveFirst
Do While Not .EOF
'Get the schema, table/view, and control targetted by the filter
Target = Split(.fields("Field").Value, ".")
targetTable = IIf(Left(Target(0), 6) = "SELECT", GetTableName(Target(0)), Target(0))
targetField = Target(1)
filterComparison = Nz(.fields("Comparison").Value, vbNullString)
FilterCriteria = Nz(.fields("Criteria").Value, vbNullString)
Set filterItem = filterDict.item(.fields("Field").Value)
If filterItem.HasCriteria Then 'Get the stored equivalent for the criterion if available
sanitizedFilterCriteria = filterItem.GetCriteriaValue(FilterCriteria)
If sanitizedFilterCriteria <> vbNullString Then _
FilterCriteria = sanitizedFilterCriteria
End If
filterString = _
CreateFilterString(.fields("FieldType"), targetField, targetTable, _
filterComparison, FilterCriteria)
filterString = FilterRegExp(filterString)
If Filter Is Nothing Then
Set Filter = XFormToFilter.FilterBuilder
Filter.SetPrimaryFilter PrimaryFilter, primaryTable, primaryKey
End If
Filter.AddSubFilter "Filter" & .fields("ID"), _
filterString, targetTable, subformDict(targetTable)
.MoveNext
Loop
End If
End With
If Not Filter Is Nothing Then
Dim finalFilter As String
Filter.OpenFilteredRecordset
XFormToFilter.SetFoundRecords
DoCmd.Close acForm, "Filter_Create_popup", acSaveNo
End If
'error handling is here
End Sub`