Power Builder - filtar entre rangos de fecha.

 
Vista:

filtar entre rangos de fecha.

Publicado por Edgar Flores (44 intervenciones) el 16/06/2004 01:56:28
Ayuda por favor, necesito mostrar registros en en dw_1, pero solo los que estes entre un rango de fechas (desde/hasta), las fechas desde/hasta son sle_1 y sle_2. Se que se puede hacer utilizando:

Dw_1.SetFilter(Condicion)
Dw_1.Filter()

loque no se es como acomodar la Condicion: habia hecho parecido a este:
Condicion = ("guia_header1_guia_fecha >= date(sle_1.text) and guia_header1_guia_fecha >= date(sle_2.text)")

Pero al momento que lo ejecuto no funciona.

gracias anticipadas por la ayuda.

Saludos,

Edgar Flores.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:filtar entre rangos de fecha.

Publicado por milson cardona (613 intervenciones) el 16/06/2004 02:52:18
Un saludo especial desde COLOMBIA

Bueno, con el SETFILTER es la solución, el problema con los campos fecha es que debes ponerlos a hablar en el mismo formato, porque no es lo mismo yyyy/mm/dd que dd/mm/yyyy.

para ellos
condicion = "DATE(STRING(campo_fecha,'yyyy/mm/dd')) >= DATE(' "+STRING(sle_1.text,'yyyy/mm/dd')+" ') AND DATE(STRING(campo_fecha2,'yyyy/mm/dd')) <= DATE(' "+STRING(sle_2.text,'yyyy/mm/dd')+" ')"

dw_1.setfilter(condicion)
dw_1.filter()

espero que te sirva y soluciones tu problema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:filtar entre rangos de fecha.

Publicado por Edgar Flores (44 intervenciones) el 20/06/2004 06:38:42
Gracias, Milson por tu ayuda, ya funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antonio
Val: 176
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

¿PORQUE NO USAS UN RETRIEVE ?

Publicado por Antonio (1271 intervenciones) el 16/06/2004 22:33:52
Hola Edgar:

Antes quie nada... Bienvenido Milson es bueno tenerte de nuevo en el foro...

Nuestro gran amigo Milson tiene razón es una buena técnica... pero en PB existen muchas técnicas las cuales son buenas..

He aqui una más de ellas...

Porque no usas un retrieve ?... ya que en los argumentos asignas una variable donde el datawindows realice un retrieve ... por ej.:

Retrieve ( dw_datos, Date ( sle_fecha1.text ) , Date ( sle_fecha2.text ) )

así solo recupera los datos dentro de ese rango porque al hacer un Filter() primero debes recuperar todos los registros y despues hacer el Filter()..

Espero te sirva amigo...

suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿PORQUE NO USAS UN RETRIEVE ?

Publicado por Edgar Flores (44 intervenciones) el 20/06/2004 06:39:54
Gracias, Antonio por tu ayuda valiosa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:filtar entre rangos de fecha.

Publicado por Dante Balandrano A. (17 intervenciones) el 17/06/2004 00:33:18
Hola Edgar, tengo aproximadamente usando el PB desde hace unos 7 u 8 años desde la version 4.0, y la verdad siempre ha sido algo fastidioso el uso de fechas entre rangos y mas tratandose desde el powerscript. La opción tuya del setfilter es buena pero como te dicen tus amigos, es algo lenta ya que definitivamente va y barre la tabla integramente, el retrieve es una opción un poco mejor pero la bronca sería la debida declaracion, datetime y no date, y en XP Pro podrias tener broncas de recuperación. Te recomiendo mejor esta opción:

//Evento updatestart:
this.reset //Limpiamos

//Declaramos las variables que formarán nuestro select sql
string ls_original,&
ls_modificado,&
ls_where,&
ls_inicio,&
ls_fin
//Declaramos las variables que conformarán nuestros rangos
Datetime ldt_inicio, ldt_fin

ls_original = " SELECT ...a las tablas "
ls_where =" WHERE ( ....criterios "

IF var_rango_fechas > 0 THEN
ls_inicio = STRING (ldt_inicio,"YYYY/MM/DD")+' 00:00:00:00'
ls_fin = STRING (ldt_fin,"YYYY/MM/DD") +' 23:59:59:99'
ls_where += " AND (tabla.fecha_rango >= '" + Trim (ls_inicio) + "' ) "
ls_where += " AND ( movimientos.fecha_rango <= '" + Trim(ls_fin) + "' ) "

END IF

ls_modificado = ls_original + ls_where

THIS.SetSQLSelect(ls_modificado)

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:filtar entre rangos de fecha.

Publicado por Edgar Flores (44 intervenciones) el 20/06/2004 06:36:36
Gracias, Dante por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar