* 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