Procedure PrepareQuery lcFromAccount = Upper(Request.Form("From_Account")) lcToAccount = Upper(Request.Form("To_Account")) lcContract = Upper(Request.Form("Contract")) lcAddress = Upper(Request.Form("Address")) lcName = Upper(Request.Form("Borrowername")) lcParcel = Upper(Request.Form("Parcel")) lcCounty = Upper(Request.Form("County")) lcSt = Upper(Request.Form("State")) lcCollector = Upper(Request.Form("Collector")) lcBranch = Upper(Request.Form("Branch")) lcChk = lcFromAccount+lcToAccount+lcContract+lcAddress+lcName+lcParcel+lcCounty+lcSt+lcCollector+lcBranch If !Empty(lcChk) Select Users Do runquery Select Users Repl workarea1 With datatoxml([temp]) Else If !Empty(Users.workarea1) xmltodata(Users.workarea1,[temp]) Endif Endif Endproc Procedure runquery Local lcWhere, lnX lcWhere = GetFilters() lnX = Len(lcWhere) - 3 && get rid of leading [AND] in filter string lcWhere = Right(lcWhere,lnX) Set Ansi On Select a.wcode, Min(d.st+d.cnty+d.unit) As collector, b.display_loan, d.acct, b.borrowername, a.branch, Min(b.Id) As loan_id, Min(a.Id) As property_id ; from mtgproperty a , ; mtgloan b, ; mtgacctnum d; INTO Cursor temp ; where (a.client_id = Users.client_id); AND (b.Id = a.loan_id ); and (a.Id = d.property_id )And &lcWhere ; GROUP By 1, 3, 4, 5, 6 Endproc Function GetFilters Local lcFilter, lcCRLF *!* lcFromAccount *!* lcToAccount *!* lcContract *!* lcAddress *!* lcName *!* lcParcel *!* lcCounty *!* lcSt *!* lcCollector *!* lcBranch lcFilter = [] lcCRLF = Chr(13)+Chr(10) If !Empty(lcFromAccount) lcFilter = lcFilter + [AND (b.loan >= lcFromAccount)] Endif If !Empty(lcToAccount) lcFilter = lcFilter + [AND (b.loan <= lcToAccount)] Endif If !Empty(lcContract) lcFilter = lcFilter + [AND (b.contract == lcContract)] Endif If !Empty(lcAddress) lcFilter = lcFilter + [AND (a.situs_addr1 == lcAddress)] Endif If !Empty(lcName) lcFilter = lcFilter + [AND (b.borrowername == lcName)] Endif If !Empty(lcParcel) lcFilter = lcFilter + [AND (d.acct == lcParcel)] Endif If !Empty(lcCounty) lcFilter = lcFilter + [AND (a.county == lcCounty)] Endif If !Empty(lcSt) lcFilter = lcFilter + [AND (a.st == lcSt)] Endif If !Empty(lcCollector) lcFilter = lcFilter + [AND (d.st+d.cnty+d.unit == lcCollector)] Endif Return lcFilter Endfunc