villica,<br><br>Assuming your form is Bound, say to a table or query, you'd have, in addition to all the Bound textboxes, 3 additional Unbound textboxes, called txtFirst,txtLast,txtID.<br><br>In the Click event of the search button do this:<br>(assume table is called Table1)<br>dim sq as string<br>sq = "" 'init<br>If NOT isnull(Me!txtID) then<br> sq = "AND table1.ID = " & Me!txtID<br>End If<br><br>If NOT isnull(Me!txtID) then<br> sq = "AND table1.FirstName = """ & Me!txtFirst & """"<br>End If<br><br>If NOT isnull(Me!txtID) then<br> sq = "AND table1.Lastname = """ & Me!txtLast & """"<br>End If<br><br>If sq <> "" 'if any criteria<br> sq = "Where " & right$(sq,len(sq)-3) 'strip the first AND<br>End IF<br>sq = "SELECT * FROM Table1 " & sq 'if sq is blank, no problem, select all<br><br>Me.Recordsource = sq 'setting recordsource automatically requeries<br><br>You can mess with the equality operators and add LIKE, etc, also you'll probaly want to do some validation to make sure ID is a number (if it is indeed a number) etc...<br>--Jim<br>