Filtro en power builder (setfilter)

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 ..

1 Respuesta

Respuesta
1
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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas