Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-03-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 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
  #2  
Antiguo 07-03-2007
Avatar de Monchi
Monchi Monchi is offline
Miembro
 
Registrado: jun 2006
Ubicación: Cordoba, Argentina
Posts: 18
Poder: 0
Monchi Va por buen camino
Yo lo hago asi:
Uso un vector que cargo antes de llenar el StringGrid, y cuando lleno el StringGrid calculo el total de la venta que voy a mostrar
Código Delphi [-]
   for i:=0 to g_cantidadarticulos-1 do
   begin
   stgarticulos.RowCount:=stgarticulos.RowCount+1;
   stgarticulos.Cells[0,stgarticulos.RowCount-2]:=inttostr(articulo.codigo);
   stgarticulos.Cells[1,stgarticulos.RowCount-2]:=articulo.descripcion;
   stgarticulos.Cells[2,stgarticulos.RowCount-2]:=rubro.descripcion;
   stgarticulos.Cells[3,stgarticulos.RowCount-2]:=floattostr(g_detalleVenta[i].cantidad);
   stgarticulos.Cells[4,stgarticulos.RowCount-2]:=formatfloat('0.00',g_detalleventa[i].precio);
   stgarticulos.Cells[5,stgarticulos.RowCount-2]:=formatfloat('0.00',(g_detalleventa[i].precio)*g_detalleVenta[i].cantidad);
   total_gravado:=total_gravado+((g_detalleventa[i].precio)*g_detalleVenta[i].cantidad)*(1-(strtofloat(txtdescuento.text)/100));
   end;
Responder Con Cita
  #3  
Antiguo 08-03-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 18
BlackDaemon Va por buen camino
Pues la verdad que no entendí muy bién
Tienes mas de 2 StringGrid verdad ??
Bueno a ver si álguien mas me da una ayuda que todavía no logré resolverla

saludos y gracias por la respuesta

EDIT : sobre el error '0.00' IS NOT A VALID FLOATING POINT VALUE lo que hice fué ir a Panel de Control -> Configuración regional y de Idiomas -> Español ( Bolivia ) -> Personalizar -> tengo estos valores :

Todo eso lo tengo en Números

Símbolo decimal : Punto
Símbolo de separación de miles: Coma
separador de listas : Coma

Todo esto en la pestaña Monedas

Símbolo de decimal : Punto
Símbolo de separación de miles : Coma

saludos

Última edición por BlackDaemon fecha: 08-03-2007 a las 17:49:26.
Responder Con Cita
  #4  
Antiguo 08-03-2007
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 18
BlackDaemon Va por buen camino
Bueno yo mismo me respondo
recuerdan mi código :

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;

y me salía ese puñetero error ??
Pues ahora está así y no me sale ese error

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[7,i]);
      FrmVentas.SGSubTotal.Cells[1,0] := Format('%8.2n',[SubTotal]);

  
  Close;
end;

ya ahora decidí mostrar el resultado en un StringGrid pequeñito Pero ese no es el problema por que podría haberlo mostrado en el mismo Label que tenía
Ya ahora esta línea :

Código Delphi [-]
//FrmVentas.SGListaProductos.RowCount := FrmVentas.SGListaProductos.RowCount+1;

la comenté y puedo agregar ahora los Items al StringGrid que contiene los Items sin problema y me da el resultado del precio1 que lo saco con :

Código Delphi [-]
FrmVentas.SGListaProductos.Cells[7,FrmVentas.SGListaProductos.RowCount-1] := DM.ZQAgregarItems.FieldByName('precio1').AsString;

y ya todo bién peroooooo!!! ahora un problema.. como es de suponerse esa línea que comenté lo que hace es cada vés que pasa por ahí aumenta 1 al StringGrid y ahora no aumenta nada y pues si agrego otro Item me sobreescribe al que tengo en el StringGrid pero vamos.. eso es lógico por que no hay que aumente a +1 el StringGrid ahora la pregunta.

Por que esa línea me da problemas con el error que tengo en el anterior mensaje ????
Que otra forma tengo de sumar columnas en un StringGrid ??

saludos
Responder Con Cita
  #5  
Antiguo 09-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Al hacer el bucle, tambien coge la última fila que acabas de añadir en blanco, y al intentar pasar esa celda vacía a Float, es cuando obtienes el error.

Código Delphi [-]
 FrmVentas.SGListaProductos.RowCount := FrmVentas.SGListaProductos.RowCount+1;

    SubTotal := 0;
   // Calcula el SubTotal
   For i:=1 to FrmVentas.SGListaProductos.RowCount-2 do
añade la línea al StringGrid, pero el bucle, hazlo 1 vez menos (ya que sabes que la última línea siempre estará vacía).

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 04-10-2007
EMANEMS EMANEMS is offline
Registrado
 
Registrado: oct 2007
Posts: 8
Poder: 0
EMANEMS Va por buen camino
Cita:
Empezado por BlackDaemon Ver Mensaje
Pues la verdad que no entendí muy bién
Tienes mas de 2 StringGrid verdad ??
Bueno a ver si álguien mas me da una ayuda que todavía no logré resolverla

saludos y gracias por la respuesta

EDIT : sobre el error '0.00' IS NOT A VALID FLOATING POINT VALUE lo que hice fué ir a Panel de Control -> Configuración regional y de Idiomas -> Español ( Bolivia ) -> Personalizar -> tengo estos valores :

Todo eso lo tengo en Números

Símbolo decimal : Punto
Símbolo de separación de miles: Coma
separador de listas : Coma

Todo esto en la pestaña Monedas

Símbolo de decimal : Punto
Símbolo de separación de miles : Coma

saludos
HOLA Q TAL QUISIERA VER SI ME PUDIERAN AYUDAR ESTOY EMPESANDO A PROGRAMAR EN DELPHI Y TENGO
UN PROBLEMA CON LOS STRINGGRID

EN UN FOR COLOQUE TRES STRINGGRID
STRINGGRID1
STRINGGRID2
STRINGGRID3

LO QUE QUIERO ES QUE EN EL STRINGGRID3 ME COLOQUE LA SUMA DE LOS NUMERO Q COLOQUE EN EL
STRINGGRID1 Y STRNGGRID2
SEGUN LA POSICION EN LOS CAMPOS LO QUE ESTOY HACIENEDO ES COLOCAR EN UN BUTTON
EL SIG CODIGO

PROCEDURE TFORM1.TOOLBUTTON1CLICK(SENDER: TOBJECT);
BEGIN
STRINGGRID3.CELL[0,0]:=STRINGGRID1.CELL[0,0]+STRINGGRID2.CELL[0,0];
END;

Y ME MARCA EL SIG ERROR INCOMPATIBLE TYPE:'INTEGER' AND 'STRING'
ME PODRIAN AYUDAR A SABER COMO SUMARLOS TOMANDO EN CUENTA LOS PUNTOS DECIMALES Y NUMEROS LARGOS
SELOS AGRADECERE MUCHO GRACIAS
Responder Con Cita
  #7  
Antiguo 04-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
hola
Por favor no repitas las preguntas, aqui hay una respuesta, espero te sirva.
Saludos
Responder Con Cita
  #8  
Antiguo 06-12-2007
Avatar de alexander_lv
alexander_lv alexander_lv is offline
Miembro
 
Registrado: mar 2007
Ubicación: Colombia - Quindio - Circasia
Posts: 11
Poder: 0
alexander_lv Va por buen camino
ME MARCA EL SIG ERROR INCOMPATIBLE TYPE:'INTEGER' AND 'STRING'

Código Delphi [-]
PROCEDURE TFORM1.TOOLBUTTON1CLICK(SENDER: TOBJECT);
BEGIN
 STRINGGRID3.CELL[0,0]:=STRINGGRID1.CELL[0,0]+STRINGGRID2.CELL[0,0];
END;


la respuesta es porque no puedes sumar dos cadenas tienes que convertirlas antes de trabajar con ellas

Código Delphi [-]
 PROCEDURE TFORM1.TOOLBUTTON1CLICK(SENDER: TOBJECT);
 BEGIN
 STRINGGRID3.CELL[0,0]:=IntToStr(StrToInt(STRINGGRID1.CELL[0,0])+StrToInt(STRINGGRID2.CELL[0,0]));
 END;

Última edición por alexander_lv fecha: 06-12-2007 a las 21:03:47.
Responder Con Cita
  #9  
Antiguo 06-12-2007
Avatar de alexander_lv
alexander_lv alexander_lv is offline
Miembro
 
Registrado: mar 2007
Ubicación: Colombia - Quindio - Circasia
Posts: 11
Poder: 0
alexander_lv Va por buen camino
devería usar un DBGrid para estos trabajos ??

a la pregunta
devería usar un DBGrid para estos trabajos ??


yo personalme tambien uso los StringGrid para mostrar la informacion porque mis aplicaciones son cliente servidor y cuando estan en redes muy malas donde se va mucho la luz o router malos que se caen cada rato que me ha pasado en muchos clientes

se pierde la conexion a la BD y si tengo tengo 20 registros de una factura y no los he grabado y se cae la red pues se pierde

encambio usted tiene toda la informacion en el StringGrid y puedes hacer una reconexxion a la base de datos y no guardar sin problemas

asi lo hago yo y me ha funcionado perfecto
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
convertir string jsanchez Varios 3 31-07-2006 22:23:19
Problema al convertir a string Fita Varios 3 24-12-2005 16:43:55
conversion de double a string y viceversa mainau Varios 2 03-08-2004 21:11:30
convertir de boolean a string ??? chele Varios 2 10-06-2004 12:18:35
pasar double a string ???? chele Varios 2 01-06-2004 16:54:06


La franja horaria es GMT +2. Ahora son las 07:08:34.


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