<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=ISO-8859-1" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.18939"></HEAD>
<BODY bgColor=#ffffff text=#000000>
<DIV><FONT face=Arial>Paula hacerlo dentro de un procedimiento tienes que hacer
el chorrete como dices, o caso contrario tienes que hacer un while e ir llenando
los datos con la suma ya que un procedimiento almacenado no se puede llamar
desde un select.</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial>Por tal motivo es mejor hacer una función dentro de una
udf, para eso debes usar delphi o C, lo cual no tengo instalado, pero si no
sabes hacerlo dime que lo instalo y lo hago.</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial>por ejemplo el procedimiento almacenado sería
así:</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial>SET TERM ^ ;<BR>CREATE PROCEDURE P_TIME
(<BR> DEC_SEGUNDOS Decimal(15,4) )<BR>RETURNS
(<BR> VCH_HORAS Varchar(15) )<BR>AS<BR>BEGIN<BR> /*
Procedimiento para calcular las horas a partir de los segundos */<BR>
<BR> vch_horas = cast((dec_segundos/3600) as integer) ||
':'<BR> ||
cast((((dec_segundos/3600) - cast((dec_segundos/3600) as integer))*60) as
integer) ||
':'<BR> ||
(((((dec_segundos/3600) - cast((dec_segundos/3600) as
integer))*60)-cast((((dec_segundos/3600) - cast((dec_segundos/3600) as
integer))*60) as integer))*60);<BR> suspend;<BR>END^<BR>SET TERM ;
^</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial>GRANT EXECUTE<BR> ON PROCEDURE P_TIME TO
SYSDBA;<BR></FONT></DIV>
<DIV><FONT face=Arial>Si miras es fácil armarte una función en C con los datos
que te paso.</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial>Saludos cordiales.</DIV></FONT>
<DIV>=========<BR>|| ISMAEL ||<BR>=========</DIV>
<BLOCKQUOTE
style="BORDER-LEFT: #000000 2px solid; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px">
<DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
<DIV
style="FONT: 10pt arial; BACKGROUND: #e4e4e4; font-color: black"><B>From:</B>
<A title=pbruccoleri@adinet.com.uy
href="mailto:pbruccoleri@adinet.com.uy">Paola Bruccoleri</A> </DIV>
<DIV style="FONT: 10pt arial"><B>To:</B> <A
title=lazarus-es@lists.lazarus.freepascal.org
href="mailto:lazarus-es@lists.lazarus.freepascal.org">Spanish version of
Lazarus List</A> </DIV>
<DIV style="FONT: 10pt arial"><B>Sent:</B> Monday, October 18, 2010 10:47
AM</DIV>
<DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [Lazarus-es] trabajando con
horas</DIV>
<DIV><BR></DIV>El 18/10/2010 10:58 a.m., Ismael L. Donis García escribió:
<BLOCKQUOTE cite=mid:0535BE83B1314B4BB302B0A40B4D4386@virpc05 type="cite">
<META name=GENERATOR content="MSHTML 8.00.6001.18939">
<STYLE></STYLE>
<DIV><FONT face=Arial>Ante todo me perdona por la tardanza de la respuesta
pero no fue hasta ahora que vengo al trabajo.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial>select cast((sum(a.<FONT
face="Times New
Roman">hs_trabajo</FONT> - cast('0:0'
as time))/3600) as integer) || ':'<BR>|| cast((((sum(a.<FONT
face="Times New Roman">hs_trabajo</FONT> - cast('0:0' as time))/3600) -
cast((sum(a.<FONT
face="Times
New Roman">hs_trabajo</FONT> - cast('0:0'
as time))/3600) as integer))*60) as integer)<BR>|| ':'<BR>||
(((((sum(a.<FONT face="Times New Roman">hs_trabajo</FONT> - cast('0:0' as
time))/3600) - cast((sum(a.<FONT
face="Times New
Roman">hs_trabajo</FONT> - cast('0:0'
as time))/3600) as integer))*60)<BR>-cast((((sum(a.<FONT
face="Times New Roman">hs_trabajo</FONT> - cast('0:0' as time))/3600) -
cast((sum(a.<FONT
face="Times
New Roman">hs_trabajo</FONT> - cast('0:0'
as time))/3600) as integer))*60) as integer))*60)<BR> as hora from
<FONT face="Times New Roman">form_03</FONT> a<BR></FONT></DIV>
<DIV><FONT face=Arial>Y respondiendo al compañero que dijo que no quería
saber de Firebird, pues yo por el contrario no quiero saber de otro motor
que no sea Firebird, estoy con él hace 6 años con un gran número de
aplicaciones con gran carga de trabajo y hasta ahora ningún cliente me ha
llamado nunca a decirme que ha tenido algún tipo de problema</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial>Saludos cordiales a todos.</FONT></DIV>
<DIV>=========<BR>|| ISMAEL ||<BR>=========</DIV>
<DIV>PD: Paula como bien te dijeron te puedes craear una función o un
procedimiento almacenado para ello, que realmente es como debe ser ya que la
capa de datos debe estan dentro de la BD.</DIV><BR></BLOCKQUOTE>Hola
Ismael..<BR>esto funciona ok!<BR><BR>pero me podrías ayudar en crear el
procedimiento almacenado?<BR>porque como ya comenté, tengo varios campos de
este tipo, donde debo obtener una suma... y esto es un chorrete que se debe
optimizar.<BR><BR>otra cosa... el reporte será algo así:<BR><BR>máquina 1
- 116:05<BR>maquina 2 - 84:30<BR>....<BR><BR>¿cómo obtengo la suma
en el reporte? porque todo eso es un string.. quizás la solución más
conveniente es hacer al revés.. obtener segundos y armar el resultado en el
lazreport..<BR><BR>chauuuuuuu<BR><BR>
<P>
<HR>
<P></P>_______________________________________________<BR>Lazarus-es mailing
list<BR>Lazarus-es@lists.lazarus.freepascal.org<BR>http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es<BR></BLOCKQUOTE></BODY></HTML>