Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Distinto valor de retorno en storedprocedure desde delfi y desde consola sql (https://www.clubdelphi.com/foros/showthread.php?t=23533)

manolop 20-07-2005 12:14:35

Distinto valor de retorno en storedprocedure desde delfi y desde consola sql
 
Pues como digo, es algo que escapa a mi comprension pues no le encuentro el sentido. El problema es que cuando llamo a un procedimiento almacenado desde la consola sql me devuelve el valor correcto pero si hago la misma invocacion con los mismo parametros desde un IBQuery desde delphi el valor me da el valor que le parece "segun como tenga de calientes los biestables", es decir que el valor que me devuelve se podria decir que es indeterminado. La consulta que hago desde la consola es la siguiente:

Código:

select *

from
pertenece_turno(cast(
'30.12.1899 12:12:00' as date),

cast(
'30.12.1899 21:12:00' as date),'Mañana')


la cual me devuelve un 1 indicando que la segunda hora esta mal, pero si lo ejecuto desde delphi teniendo en IBPerteneceTurno.sql (Objeto IBQuery) la siguiente consulta:
Código:

select resultado from PERTENECE_TURNO(:HORAINICIO,:HORAFIN , :CTURNO)
y poniendo los valores:
Código:

        DMInsertaInformes.IBPerteneceTurno.Close;
        DMInsertaInformes.IBPerteneceTurno.ParamByName('horainicio').AsDate:=inicio;
        DMInsertaInformes.IBPerteneceTurno.ParamByName('horafin').AsDate:=fin;
        DMInsertaInformes.IBPerteneceTurno.ParamByName('cturno').asstring:=DBLCBturno.Text;
        DMInsertaInformes.IBPerteneceTurno.Open;
 ['resultado'];
        m2:=DMInsertaInformes.IBPerteneceTurno.FieldValues['resultado'];

En m2 tengo un 0, lo cual como he visto antes no es correcto. Se que la consulta es un poco marciana pero alguien tiene alguna idea de cual puede ser la razon?, un saludo a todos

delphi.com.ar 20-07-2005 14:24:01

No se si es tu caso, pero error típico de cometer, es crear en la consola un juego de datos para probar algo.. en este caso puede ser tu store pertenece_turno, pero crearlo dentro de una transacción y nunca hacer el comit. Entonces lo que ejecutemos desde ese ambiente tendremos un resultado, mientras lo que ejecutemos fuera tendremos otro!

Saludos!

Mick 20-07-2005 15:58:43

En el primer caso las fechas no estan correctas, ya que en sql el formato correcto es mes/dia/año, y tu estas indicando dia/mes/año.
En el caso de delphi las fechas que pongas si estaran correctas ya que al utilizar parametros y variables TDateTime, delphi convierte las fechas de forma automatica al formato correcto.
De modo que no son comparables e iguales las dos queries, por lo que no tienen que darte el mismo resultado.

Saludos

manolop 20-07-2005 16:34:44

La fecha me da igual pq en el procedimiento solo cojo la hora que es lo que me interesa, la parte de la fecha no la tengo en cuenta. Al utilizar interbase 6 no puedo utilizar campos de tipo hora pero, cuando he guardado otras veces desde delphi guarda la fecha por defecto que es 30/12/1899 pero voy a comprobar lo que me dicen, gracias

manolop 20-07-2005 17:24:52

ok, ya lo he solucionado, era el cast de los datos en el codigo delphi que ponia date en lugar de datetime. Muchas gracias por todo


La franja horaria es GMT +2. Ahora son las 13:24:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi