Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-09-2003
cacuna cacuna is offline
Miembro
 
Registrado: sep 2003
Posts: 54
Poder: 21
cacuna Va por buen camino
Question Problema con Suma de Campos TIME en SP

Hola que tal. Tenia mucho que no publicaba un problema en el foro, afortunadamente, pero aqui estoy de nuevo molestando a los Masters de la programacion.

Estoy haciendo un SP en el IBManager 3.0.07. Trabajo con Firebird 1.0.3.972 y la BD con Dialecto 3.
Ma aparece el Error del fondo de este mensaje.
Al parecer es al sumar dos campos de tipo Time, lo curioso es que si en vez de sumarlo lo resto no me marca error.
Alguien que me pueda ayudar?

Gracias de antemano y saludos a todos los foristas.


---------- STATEMENT ----------

CREATE PROCEDURE RECOLECTA (
VFECHA DATE,
VNOEMP INTEGER)
AS
declare variable vPERIODOINICIO date;
declare variable vPERIODOTERMINO date;
declare variable vTIPO CHAR(7);
declare variable vMinEntrada time;
declare variable vMaxEntrada time;
declare variable vGraciaAntesEntrada time;
declare variable vHrEntrada time;
declare variable vHrSalida time;
declare variable vAntesEntrada time;
declare variable vDespuesEntrada time;
declare variable vDespuesSalida time;

BEGIN

/* SELECCIONA PERIODO EN BASE A FECHA*/
SELECT PE_INICIO, PE_TERMINO
FROM CT_PERIODOS
WHERE :vFECHA BETWEEN PE_INICIO AND PE_TERMINO
INTO :vPERIODOINICIO, :vPERIODOTERMINO;

Select CH_TIPO
From AT_CHECADAS
Where (CH_NOEMPLEADO = :VNOEMP) AND
(CH_FECHA BETWEEN :vPERIODOINICIO AND :vPERIODOTERMINO)
Order by CH_FECHA,CH_HORA desc
INTO :vTIPO;


/* VERIFICA SI HAY CHECADAS EN ESE PERIODO*/
if (vTIPO IS null) then
vTIPO = 'ENTRADA';
ELSE
BEGIN
if (VTIPO = 'SALIDA') then
vTIPO = 'ENTRADA';
ELSE
vTIPO = 'SALIDA';
END


/* SELECCIONA EL TURNO DEL EMPLEADO */
Select B.TU_HORAENTRADA,B.TU_HORASALIDA,B.TU_ANTESENTRADA,B.TU_DESPUESENTRADA,B.TU_DESPUESSALIDA,B.TU_GRACI AANTESENTRADA
From AT_EMPLEADOS A,CT_TURNOS B
Where A.EM_TURNO = B.TU_TURNO AND A.EM_NOEMPLEADO =:vNoEmp
INTO :vHrEntrada, :vHrSalida, :vAntesEntrada, :vDespuesEntrada, :vDespuesSalida, :vGraciaAntesEntrada;


/* CREA RANGOS DE HORAS PARA CHECADAS DE E/S */
vMinEntrada = (vHRENTRADA - vANTESENTRADA);
vMaxEntrada = (vHRENTRADA + vDESPUESENTRADA);


/* SUSPEND;*/
END



---------- ERROR MESSAGE ----------

fmCompile.quCompile:
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Dynamic SQL Error.
expression evaluation not supported.
Responder Con Cita
  #2  
Antiguo 03-09-2003
bismarito bismarito is offline
Miembro
 
Registrado: jun 2003
Ubicación: Tarija - Cercado
Posts: 47
Poder: 0
bismarito Va por buen camino
Hola, estas haciendo la misma aplicación que yo, y tropesaste con el mismo problema, yo estoy utilizando interbase 6


y no podia sumar campos de tipo time lo que sucede es que el valor varia entre 0:00:00 y 23:59:59999

lo que yo hize es por ejemplo es:

tolerancia=extract(hour from hora)*3600+extract(minute from hora)*60+extract(second from hora)

if (:horaactual < :hora_ingreso+toleranca) then

........


recién me complilaba y trabaja bien, le puedes sumar una varialbe entera que contenga los segundos a adicionar, espero te sirva.

Bismarito
__________________
Bismarito
hoy, que tan bueno quiero ser!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 03:17:37.


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
Copyright 1996-2007 Club Delphi