SQL Pass Throught VFP-Postgres Problemas con Date

Hola que tal, agradecería mucho tu ayuda con un problema que se me presento.
En mi trabajo hay un server remoto linux que tiene instalado el postgres y yo me conecto mediante un odbc desde VFP 9 sp1, usando sql pass throught hice una consulta la cual me tendría me tendría que devolver un recorcorset filtrado desde una fecha iniclil a una fecha final, lo curioso es que no me crea el cursor por que al parecer hay algún tipo de problemas en la sentencia o o el crterio falla, solo traigo los datos sin el creterio del filtro. No hay problemas cuando el filtro por fechas no esta me trae todos los cambos inclusive al cual le aplico el filtro fechainicio.. Pero lo curiosisimo es que campo micursor.fechainicio es de tipo objeto y es por eso que creo que no puedo aplicar el filtro esta en mi sentencia
ncon=sqlconnect("postgresql")
sqlexec(ncon,"select nombre, apellido, fechainicio from expedientes", "micursor")
esta instruccion me crea sin problemas el cursor "micursor" pero lo raro yq ue nunca vi es que cuando hago:
store micursor.fechainicio to a
? Vartype(a)
Me devuelve "o" osea que según la ayuda es un tipo objeto.
Y cuando quiero filtrar jamas me crea el cursor y me dice que el alias "micursor" no existe..
sqlexec(ncon,"select nombre, apellido, fechainicio from expedientes where fechainicio between date(2010,08,01) AND fechainicio date(2010,08,09)", "micursor")
Esta falla y no crea el cursor.
En definitiva no puedo trae un recordset entre un periodo de fecha que especifico, aclaro que en postgres el campo figura como date.
Espero haberme explicado bien, desde ya muchísimas gracias!
Respuesta
1
Bueno básicamente no he trabajo con postgres desde vfp si lo he hecho con sql server y si mal no recuerdo también se me presento un problema parecido pero más bien era por el formato de la fecha porque en vfp enviaba formato dd/mm/yyyy pero sql server lo manejaba como yyyy/mm/dd e incluso tenia que enviar los delimitadores # como parte de la instrucción para que me pudiera hacer el filtro, de pronto y por ahí podría ir el problema deberías intentar enviar la fecha con otro formato o primero ver en postgres con que formato de fecha trabaja y luego enviar la fecha con ese formato.
Gracias por responder, pero no es el caso por que en posgres están con el formato dd/mm/aaaa y en vfp esta con el set century on y el set date to french osea iguales...
¿Pero en postgres no van delimitadas las fechas con algún carácter?
Realmente desconozco pro que es la primera vez que trabajo con esta tecnología, debe haber algún error o alguna forma de hacer ese filtro, por eso acudo a uds.
Es que por eso depende básicamente de como se envíen o como interprete las fechas el postgres porque de esa manera se deben enviar las fechas, te comprendo porque como te dije pase lo mismo con sql server pero lastimosamente nunca he usado postgres por lo cual hasta ahí te podría ayudar, suerte
Logre solucionarlo con los tips del formato que me dieron ahora si pude hacer el filtro
finicio = '2010,07,08'
¿Cómo debo hacer con este post ahora? Por que hace mucho que no entro a la página y me olvide. Muchas gracias por vuestros consejos, me sirvió mucho!
ups ahora tengo un nuevo problema
Mi duda es cuando hago una consulta directa al motor de la forma...
SQLExec(ncon,"select expnum, expcod, expanio, causante, finicio, hinicio, opera from expediente where finicio= '2010/07/08'", "lcCursor")
No tengo ningún tipo de problemas y me hace la consulta perfecto generando el respectivo recorset en el cursor. Pero cuando quiero usar una o unas variables donde guerdo el valor de un textbox esta no me genera el cursor
canio = SUBSTR(ALLTRIM(thisform.text1.Value),7,4)
cmes = SUBSTR(ALLTRIM(thisform.text1.Value),4,2)
cdia = SUBSTR(ALLTRIM(thisform.text1.Value),1,2)
SQLExec(ncon,"select expnum, expcod, expanio, causante, finicio, hinicio, opera from expediente where finicio= 'canio/cmes/cdia' ", "lcCursor")
select lcCursor
No me crea el cursor y me dice que no se encuentra el alias
Desde muchas gracias!
De pronto y lo mejor seria que pudieras armar la instrucción que tienes en el sqlexec aparte osea algo así :
canio=substr(alltrim(thisform.text1.value),7,4)
cmes=substr(alltrim(thisform.text1.value),4,2)
cdia=substr(alltrim(thisform.text1.value),1,2)
ccomando="select expnum, expcod, expanio, causante, finicio, hinicio, opera from expediente where finicio= '"+canio+"/"+cmes+"/"+cdia+"'"
sqlexec(ncon,ccomando,"lccursor")
select lccursor
Browse
En teoria asi te deberia funcionar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas