![]() |
Suma de campos tipo time
Hola a todos estoy trabajando con firrbird 1.5 y tengo el siguiente problema:
estoy haciendo un sistema para producción de una empresa textil, tengo una tabla (TEstilo) que es un catálogo de los tipos de ropa clave - descripcion 1 - camisa 2 - pantalon Una tabla (TOperaciones) donde tengo las operaciones que se necesitan para hacer un estilo especifico y el tiempo que se tarda cada una de ellas, por ejemplo tengo las siguientes operaciones: clave-descripcion-minutaje 1 - pegar manga - 00:00:30 2 - pegar cuello - 00:00:15 3 - coser bolsa - 00:00:25 4 - cerrar costados - 00:00:45 5 - cerra dobladillos - 00:00:10 6 - pegar botones - 00:01:00 Una tercera tabla (TOperEstilo) donde relaciono el estilo con las operaciones estilo - operación 1 - 1 1 - 2 1 - 3 1 - 4 1 - 5 1 - 6 2 - 4 2 - 3 2 - 6 Necesito saber el tiempo que se tarda en producir un estilo es decir la suma de los tiempos de las operaciones que se usan en cada estilo, para empesar no podia sumar mis campos tipo time hasta que encontre el hilo de Campos tipo time El problema que tengo es que como resultado me esta dando cero, el triger que uso es el siguiente: CREATE TRIGGER TOPERESTILO_AI FOR TOPERESTILO ACTIVE AFTER INSERT POSITION 0 AS declare variable tiempoOper time; declare variable TiempoEstilo time; declare variable tiempoTotal Integer; begin /* Trigger text */ if (new.id_oper is not null) Then begin select minutaje from toperaciones where id = new.id_oper into :TiempoOper; select minutaje from testilo where id = new.id_estilo into TiempoEstilo; tiempoTotal = extract(hour from TiempoEstilo)*3600 + extract(minute from TiempoEstilo)*60 + extract(second from TiempoEstilo); tiempototal = TiempoTotal + extract(hour from TiempoOper)*3600 + extract(minute from TiempoOper)*60 + extract(second from TiempoOper); update testilo set minutaje = :tiempoTotal where id = new.id_estilo; end end Gracias |
Hola jzguines.
Ya que habitualmente estas posteando mensajes en los foros, creo que es tiempo de aprender a usar las etiquetas [ code ], [ delphi ] y [ sql ] para publicar trozos de código correctamente indentados y con la sintaxis resaltada, que son mucho mas legibles. Al Inicio de cada foro tenes un mensaje que te ayudará a aprender a usarlas, y un vínculo en mi firma a la ayuda de la etiqueta [ code ]. El uso de las otras dos es exactamente el mismo. Hasta luego. ;) |
gracias por lo del uso de etiquetas pero como hago mi suma
|
Hola a todos esperando que la falta de respuesta sea porque no escribi el codigo dentro de las etiquetas correspondientes reescribo el codigo
lo último que he intentado es
pero me indica el siguiente error que segun yo es en el if Código PHP:
|
Hola.
Hay muchas razones por las que puede ser que nadie te responda. Porqué no se conoce la respuesta, no se entiende la pregunta, a uno no le gusta como se ha planteado, nadie ha tenido tiempo de mirarselo aún, ... Imagino que el campo minutaje de testilo será de tipo integer, puesto que este es el tipo del valor calculado. Prueba a depurar el código, es decir escribe este código en un procedimiento almacenado, y siguelo línea a línea. De esta forma verás en que línea no se comporta como lo esperas. Ciertamente en el if tienes un problema if (tiempo2 is null). Más bien debería ser if (:tiempo2 is null). (Esto no implica que no haya otros problemas). Saludos. |
Hola guillotmarc lo de la falta de respuestas fue puro sarcasmo debido a que si no mal recuerdo es la primera vez que escribo un hilo en interbase y ni tu u otro master me habian ayudado con la solución ( :( siempre ay una primera vez), en caunto al tipo del campo en TEstilo perdon di por acentado que se entendia el tipo ( :D como dicen en las reglas del foro no hay que dar nada por entendido) su tipo es timer.
Ahora bien estoy usando IBExpert y no le he encontrado donde estan las herramientas de depuración si me puedes dar una ayuda te lo agradecere. |
Hola.
Mi respuesta también fué irónica (aunque gracias por lo de master), personalmente dejo pasar un cierto tiempo antes de participar en un hilo, para dar ocasión a que participe más gente. Respecto al tipo del campo TEstilo, realmente se ve a venir que es de tipo Time, por eso lo he resaltado, tiene que ser de tipo Integer (que es el tipo del valor que has calculado). Lo que no entiendo es que te deje el valor a cero, en lugar de saltar un error. Estas haciendo una conversión a lo bestia de tipos, que no son convertibles entre ellos. Compruebalo con la siguiente consulta : select cast(100 as time) from rdb$database Prueba a construir una cadena 'hh:mm:ss', esto si que es convertible al tipo time. Respecto a la depuración, la versión Personal (gratuita) de IB-Expert no tiene herramientas de depuración, solo están disponibles en las versiones comerciales (de pago). Puedes adquirir una versión comercial de IB-Expert, o utilizar alguna de las otras herramientas de Administración para IB/FB. Saludos. |
La franja horaria es GMT +2. Ahora son las 11:18:29. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi