Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Decimales (uAVG) (https://www.clubdelphi.com/foros/showthread.php?t=20313)

jmlifi 12-04-2005 15:58:11

Decimales (uAVG)
 
Tras una consulta que he utilizado AVG(campo) el resultado me devuelve muchos decimales. Que sentencia o instrucciónn tengo que utilizar para que la consulta me devuelva sólo 2 decimales.

marcoszorrilla 12-04-2005 16:01:57

Código Delphi [-]
 TFloatField(Query1.FindField('Nombre_Campo')).DisplayFormat := ',0.00';

Un Saludo.

jmlifi 12-04-2005 17:13:09

Cita:

Empezado por marcoszorrilla
Código Delphi [-]
 TFloatField(Query1.FindField('Nombre_Campo')).DisplayFormat := ',0.00';

Un Saludo.

El avg me devuleve registros con muchos decimales ej: 0,2312321321312 .
Quiero convertirlo en 0,23.
Si te sirve de algo los registros se muestran en un DBGrid.
saludos.
Código Delphi [-]
  with tblPedidos,Sql do begin
       Pedidos.Close;
       Clear;
       Add('select nesting.pedido,avg(nesting.aprov) mediapedidos ');
       Add('from nesting,pedidos,clientes ');
       Add('where nesting.pedido=pedidos.pedido and 
       Add('group by  nesting.pedido ');
       Add('order by  pedidos.f_ped');
       AbreDbf([Pedidos]);
  end;

marcoszorrilla 12-04-2005 18:57:20

Da lo mismo en donde se visualice lo que hay que dar formato es a la consulta

Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 TFloatField(Query1.Fields[1]).DisplayFormat := ',0.00';
 end;

Como veo que no usas campos persistentes , tenemos que partir de la columna que ocupa el campo a formatear, teniendo en cuenta que las columnas van de 0.....xx, en el ejemplo el formato se lo damos a la columna 2 de la consulta

Un Saludo.

MasterXP 12-04-2005 19:14:56

Y por que no dejas que el motor de BD se encargue de eso, yo lo haria de esta forma:

Código SQL [-]
 SELECT Id,Nombre, Fecha_ingreso, Format(AVG(Salario),2) AS Salario FROM Empleados Group By ID ORDER BY Salario DESC;

SALU2.

jmlifi 13-04-2005 16:53:46

Sigue sin funcionar
 
La instrucción: TFloatField(tblPedidos.Fields[1]).DisplayFormat := ',0.00';
Me sigue sin funcionar.

Trabajo bajo Interbase y tengo el siguiente codigo:

with tblPedidos,Sql do begin
Pedidos.Close;
Clear;
TFloatField(tblPedidos.Fields[1]).DisplayFormat := '0.00';

Add('select nesting.pedido,avg(nesting.aprov) mediapedidos ');
Add('from nesting,pedidos,clientes ');
Add('where nesting.pedido=pedidos.pedido and pedidos.codcliente=clientes.codigo ');
if EditPedido.Text<>'' then begin
Add(' and nesting.pedido=' +QuotedStr(EditPedido.Text));
end;
if EditCliente.Text<>'' then begin
Add(' and clientes.nom=' + QuotedStr(EditCliente.Text));
end;
if EditDesde.Text<>'' then begin
Add(' and pedidos.f_ped>=' + QuotedStr(ModificarFecha(EditDesde.Text)));
end;
if EditHasta.Text<>'' then begin
Add(' and pedidos.f_ped<=' + QuotedStr(ModificarFecha(EditHasta.Text)));
end;
Add('group by nesting.pedido ');
Add('order by pedidos.f_ped');
AbreDbf([Pedidos]);
end;

marcoszorrilla 13-04-2005 17:35:41

Código Delphi [-]
 
   with tblPedidos,Sql do begin
        Pedidos.Close;
        Clear;
 
        Add('select nesting.pedido,avg(nesting.aprov) mediapedidos ');
        Add('from nesting,pedidos,clientes ');
        Add('where nesting.pedido=pedidos.pedido and pedidos.codcliente=clientes.codigo ');
        if EditPedido.Text<>'' then begin
          Add(' and nesting.pedido=' +QuotedStr(EditPedido.Text));
        end;
        if EditCliente.Text<>'' then begin
           Add(' and clientes.nom=' + QuotedStr(EditCliente.Text));
        end;
        if EditDesde.Text<>'' then begin
           Add(' and pedidos.f_ped>=' + QuotedStr(ModificarFecha(EditDesde.Text)));
        end;
        if EditHasta.Text<>'' then begin
           Add(' and pedidos.f_ped<=' + QuotedStr(ModificarFecha(EditHasta.Text)));
        end;
        Add('group by  nesting.pedido ');
        Add('order by  pedidos.f_ped');
        AbreDbf([Pedidos]);
         TFloatField(tblPedidos.Fields[1]).DisplayFormat := '0.00';
  
   end;

Un Saludo.

jmlifi 14-04-2005 08:48:19

tampoco funciona
 
me da el siguiente error:

List index Out of bounds(1) //fuera de rando


La franja horaria es GMT +2. Ahora son las 14:17:01.

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