Tengo 2 editMask Control quiero hacer un filtro que cuando ponga una fecha en le primero editmask y ponga otra fecha en el 2do editmask me salga todos los pedidos que están entre las dos fechas que he puesto la tabla se llama pedidos y el campo es f_pedidos Esto es lo que hice yo Integer busca busca="(f_pedido) between '" + (em_1.text) and (em_2.text) "'" dw_1.setfilter(busca)
dw_1.retrieve( ) Pero me vota error noc donde estará mal si puedes ayudarme t lo agradecería ..
Hay dos formas distintas de recuperar los datos: 1. Primera Forma: *Abres tu Datawindow Objeto (No el Datawindow Control). *Haces click sobre el icono [DataSource] del PainterBar1. *Te ubicas en el menu [Design] y elijes la opcion [Retrieval Arguments]. *En la ventana que sale crea dos Argumentos de recuperacion de tipo date() en tu datawindow, por ejemplo: Name:fecha_inicio Type:Date Name:fecha_fin Type:Date *Relacionas estos dos Argumentos de Recuperacion con el campo fecha de tu tabla: *Te ubicas en la ficha [where], luego en [column] elijes el campo "f_pedido". *En [Operator] elijes Between. *En [Value] sobre el campo vacio haces click derecho y en el menu elijes Arguments, luego de la ventana que sale haces doble click sobre ":fecha_inicio" y "fecha_fin". mas o menos pondrias asi sobre el campo [value] :fecha_inicio and :fecha_fin Resultado: f_pedido --> between --> :fecha_inicio and :fecha_fin *Luego haces click en el icono [Return] para retornar al modo diseño del Datawindow. *Cierras tu Datawindow. * Abres tu Ventana que contiene al Control dw_1. //En el evento Open() de tu ventana pones lo siguiente: /***************************************************/ date ldte_null isnull(ldte_null) dw_1.settransobject(sqlca) dw_1.retrieve(ldte_null,ldte_null) // Inicializamos los Controles EditMask "em_1" y "em_2" con la fecha actual. em_1.text = string(today(),"dd/mm/yyyy") em_2.text = string(today(),"dd/mm/yyyy") em_1.setfocus( ) /***************************************************/ *La fecha contenida en los EditMasks "em_1" y "em_2" son de tipo String tendras que convertirlo a tipo date(), ya que el campo de tu tabla es de tipo datetime o date. *Pones un CommandButton en tu ventana llamado cb_1. *El siguiente codigo lo pones en el evento Clicked() del cb_1. /***************************************************/ dw_1.retrieve(date(em_1.text),relativedate(date(em_2.text),1)) dw_1.scrolltorow(dw_1.getrow()) /***************************************************/ //Cuando corras tu aplicación abres tu ventana pones las fechas y pulsas el botón cb_1 //Con esto te debe filtrar todos los registros desde una fecha de inicio hasta una fecha final ingresada en un "em_1" y "em_2". 2. Segunda Forma: Similar a los que tu has hecho. //Todo este código le pones en un botón cb_1 /*********************************************************/ string ls_m integer li_buscado ls_m="string(f_pedido,'dd/mm/yyyy') between '"+em_1.text+"' and '"+em_2.text+"'" li_buscado=dw_1.find(ls_m,1,dw_1.rowcount()) if li_buscado=0 then messagebox("Verifique","¡Registro no Existe!",information!) em_1.setfocus( ) return else dw_1.scrolltorow(li_buscado) dw_1.setfilter(ls_m) dw_1.filter() end if /*********************************************************/ Suerte