FreonIceMan
Registered User.
- Local time
- Today, 03:03
- Joined
- May 31, 2011
- Messages
- 19
I am trying to search for a partial number in the primary key field. I have based my search off Allen Browne's search form http://allenbrowne.com/ser-62.html
I have posted my full code below. I am having trouble with the portion searching the Member_ID field.
My first version:
I would get a Run-time error '3464':
Data type mismatch in criteria expression.
My second Version: (I was searching for 54)
I would get a Run-time error '3075'
Syntax error (missing operator) in query expression '([Member_ID] = Like "*54*")'
Version 3:
If I use this the search works when the Member_ID matches exactly
Does anyone see what I am doing wrong?
Thanks,
Freon
Full Code:
I have posted my full code below. I am having trouble with the portion searching the Member_ID field.
My first version:
I would get a Run-time error '3464':
Data type mismatch in criteria expression.
Code:
If Not IsNull(Me.txtMember_ID) Then
strWhere = strWhere & "([Member_ID] = """ & Me.txtMember_ID & """) AND "
End If
I would get a Run-time error '3075'
Syntax error (missing operator) in query expression '([Member_ID] = Like "*54*")'
Code:
If Not IsNull(Me.txtMember_ID) Then
strWhere = strWhere & "([Member_ID] = Like ""*" & Me.txtMember_ID & "*"") AND "
End If
If I use this the search works when the Member_ID matches exactly
Code:
If Not IsNull(Me.txtMember_ID) Then
strWhere = strWhere & "([Member_ID] = " & Me.txtMember_ID & ") AND "
End If
Thanks,
Freon
Full Code:
Code:
Private Sub Member_Search_Click()
'Purpose: Build up the criteria string form the non-blank search boxes, and apply to the form's Filter.
'Notes: 1. We tack " AND " on the end of each condition so you can easily add more search boxes; _
we remove the trailing " AND " at the end.
' 2. The date range works like this: _
Both dates = only dates between (both inclusive. _
Start date only = all dates from this one onwards; _
End date only = all dates up to (and including this one).
Dim strWhere As String 'The criteria string.
Dim lngLen As Long 'Length of the criteria string to append to.
Const conJetDate = "\#mm\/dd\/yyyy\#" 'The format expected for dates in a JET query string.
'***********************************************************************
'Look at each search box, and build up the criteria string from the non-blank ones.
'***********************************************************************
'Text field example. Use quotes around the value in the string.
If Not IsNull(Me.txtMember_ID) Then
strWhere = strWhere & "([Member_ID] = """ & Me.txtMember_ID & """) AND "
End If
'Another text field example. Use Like to find anywhere in the field.
If Not IsNull(Me.txtLast_Name) Then
strWhere = strWhere & "([Last_Name] Like ""*" & Me.txtLast_Name & "*"") AND "
End If
'Another text field example. Use Like to find anywhere in the field.
If Not IsNull(Me.txtFirst_Name) Then
strWhere = strWhere & "([First_Name] Like ""*" & Me.txtFirst_Name & "*"") AND "
End If
'Another text field example. Use Like to find anywhere in the field.
If Not IsNull(Me.txtDate_Of_Birth) Then
strWhere = strWhere & "([Date_Of_Birth] Like ""*" & Me.txtDate_Of_Birth & "*"") AND "
End If
'***********************************************************************
'Chop off the trailing " AND ", and use the string as the form's Filter.
'***********************************************************************
'See if the string has more than 5 characters (a trailng " AND ") to remove.
lngLen = Len(strWhere) - 5
If lngLen <= 0 Then 'Nah: there was nothing in the string.
MsgBox "No criteria", vbInformation, "Nothing to do."
Else 'Yep: there is something there, so remove the " AND " at the end.
strWhere = Left$(strWhere, lngLen)
'For debugging, remove the leading quote on the next line. Prints to Immediate Window (Ctrl+G).
'Debug.Print strWhere
'Finally, apply the string as the form's Filter.
Me.Filter = strWhere
Me.FilterOn = True
End If
End Sub
Last edited: