I created a search form (using code from here) that searches serveral fields and displays the results in a listbox. I also created a clear button to clear the fields, including the listbox. I can search all day and it works fine, and the CLEAR button clears out the fields fine but once I have clicked the CLEAR button, I cannot search anymore. I don't get any results anymore (until I close and reopen). It must be something simple that I am overlooking so any hints would be appreciated.
Here is my code (sorry it's long!):
Private Sub cmdClearForm_Click()
On Error GoTo Err_cmdClearForm_Click
Dim I As Integer
' Cycle through the form's controls, testing for text,
' and clear each field.
For I = 0 To Me.Count - 1
If TypeOf Me(I) Is TextBox Then
Me(I) = ""
ElseIf TypeOf Me(I) Is ListBox Then
Me(I).RowSource = " "
End If
Next
Me.txtMacAddr1.SetFocus
Exit_cmdClearForm_Click:
Exit Sub
Err_cmdClearForm_Click:
MsgBox Err.Description
Resume Exit_cmdClearForm_Click
End Sub
Private Sub cmdSearch_Click()
On Error GoTo Err_cmdSearch_Click
Dim strSQL As String, strOrder As String, strWhere As String, strOrderChoice As String
Dim db As DAO.Database
'Dim qryDef As QueryDef
Set db = CurrentDb()
strSQL = "SELECT tblAsset.MacAddr1, tblAsset.SerialNum, tblIPAddresses.IPAddress,tblIPAddresses.HostName, tblLocation.JackNumber, tblLocation.CircuitID, tblLocation.Department,tblLocation.SpecificLoc, tblLocation.User, tblLocation.Building, tblLocation.RoomNumber " & _
"FROM tblAsset, tblIPAddresses, tblLocation " & _
"WHERE tblAsset.AssetNum=tblIPAddresses.AssetNum and tblAsset.AssetNum=tblLocation.AssetNum"
strWhere = " and "
strOrder = "order by"
strOrderChoice = "tblLocation.Department"
If Not IsNull(Me.txtMacAddr1) Then
strWhere = strWhere & "(tblAsset.MacAddr1) like '*" & Me.txtMacAddr1 & "*' and "
strOrderChoice = "tblAsset.MacAddr1"
End If
If Not IsNull(Me.txtMacAddr1) Then
strWhere = strWhere & "(tblAsset.MacAddr2) like '*" & Me.txtMacAddr1 & "*' and "
strOrderChoice = "tblAssest.MacAddr2"
End If
If Not IsNull(Me.txtSerialNum) Then
strWhere = strWhere & "(tblAsset.SerialNum) like '*" & Me.txtSerialNum & "*' and "
strOrderChoice = "tblAsset.SerialNum"
End If
If Not IsNull(Me.txtIPAddress) Then
strWhere = strWhere & "(tblIPAddresses.IPAddress) like '*" & Me.txtIPAddress & "*' and "
strOrderChoice = "tblIPAddresses.IPAddress"
End If
If Not IsNull(Me.txtHostName) Then
strWhere = strWhere & "(tblIPAddresses.HostName) like '*" & Me.txtHostName & "*' and "
strOrderChoice = "tblIPAddresses.HostName"
End If
If Not IsNull(Me.txtJackNumber) Then
strWhere = strWhere & "(tblLocation.JackNumber) like '*" & Me.txtJackNumber & "*' and "
strOrderChoice = "tblLocation.JackNumber"
End If
If Not IsNull(Me.txtCircuitID) Then
strWhere = strWhere & "(tblLocation.CircuitID) like '*" & Me.txtCircuitID & "*' and "
strOrderChoice = "tblLocaton.CircuitID"
End If
If Not IsNull(Me.txtBuilding) Then
strWhere = strWhere & "(tblLocation.Building) like '*" & Me.txtBuilding & "*' and "
strOrderChoice = "tblLocation.Building"
End If
strWhere = Mid(strWhere, 1, Len(strWhere) - 5)
Me.lstResults.RowSource = strSQL & " " & strWhere & " " & strOrder & " " & strOrderChoice
db.Close
Exit_cmdSearch_Click:
Exit Sub
Err_cmdSearch_Click:
MsgBox Err.Description
Resume Exit_cmdSearch_Click
End Sub
Here is my code (sorry it's long!):
Private Sub cmdClearForm_Click()
On Error GoTo Err_cmdClearForm_Click
Dim I As Integer
' Cycle through the form's controls, testing for text,
' and clear each field.
For I = 0 To Me.Count - 1
If TypeOf Me(I) Is TextBox Then
Me(I) = ""
ElseIf TypeOf Me(I) Is ListBox Then
Me(I).RowSource = " "
End If
Next
Me.txtMacAddr1.SetFocus
Exit_cmdClearForm_Click:
Exit Sub
Err_cmdClearForm_Click:
MsgBox Err.Description
Resume Exit_cmdClearForm_Click
End Sub
Private Sub cmdSearch_Click()
On Error GoTo Err_cmdSearch_Click
Dim strSQL As String, strOrder As String, strWhere As String, strOrderChoice As String
Dim db As DAO.Database
'Dim qryDef As QueryDef
Set db = CurrentDb()
strSQL = "SELECT tblAsset.MacAddr1, tblAsset.SerialNum, tblIPAddresses.IPAddress,tblIPAddresses.HostName, tblLocation.JackNumber, tblLocation.CircuitID, tblLocation.Department,tblLocation.SpecificLoc, tblLocation.User, tblLocation.Building, tblLocation.RoomNumber " & _
"FROM tblAsset, tblIPAddresses, tblLocation " & _
"WHERE tblAsset.AssetNum=tblIPAddresses.AssetNum and tblAsset.AssetNum=tblLocation.AssetNum"
strWhere = " and "
strOrder = "order by"
strOrderChoice = "tblLocation.Department"
If Not IsNull(Me.txtMacAddr1) Then
strWhere = strWhere & "(tblAsset.MacAddr1) like '*" & Me.txtMacAddr1 & "*' and "
strOrderChoice = "tblAsset.MacAddr1"
End If
If Not IsNull(Me.txtMacAddr1) Then
strWhere = strWhere & "(tblAsset.MacAddr2) like '*" & Me.txtMacAddr1 & "*' and "
strOrderChoice = "tblAssest.MacAddr2"
End If
If Not IsNull(Me.txtSerialNum) Then
strWhere = strWhere & "(tblAsset.SerialNum) like '*" & Me.txtSerialNum & "*' and "
strOrderChoice = "tblAsset.SerialNum"
End If
If Not IsNull(Me.txtIPAddress) Then
strWhere = strWhere & "(tblIPAddresses.IPAddress) like '*" & Me.txtIPAddress & "*' and "
strOrderChoice = "tblIPAddresses.IPAddress"
End If
If Not IsNull(Me.txtHostName) Then
strWhere = strWhere & "(tblIPAddresses.HostName) like '*" & Me.txtHostName & "*' and "
strOrderChoice = "tblIPAddresses.HostName"
End If
If Not IsNull(Me.txtJackNumber) Then
strWhere = strWhere & "(tblLocation.JackNumber) like '*" & Me.txtJackNumber & "*' and "
strOrderChoice = "tblLocation.JackNumber"
End If
If Not IsNull(Me.txtCircuitID) Then
strWhere = strWhere & "(tblLocation.CircuitID) like '*" & Me.txtCircuitID & "*' and "
strOrderChoice = "tblLocaton.CircuitID"
End If
If Not IsNull(Me.txtBuilding) Then
strWhere = strWhere & "(tblLocation.Building) like '*" & Me.txtBuilding & "*' and "
strOrderChoice = "tblLocation.Building"
End If
strWhere = Mid(strWhere, 1, Len(strWhere) - 5)
Me.lstResults.RowSource = strSQL & " " & strWhere & " " & strOrder & " " & strOrderChoice
db.Close
Exit_cmdSearch_Click:
Exit Sub
Err_cmdSearch_Click:
MsgBox Err.Description
Resume Exit_cmdSearch_Click
End Sub