Code:
Private Sub FindRecords()
Dim strsql As String
Dim strField1 As String, strField2 As String, strFor1 As String, strFor2 As String
Dim strField As String, strStart As String, strEnd As String
With Me
.grpFilter = Null
.lbxQueries = Null
strFor1 = Nz(.cbxFor1, "")
strFor2 = Nz(.cbxFor2, "")
strField1 = CustomQuerySettings(Nz(.cbxField1, ""))
strField2 = CustomQuerySettings(Nz(.cbxField2, ""))
strField = CustomQuerySettings(Nz(.cbxCategory, ""))
If strField = "LabNum" Then
strStart = "'" & Nz(.tbxStart, "") & "'"
strEnd = "'" & Nz(.tbxEnd, "") & "'"
Else
strStart = "#" & Nz(.tbxStart, "") & "#"
strEnd = "#" & Nz(.tbxEnd, "") & "#"
End If
strsql = IIf(IsNull(.cbxField1) Or (Not IsNull(.cbxField1) And IsNull(.cbxFor1)), "", strField1 & "='" & strFor1 & "'")
strsql = strsql & IIf(IsNull(.cbxField2) Or (Not IsNull(.cbxField2) And IsNull(.cbxFor2)), "", IIf(strsql = "", "", " AND ") & strField2 & "='" & strFor2 & "'")
strsql = strsql & IIf(IsNull(.cbxCategory) Or (Not IsNull(.cbxCategory) And (IsNull(.tbxStart) Or IsNull(.tbxEnd))), "", IIf(strsql = "", "", " AND ") & strField & " BETWEEN " & strStart & " AND " & strEnd)
strsql = strsql & IIf(IsNull(.cbxTest), "", IIf(strsql = "", "", " AND ") & "TestNum='" & .cbxTest & "'")
If strsql = "" Then
MsgBox "Must select criteria!", vbOKOnly, "EntryError"
ElseIf Not IsNull(.cbxTest) Then
.ctrSampleList.Form.RecordSource = "SELECT Submit.*, TestNum, StateNum, ProjectName, ProgCode, LedgerCode, Colo, FedNum, Metric, Remark1, Remark2, Remark3, Remark4, Remark5, Remark6 " & _
"FROM ((Submit LEFT JOIN Projects ON Submit.ProjRecID = Projects.ProjRecID) LEFT JOIN Remarks ON Submit.LabNum = Remarks.LabNum) " & _
"LEFT JOIN Tests ON Submit.LabNum = Tests.LabNum " & _
"ORDER BY Submit.LabNum DESC;"
End If
.ctrSampleList.Form.Filter = strsql
.ctrSampleList.Form.FilterOn = True
.tbxLABNUM.SetFocus
End With
End Sub
My setup is to search for a specific text string and/or a range (lab number or date). If you want search on number fields as an option, the code will have to be structured to know 'the selected field is numeric so do search as number'. This could mean If Then Else or Select Case structures. I use combobox for selecting the search field and combobox for selecting the specific criteria. The criteria combobox RowSource is set by code in the field list combobox AfterUpdate event.