* nMinVal and nMaxVal could be hardcoded, ref'd etc >>>cSQL = "select ... from "+; >>>"FROM <...> INTO CURSOR cursorname "+; >>>"WHERE myVal1 = trim(thisform.textbox1.value) "+; >>>" and myVal2 between "+; >>>"iif(empty(thisform.textbox2.value),nMinVal,thisform.textbox2.value) "+; >>>"and iif(empty(thisform.textbox2.value),nMaxVal,thisform.textbox2.value) "+; >>>" and myVal3 between "+; >>>"iif(empty(thisform.textbox3.value),{},thisform.textbox3.value) "+; >>>"and iif(empty(thisform.textbox3.value),date(),thisform.textbox3.value) "+; >>>.... >>>thisform.searchgrid.recordsource = cSQL >>>thisform.searchgrid.recordsourcetype = SQL >>>*Button.click >>>thisform.searchgrid.refreshCetin
* Testgrid is a copy of home()+"samples\data\orders" >* Important - all fields contained in SQL where are indexed >* (to_name, order_amt & order_date) >* Create text1, text2, text3 with values "",0,{} on a test form >* Testform.init >cSQL = "select * "+; >"FROM testgrid INTO CURSOR myCursor "+; >"WHERE to_name = trim(thisform.text1.value) "+; >" and order_amt between "+; >"iif(empty(thisform.text2.value),0,thisform.text2.value) "+; >"and iif(empty(thisform.text2.value),999999,thisform.text2.value) "+; >" and order_date between "+; >"iif(empty(thisform.text3.value),{},thisform.text3.value) "+; >"and iif(empty(thisform.text3.value),date(),thisform.text3.value) " >thisform.searchgrid.recordsourcetype = 4 >thisform.searchgrid.recordsource = cSQLCetin