/* The form designer reformats the contents of the query's sql property. This copy for easy reference l0 = "select e.*, " l0 += "extract(day from e.hiredate) as dd, " l0 += "extract(month from e.hiredate) as mm, " l0 += "extract(year from e.hiredate) as yy " l0 += "from EMPLOYEES e " l0 += "where (extract(day from hiredate) between :dd1 and :dd2 ) " l0 += "and (extract(month from hiredate) between :mm1 and :mm2 ) " l0 += "and (extract(year from hiredate) between :yy1 and :yy2 ) " l0 += "order by yy,mm,dd " sql = l0 */ ** END HEADER -- do not remove this line // // Generated on 2023-09-16 // parameter bModal local f f = new date_pictureForm() if (bModal) f.mdi = false // ensure not MDI f.readModal() else f.open() endif class date_pictureForm of FORM with (this) onOpen = class::FORM_ONOPEN height = 19.5909 left = 19.8571 top = 1.7727 width = 93.7143 text = "" endwith this.DBASESAMPLES1 = new DATABASE(this) with (this.DBASESAMPLES1) left = 26.0 width = 11.0 height = 1.0 databaseName = "DBASESAMPLES" active = true endwith this.EMPLOYEES1 = new QUERY(this) with (this.EMPLOYEES1) left = 3.0 width = 8.0 height = 1.0 database = form.dbasesamples1 l0 = "select e.*, " l0 += "extract(day from e.hiredate) as dd, " l0 += "extract(month from e.hiredate) as mm, " l0 += "extract(year from e.hiredate) as yy " l0 += "from EMPLOYEES e " l0 += "where (extract(day from hiredate) between :dd1 and :dd2 ) " l0 += "and (extract(month from hiredate) between :mm1 and :mm2 ) " l0 += "and (extract(year from hiredate) between :yy1 and :yy2 ) " l0 += "order by yy,mm,dd " sql = l0 params["dd1"] = 0 params["dd2"] = 31 params["mm1"] = 0 params["mm2"] = 12 params["yy1"] = 0 params["yy2"] = 3000 active = true endwith this.GRID1 = new GRID(this) with (this.GRID1) dataLink = form.employees1.rowset height = 6.2273 left = 5.5714 top = 1.0 width = 82.7143 endwith this.ENTRYFIELD1 = new ENTRYFIELD(this) with (this.ENTRYFIELD1) key = class::ENTRYFIELD1_KEY onKey = class::ENTRYFIELD1_ONKEY height = 1.0 left = 25.0 top = 17.3182 width = 24.7143 value = " " endwith this.TEXT1 = new TEXT(this) with (this.TEXT1) height = 8.8636 left = 25.0 top = 7.8182 width = 29.7143 text = "" endwith function ENTRYFIELD1_key(nChar, nPosition,bShift,bControl) local lRet if (nChar >= 48 and nChar <= 57) or nChar = 46 or nChar = 13 or nChar = 8 lRet = true else lRet = false endif return lRet function ENTRYFIELD1_onKey(nChar, nPosition,bShift,bControl) if nChar = 13 class::default_params() if empty(this.value) //Do nothing except requery() elseif not '.'$this.value //year only form.employees1.params['yy1'] = val(this.value) form.employees1.params['yy2'] = val(this.value) elseif at('.',this.value,2) > 0 // 2 points i.e full date form.employees1.params["dd1"] = val(substr(this.value,1,at('.',this.value,1)-1)) form.employees1.params["dd2"] = val(substr(this.value,1,at('.',this.value,1)-1)) form.employees1.params["mm1"] = val(substr(this.value,at('.',this.value,1)+1,at('.',this.value,2)-at('.',this.value,1))) form.employees1.params["mm2"] = val(substr(this.value,at('.',this.value,1)+1,at('.',this.value,2)-at('.',this.value,1))) form.employees1.params["yy1"] = val(substr(this.value,at('.',this.value,2)+1)) form.employees1.params["yy2"] = val(substr(this.value,at('.',this.value,2)+1)) elseif at('.',this.value,1) > 0 and len(this.value) >= 7 //month and year form.employees1.params["mm1"] = val(substr(this.value,1,at('.',this.value,1)-1)) form.employees1.params["mm2"] = val(substr(this.value,1,at('.',this.value,1)-1)) form.employees1.params["yy1"] = val(substr(this.value,at('.',this.value,1)+1)) form.employees1.params["yy2"] = val(substr(this.value,at('.',this.value,1)+1)) elseif at('.',this.value,1) > 0 // day and month form.employees1.params["dd1"] = val(substr(this.value,1,at('.',this.value,1)-1)) form.employees1.params["dd2"] = val(substr(this.value,1,at('.',this.value,1)-1)) form.employees1.params["mm1"] = val(substr(this.value,at('.',this.value,1)+1)) form.employees1.params["mm2"] = val(substr(this.value,at('.',this.value,1)+1)) endif form.employees1.requery() endif return function form_onOpen() form.text1.text = "Enter dd.mm or mm.yyyy or yyyy or dd.mm.yyyy then press Enter" form.text1.text += chr(13)+chr(10)+chr(13)+chr(10) form.text1.text += "Pressing Enter with no value will return all records. " form.text1.text += chr(13)+chr(10)+chr(13)+chr(10) form.text1.text += "Single digit days and months can be entered as a single digit or with a leading 0. " form.text1.text += chr(13)+chr(10)+chr(13)+chr(10) form.text1.text += "Only digits, point, Enter and Backspace will be accepted. " form.entryfield1.setFocus() return function default_params form.employees1.params["dd1"] = 0 form.employees1.params["dd2"] = 31 form.employees1.params["mm1"] = 0 form.employees1.params["mm2"] = 12 form.employees1.params["yy1"] = 0 form.employees1.params["yy2"] = 3000 return endclass