Programación General > Power Builder
Funcion SetFilter
F_Tanori:
El filter es como un Having y puedes utilizar varios criterios para hacer el filtro por ejemplo solicitar el proveedor y la fecha inicial y la fecha final y crear el criterio del filtro
En una variable string....
--- Código: Text ---String Criterio Criterios="Proveedor='070550' and (Fecha>=Date('29/03/2007') and Fecha<=Date('26/04/2007')) " dw_1.SetFilter(Criterios)dw_1.Filter()
Saludos
Jhois:
Lo que pasa es que en la base de datos esta la fecha como tipo texto, y si, yo pongo lo que tu pusiste, bueno sin el date y sin el proveedor, porque primero ya se me filtra el proveedor y me queda la tabla solo con ese proveedor y lo que debo y todas las fechas de las deduas, pero solo quiero filtrar con 2 fechas y me sale type expression invalidate
no se como hacer porque a la base de datos ya le cambie a tipo date la fecha porque pense que ese era el problema pero no, me sale el mismo error
el codigo esta ma o menos asi
dw_cuentas.setfilter("compras_fecha >= "+ em_fechai.text +" and compras_fecha <= "+ em_fechaf.text +"")
dw_cuentas.filter()
revisa y me ayudas porfa
F_Tanori:
El detalle esta asi:
Si tu quieres filtrar por un campo texto es necesario que los valores lleven comillas
ejemplo:
--- Citar ---em_fechai.text='23/11/2007'
--- Fin de la cita ---
--- Citar ---"compras_fecha >= "+ em_fechai.text (si lo vemos con datos seria algo asi),
"compras_fecha >= 23/11/2007"
--- Fin de la cita ---
entonces si el campo compras_fecha es texto la expresion no es valida
debe de ser le valor entre comillas ('):
--- Citar ---"compras_fecha >= '23/11/2007'"
--- Fin de la cita ---
Para lograr eso es necesario concatenarle las comillas asi:
--- Código: Text ---"compras_fecha >= '"+ em_fechai.text +"'"
Ese detalle es para los campos tipo texto (varchar,char ...) tu puedes resolver el filtro que estas aplicando
concatenado comillas
--- Código: Text --- "compras_fecha >= '"+ em_fechai.text +"' and compras_fecha <= '"+ em_fechaf.text +"'"
Pero el resultado no seria el esperado, debido a que no estas estableciendo un rango de fechas pues estas comparando
cadenas
si tu campo es tipo texto y quieres un rango de fechas es necesario convertir el dato del campo en una fecha
(no se necesario cambiar el tipo de dato en la bd, si no se desea) a traves de la funcion Date seria asi
--- Código: Text --- ls_Filtro="Date(compras_fecha) >= Date('"+ em_fechai.text +"') and Date(compras_fecha) <= Date('"+ em_fechaf.text +"')" dw_cuentas.SetFilter(ls_Filtro)dw_cuentas.Filter()
asi comparas fechas contra fechas :)
Otro detalle, no es posible aplicar un filtro sobre datos filtrados en el mismo DW pues al colocar el filtro
(SetFilter) y ejecutarlo (Filter) se elimina el anterior aplicando el nuevo por eso es necesario aplicar todos los
criterios en un solo filtro
--- Código: Text --- ls_Filtro="Proveedor='Solocodigo' and Date(compras_fecha) >= Date('"+ em_fechai.text +"') and Date(compras_fecha) <= Date('"+ em_fechaf.text +"')" dw_cuentas.SetFilter(ls_Filtro)dw_cuentas.Filter()
Saludos
Jhois:
Que bien muchas gracias, intente transformando a date, y no valia, pues me ha faltado de poner comillas(')...
Ya funcionó muchas gracias
Se ve que tu sabes mucho de esto, sabes que me me gustaría saber mucho más de este lenguaje, estoy interesada en ser buena programadora, pero a veces las ideas se me van, y no se que hacer...
Mira talvés si me puedes ayudar, como puedo hacer que esto que estoy filtrando, imprimir, que me aparezca la pantallita para escoger impresora, y despues imprimir y que me imprima y que me salga una vista preliminar en word...
Mira, no se si hay como imprimir una ventana, para yo poner de titulo en un sle por ejemplo deudas, e imprimir los detalles del data window, o tengo que hacer algun reporte? pues no se como hacer reportes, talves me ayudas?
Te lo agradezco mucho... me has ayudado mucho, y quisier tener aun tu ayuda, gracias
Atentamente
Amiga agradecida
Jhois:
:rolleyes: Por cierto leí lo que el administrador escribió, y lo que en tu respuesta dice que se lea en Importante... Pues lo leí, y me parece interesante, yo antes que nada quiero decir que sí he buscado en internet, he visto libros, pero a ellos no puedo preguntarle mi problema, en cambio a alguien como tu que nos ayuda, da más confianza y se pregunta.... Bueno muchas gracias, y porfa, desde hace días ando buscando lo de la impresíón, o si tengo que hacer antes un reporte, pero no encuentro...
Mira, yo quise hacer esto:
ls_Filtro="proveedores_nombre like '%"+sle_text.text+"%' and Date(compras_fecha) >= Date('"+ em_fechai.text +"') and Date(compras_fecha) <= Date('"+ em_fechaf.text +"')"
dw_cuentas.SetFilter(ls_Filtro)
dw_cuentas.Filter()
Y me sale un error de true/false
algo esta mal, prove pero no sale. Funcionó solo con la fecha, pero añadi el proveedor y ya no valió!! :(
Por favor, si pueden ayudarme, lo agradezco mucho.
Jhois :D
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa