Power Builder - busqueda por rango de fechas

 
Vista:

busqueda por rango de fechas

Publicado por Veronica (6 intervenciones) el 20/09/2005 05:58:26
holas a todos, muy bueno el foro, es serio me esta ayudando bastante, el problema que tengo es cuando realizo un reporte y quiero que se muestre los datos por un rango de fechas fecha_inicio, fecha_fin, segui los pasos de un manual en el cual me indico ir a design --------->data resource y ahi hice mi consulta indicando las variables de tipo datetime, y lo probe haciendo un retrieve y funciona nohay problema en ello, el problema en la ventana jalo el datawindow y dos singlelineEdit .
Segun mi manual el codigo en cb_1 es :
datetime fech_ini
datetime fech_fin
fech_ini=datetime(sle_1.text)
fech_fin=datetime(sle_2.text)
dw_1.retrieve("fech_ini","fech_fin")

Y el error q bota es :
retrieve argument 1 does not match expected type

Por favor , q estoy haciendo mal , si alguien puede ayudarme se lo agardecere bastante

saludos
Veronica
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:busqueda por rango de fechas

Publicado por Jorge (900 intervenciones) el 20/09/2005 15:17:06
Hola..

Utiliza DATE en todas tus variables
y tambien debe ser DATE en tu db

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:busqueda por rango de fechas

Publicado por Jorge (900 intervenciones) el 20/09/2005 15:26:29
Es buena la Ob. de Amilcar.

Si le estas pasando entre " " le pasas un string a un campo fecha

Saludos
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:busqueda por rango de fechas

Publicado por amilcar (327 intervenciones) el 20/09/2005 15:23:45
hola, dos cosas primero no se si tipeaste mal pero la sintaxis tendria q ser
dw_1.retrieve(fech_ini,fech_fin) sin comillas,
la otra seria que te convendria usar maskedit en lugar de singlelineEdit
a los efectos de poder ponerle mascara de fechas.

espero te sirva
un saludo desde argentina
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:busqueda por rango de fechas

Publicado por Veronica (6 intervenciones) el 20/09/2005 16:42:14
Ok gracias, por las respuestas, no puedto ahcerlo todo con date porque estoy trabajando con sql 7.0 y bueno cambie a maskedit y me sale este error

Select error:SQLSTATE=22008
[Microsoft][ODBC SQL Server Driver]Formato de fecha no valido

De seguro la solucion es facil pero estoy que le doy vueltas esto y no me sale :(
me siguen ayudando por favor

Saludos Veronica
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:busqueda por rango de fechas

Publicado por Julio (137 intervenciones) el 20/09/2005 17:31:16
mmm primero mira el tipo de dato que tienes en tu base de datos, si te das cuenta cuando generas tu datasource o datawindow y lo tienes en edicion, vas a ver abajo el campo y el tipo de campo que tienes, por ejemplo:

Name Type

campo1 Date
campo2 Datetime

Si es de tipo date, en tu maskedit puedes convertirlo a un formato de fecha especifico, dd/mm/yyyy ó mm/dd/yyyy ó dd-mm-yyyy (como quieras definir tu formato de fecha)

Una vez hecho esto, tus variables tienes que declararlas tal como este el tipo de dato, es decir si los campos que vas a comparar te dice en el Type que es DATE, tienes que pasarle los datos de tipo DATE, si el Type te dice DATETIME, tienes que pasarle las variables de tipo DATETIME.

Date ld_ini, ld_fin //--- en el caso de Date
Datetime ldt_ini, ldt_fin //--- en el caso de Datetime

//--- 1er caso Date

ld_ini = date(em_1.text)
ld_fin = date(em_2.text)

if ld_ini > ld_fin then
messagebox('Aviso','Fecha de inicio no puede ser mayor que la final',Information!)
em_1.setfocus()
return
end if

//---- 2do caso Datetime
ldt_ini = date(em_1.text)
ldt_fin = date(em_2.text)

//-----
dw_1.SetTransObject(sqlca)

//---- Date

dw_1.retrieve(ld_ini,ld_fin) //-- ojo, sin las " "

//--- Datetime

dw_1.retrieve(ldt_ini,ldt_fin) //-- ojo, sin las " "

if dw_1.rowcount() > 0 then
dw_1.setfocus()
else
messagebox('Aviso','Sin datos recuperados!',Exclamation!)
em_1.setfocus()
return
end if

/*
Ahora, puede que MySql (no he trabajo con MySql), este definiendo el tipo de dato diferente al que estas pasando, o quizas le estes pasando String en ves de Date o Datetime, chequealo y verificas, espero te sirva, 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:busqueda por rango de fechas

Publicado por Julio (137 intervenciones) el 20/09/2005 17:31:42
mmm primero mira el tipo de dato que tienes en tu base de datos, si te das cuenta cuando generas tu datasource o datawindow y lo tienes en edicion, vas a ver abajo el campo y el tipo de campo que tienes, por ejemplo:

Name Type

campo1 Date
campo2 Datetime

Si es de tipo date, en tu maskedit puedes convertirlo a un formato de fecha especifico, dd/mm/yyyy ó mm/dd/yyyy ó dd-mm-yyyy (como quieras definir tu formato de fecha)

Una vez hecho esto, tus variables tienes que declararlas tal como este el tipo de dato, es decir si los campos que vas a comparar te dice en el Type que es DATE, tienes que pasarle los datos de tipo DATE, si el Type te dice DATETIME, tienes que pasarle las variables de tipo DATETIME.

Date ld_ini, ld_fin //--- en el caso de Date
Datetime ldt_ini, ldt_fin //--- en el caso de Datetime

//--- 1er caso Date

ld_ini = date(em_1.text)
ld_fin = date(em_2.text)

if ld_ini > ld_fin then
messagebox('Aviso','Fecha de inicio no puede ser mayor que la final',Information!)
em_1.setfocus()
return
end if

//---- 2do caso Datetime
ldt_ini = datetime(em_1.text)
ldt_fin = datetime(em_2.text)

//-----
dw_1.SetTransObject(sqlca)

//---- Date

dw_1.retrieve(ld_ini,ld_fin) //-- ojo, sin las " "

//--- Datetime

dw_1.retrieve(ldt_ini,ldt_fin) //-- ojo, sin las " "

if dw_1.rowcount() > 0 then
dw_1.setfocus()
else
messagebox('Aviso','Sin datos recuperados!',Exclamation!)
em_1.setfocus()
return
end if

/*
Ahora, puede que MySql (no he trabajo con MySql), este definiendo el tipo de dato diferente al que estas pasando, o quizas le estes pasando String en ves de Date o Datetime, chequealo y verificas, espero te sirva, 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:busqueda por rango de fechas

Publicado por Veronica (6 intervenciones) el 20/09/2005 18:07:56
Hola gracias, corregi todo y sigue saliendo el mismo error de formato de fecha no valido y la base con la que estoy trabajando en sql server 7.0 y pues en sus tipos de datos no hay date solo datetime, he definido todo con datetime y sigue saliendo el error, recien empiezo con power builder ayuda plz!!!!!!!!!!!!!!

Gracias por las respuestas

Veronica

P.D. Como trabajo con archivos ini???
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:busqueda por rango de fechas

Publicado por amilcar (327 intervenciones) el 20/09/2005 18:16:45
comenzemos de nuevo si?
primero tu base tienes los campos datetime , ok
segundo en tu dw creas dos argumentos de recuperacion de tipo datetime
(verica bien esto)
tercero para el script del retrieve seria algo asi

datetime ldt_fecha_ini, ldt_fecha_fin

ldt_fecha_ini=datetime(date(em_1.text),time("00:00:00")) // ali tendrias por ej : 10/10/2005
ldt_fecha_fin=datetime(date(em_2.text),time("23:59:59"))

dw_1.retrieve(ldt_fecha_ini,ldt_fecha_fin)

con eso seria suficiente

espero lo soluciones

un saludo desde argentina
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:busqueda por rango de fechas

Publicado por Julio (137 intervenciones) el 20/09/2005 18:24:24
Veronica:

Lo que pasa es que SQL Server cuando haces una consulta no tiene el tipo de dato datetime o date, lo que tienes que hacer es que el Sql Server transforme la variable que le pasas a tipo de dato del mismo sql server, no te puedo decir cual es la funcion pero creo que es algo de Convert o algo asi, o format, es decir

select *
from dbo.tabla
where campo1 = convert(dato,'tipo_dato');

Te mentiria si te dijera cual es la funcion pero por ahi va, no se si me entendiste.

Es algo asi, por ejemplo en Oracle:

select campo1, campo2, campo3
from dbpart.tabla1
where campo_fecha >= to_date(:variable1_string,'dd/mm/yyyy') and campo_fecha <= to_date(:variable2_string,'dd/mm/yyyy');

Es decir, en Oracle vendria a ser la función similar al to_date(string_a_convertir, formato_a_convertir).

Espero te sirva... 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:(Aqui la direccion)busqueda por rango de fechas

Publicado por Julio (137 intervenciones) el 20/09/2005 18:35:30
Saludos, aqui esta la dirección donde puedes encontrar las conversiones del SQL Server, hay muchos ejemplos, espero te sirva

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_ca-
co_2f3o.asp
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:(Aqui la direccion)busqueda por rango de fechas

Publicado por Veronica (6 intervenciones) el 20/09/2005 18:46:48
Hola again, GRACIAS, de verdad muchas gracias a los dos, ya me salio no era dificil :), con esto ya termino el ultimo reporte que me faltaba, ahora debo convertirlo a ejecutable pero he trabajado con odbc y cuando lo pase a otra maquina no va a funcionar si tuvieran tiempo porfi me podrian orientar comos e trabaja con archivos ini o con reg mi archivo ini es el siguiente:
[APLICACION]
DBMS=MSS Microsoft SQL Server 7.0
ServerName=server1
Database=Iso
UserID=
DatabasePassword=
LogId=sa
LogPassword=server
DBParm="Language='english',Async=0,AppName='SIB',Host='server1'"
AutoCommit=FALSE
y lo he llamado desde open de la aplicacion de la siguiente forma:

string ls_ruta
ls_ruta = "C:\Sib\sib.ini"
SQLCA.DBMS = profilestring(ls_ruta, "database", "dbms", " ")
connect using SQLCA;

y no conecta me pueden ayudar

p.d. si tienen tiempo claro

Gracias de nuevo
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

busqueda por rango de fechas

Publicado por Joe (3 intervenciones) el 09/11/2016 17:34:42
Hola Veronica, como solucionaste tu problema de la busqueda por rango de fechas??

Saludos;

Joe
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