<!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>