Buscar registros entre rangos de fechas

Tengo un dw tipo tabular deseo buscar registros por rangos de fechas, en el formulario he dos controles (em_1 y em_2), en dw, he puesto la propiedad editmask (dd/mm/yyyy), deses que me apoyes en done debo programar y el código para buscar registros por rangos de fechas.
Respuesta
1
Haber tu DW Tabular tendría que tener 2 argumentos uno fecha inicial y fecha final, ¿le creaste los argumentos?
Si no lo has echo te digo como en el Painter de tu DW, vas a DataSource te saldrá la tabla

Luego te saldrá una ventana donde colocas tus 2 argumentos fec1 y fec2 del tipo DATE
Aceptas y en la parte inferior marca tu columna fecha y los argumentos algo así como la imagen siguiente:

luego en tu boton consultar colcoas estas dos lineas de codigo
date ld_fec1, ld_fec2
ld_fec1 = date(em_fecha1.text)
ld_fec2 = date(em_fecha2.text)
dw_1.settrnasobject(sqlca)
dw_1.retrieve(ld_fec1,ld_fec2)
PDT:
No olvides finalizar la pregunta y puntar si te sirve la respuesta.
Man ya hice todos, los pasos que me has indicado y esta ok, pero el problema cuando ejecuto, me sales el error: Expecting 2 retrieval arguments but got 1, luego me sale el formulario con el dw vacío, luego cuando ingreso la fecha de inicio y fin me muestra todos los registro de ese rango, pero cuando empiezo a buscar en la caja texto, cuando ingreso la letra del primer apellido por ejemplo R de Ruiz me sale la ventana de argumentos para ingresar nuevamente los rangos de fechas, esto me pasa al momento que ejecuto la aplicación, el código que me dado lo he ingresado el evento clicked del botón buscar, gracias por tu apoyo man. Me esta sirviendo de mucho.
Hbaer haber por partes, tu solo mencionaste rango de fechas, ¿eso esta correcto?
¿Ahora me hablas de otra búsqueda por nombre? ¿No entiendo es sobre la misma DW? ¿O qué intentas hacer?
Y verifica que en Open de la ventana no estas haciendo un retrieve sin argumentos.
Tienes razón, es que ya había hecho la búsqueda por apellidos y nombres, y quería también hacerlo por rango de fechas si es necesario para el usuario, por que hay veces que un trabajador tiene permisos de varios meses y solo desean ver por rangos de fechas, espero me hayas entendido, gracias por tu apoyo.
En ese caso deberías usar filtros y olvidarte lo anterior que te dije ya que eso es para hacer un tipo de búsquedas especifica. Es decir la condición es única puede tener varios argumentos pero igual es una única condición que no podrías cambiarla así que eso no te sirve.
Quita todos los argumentos de tu DW. Que recupere todo normal y en tu botón búsqueda tienes que hacer lo siguiente.
Supongo que en tu interfaz tienes opciones donde el usuario elige si quiere buscar por nombres y apellidos o por fechas.
En ese sentido as lo siguiente
date ld_fec1, ld_fec2
string ls_nombre
if chb_busca_por_fechas.checked then
      ld_fec1 = date(em_fecha1.text)
      ld_fec2 = date(em_fecha2.text)
      dw_consulta.setfilter ("fecha >= date('" + string(ld_fecha1) + "') and fecha<= date('" + string(ld_fecha2) + "')")
     dw_consulta.filter()
end if
if chb_busca_por_nombres.checked then
ls_nombre = sle_nombre.text
dw_consulta.setfilter ("columna_nombre like '" + ls_nombre +  "%'")
     dw_consulta.filter()
end if
**************************
Solo hay que usar filtros

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas