Ver Mensaje Individual
  #1  
Antiguo 07-03-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Reputación: 18
BlackDaemon Va por buen camino
TSringGrid + Convertir Double a String

Bueno.. otra vés molestando por aquí
Soy bién nuevo en esto de DElphi pero como me gusta pues le meto con ganas !!

Ya ahora estoy haciendo un sistema de facturación y ya casi casi lo terminaré pero estoy en el punto de hacer la factura agregar Items ( productos ) a un componente ( StringGrid ) para luego sacar una suma del precio y mostrarlo en un label ..
Bueno ahora el problema que tengo es el siguiente:

Tengo un FrmVentas donde tengo un StringGrid para ir agregando los Items que tengo en la Dase de Datos ,ahora por el foro leí que es mejor usar un DBGrid para estos menesteres pero bueno.. yo elegí el StringGrid ahora al la cosa va así tengo un boton que me abre otro FrmBuscarItems que es ahí donde se busca el Items por Código ,Código de barra o su Descripción una vés que busca y encuentra el Items o producto correcto tengo un boton que es ACEPTAR ( el cual en teoría devería cerrar el FrmBuscarItems y agregar el Items selecionado al StringGrid el FrmVentas, bueno hastá haý sin problema lo resolví buscando por estos foros y mi código en mi Botón ACEPTAR ERA el siguiente.. digo "era" por que ya le agregué unas líneas que es donde casca

Código Delphi [-]
procedure TFrmAgregarItems.SBAgregarClick(Sender: TObject);
begin
    FrmVentas.SGListaProductos.Cells[1,FrmVentas.SGListaProductos.RowCount-1] := ECantidad.Text;
    FrmVentas.SGListaProductos.Cells[2,FrmVentas.SGListaProductos.RowCount-1] := DBTUnidad.Caption;
    FrmVentas.SGListaProductos.Cells[3,FrmVentas.SGListaProductos.RowCount-1] := DBTCodigo.Caption;
    FrmVentas.SGListaProductos.Cells[4,FrmVentas.SGListaProductos.RowCount-1] := DBTCodigoBarra.Caption;
    FrmVentas.SGListaProductos.Cells[5,FrmVentas.SGListaProductos.RowCount-1] := DBTDescripcion.Caption;
    FrmVentas.SGListaProductos.Cells[6,FrmVentas.SGListaProductos.RowCount-1] := DBTUnidadPrecio.Caption;

    FrmVentas.SGListaProductos.RowCount := FrmVentas.SGListaProductos.RowCount+1;

  Close;
end;


Bueno con ese código puedo agregar un Items a un StringGrid sin ningún problema ( se preguntarán por que capturo de los labels.caption en véz de capturar directamente desde el ZQery -> componente de ZEOSlib, pues la verdad no sé xD pero no creo que interfiera en nada )

ya con ese código podía agregar los productos que quería y todo sin problema ... solo estaba probando como agregar Items a un StringGrid

Ahora cuando ya lo tenía dominado ese punto pasé al segundo que era.. agregar el PRECIO de cada Items y luego sumarlos y mostrar en un Label == LSubTotal , ahora les muestro mi código de mi NUEVO botón.. bueno no es nuevo botón pero en teoría devería cumplir una función mas.. que sería agregar el PRECIO en el StringGrid y también sumar TODA la columna de PRECIOS

Código Delphi [-]
procedure TFrmAgregarItems.SBAgregarClick(Sender: TObject);
var i : integer;
    SubTotal : double;
begin
    FrmVentas.SGListaProductos.Cells[1,FrmVentas.SGListaProductos.RowCount-1] := ECantidad.Text;
    FrmVentas.SGListaProductos.Cells[2,FrmVentas.SGListaProductos.RowCount-1] := DBTUnidad.Caption;
    FrmVentas.SGListaProductos.Cells[3,FrmVentas.SGListaProductos.RowCount-1] := DBTCodigo.Caption;
    FrmVentas.SGListaProductos.Cells[4,FrmVentas.SGListaProductos.RowCount-1] := DBTCodigoBarra.Caption;
    FrmVentas.SGListaProductos.Cells[5,FrmVentas.SGListaProductos.RowCount-1] := DBTDescripcion.Caption;
    FrmVentas.SGListaProductos.Cells[6,FrmVentas.SGListaProductos.RowCount-1] := DBTUnidadPrecio.Caption;
    FrmVentas.SGListaProductos.Cells[7,FrmVentas.SGListaProductos.RowCount-1] := DM.ZQAgregarItems.FieldByName('precio1').AsString;

    FrmVentas.SGListaProductos.RowCount := FrmVentas.SGListaProductos.RowCount+1;

    SubTotal := 0;
   // Calcula el SubTotal
   For i:=1 to FrmVentas.SGListaProductos.RowCount-1 do
      SubTotal := SubTotal + StrToFloat(FrmVentas.SGListaProductos.Cells[8,i]);
      FrmVentas.LSubTotal.Caption := FormatFloat('%8.2n',SubTotal);
      //FrmVentas.LSubTotal.Caption := FloatToStr(SubTotal);
  Close;
end;

ya el segundo está comentado por que tampoco me funcionó así
Con este código igual agrega el Items al StringGrid pero me sale un error

'0.00' IS NOT A VALID FLOATING POINT VALUE

Y para que tengan un poco mas de idea de lo que es el StringGrid les dejo el código como se crea en tiempo de ejecución en el FrmVentas

Código Delphi [-]
procedure TFrmVentas.FormCreate(Sender: TObject);
begin
   SGListaProductos.Cells[0,0] := 'Nº';
   SGListaProductos.Cells[1,0] := 'Cantidad';
   SGListaProductos.Cells[2,0] := 'Unid.';
   SGListaProductos.Cells[3,0] := 'Código';
   SGListaProductos.Cells[4,0] := 'Cód. Barra';
   SGListaProductos.Cells[5,0] := 'Descripción';
   SGListaProductos.Cells[6,0] := 'Unid. P.';
   SGListaProductos.Cells[7,0] := 'Precio';
   SGListaProductos.Cells[8,0] := 'TOTAL';
   SGListaProductos.Cells[1,1] := '0';
   SGListaProductos.Cells[7,1] := '0.00';
   SGListaProductos.Cells[8,1] := '0.00';
end;

Buenooooooooo!!! creo que escribí mucho pero la verdad que me gusta buscar antes de preguntar y no encontré nada en los foros mas que estos temas que por cierto aprendí a hacer converciones pero no lo suficiente para solucionar mi error por mi solo ( que frustrante )

TEMAS PARA CONVERCIONES

http://www.clubdelphi.com/foros/showthread.php?t=13012
http://www.clubdelphi.com/foros/showthread.php?t=10903

Bueno perdón por hacer tan larga la pregunta pero es que soy del lema
Emplea suficiente tiempo en generar una pregunta clara para recibir una respuesta digna

joder no se como va el lema pero algo por el estilo

jejeje creo que fué un mal chiste

ya saludos!!!

PD devería usar un DBGrid para estos trabajos ??
PD2 un ejemplo se agradecería muchisisisimo

PD3 ( importante ) Me olvidaba, uso MySQL y el campo de Precio1 es tipo FLOAT si necesitan ese dato

Última edición por BlackDaemon fecha: 07-03-2007 a las 07:59:11.
Responder Con Cita