Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-05-2010
rufo rufo is offline
Miembro
 
Registrado: jul 2006
Posts: 240
Poder: 18
rufo Va por buen camino
Sumar campo cuando este asi actualizado

Que tal amigos espero que me echen la mano en esto que no se por donde empezar resulta que tengo un campo en mi BD que es no. de piezas en el cual le ingreso datos ahora cuando me llegan de nuevo piezas tengo que actualizar la informacion pero lo que en si yo quiero que cuando yo actualize me sume las piezas ya existentes con las que acabo de ingresar, la verdad nose como hacerle, ya que esto lo quiero hacer cuando actualizo este campo. Que se vaya sumando por medio de una consulta o que se yo pero al momento de agregar nuevas entradas, bueno espero me echen la mano y de antemano gracias.
Responder Con Cita
  #2  
Antiguo 28-05-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Código:
update tabla
set piezas = piezas + new.piezas
¿Es eso lo que quieres?, con más información se te puede ayudar mejor.
Responder Con Cita
  #3  
Antiguo 28-05-2010
rufo rufo is offline
Miembro
 
Registrado: jul 2006
Posts: 240
Poder: 18
rufo Va por buen camino
Gracias amigo por responder pero me he quedado igual, en si quiero hacer algo parecido asi:

PIEZAS
10

PIEZAS (ingresadas)
5

PIEZAS
15

En si es lo que quiero hacer es que en mi tabla ya tengo el campo PIEZAS con datos entonces cuando ingreso en un edit las PIEZAS que acaban de llegar que cuando almacene esta actualizacion me sume con las que ya tengo mas con las que acabo de introducir para que mas adelante me sirvan para ver sus existencias reales, de antemano gracias.
Responder Con Cita
  #4  
Antiguo 28-05-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es como te he mostrado antes. ¿Qué parte es la que no sabes hacer?, ¿qué llevas hecho y cómo?
Responder Con Cita
  #5  
Antiguo 28-05-2010
rufo rufo is offline
Miembro
 
Registrado: jul 2006
Posts: 240
Poder: 18
rufo Va por buen camino
Gracias amigo de nuevo por responder, te pongo mi codigo que tengo

Código Delphi [-]
procedure TENTRADAS.sButton4Click(Sender: TObject);
begin
 if messagedlg('Los datos son correctos?',mtconfirmation,[mbok,mbcancel],0)=mrok then
   begin
      with dm1.T_productos do
      begin
         active:=true;
         SetKey;
         FieldByName('id_productos').Asinteger := strtoint(slabel9.Caption);
         GotoNearest;
         edit;
         fieldbyname('id_productos').asinteger:=strtoint(slabel9.Caption);
         fieldbyname('fecha_entrada').asstring:=sedit2.Text;
         fieldbyname('piezas).asstring:=sedit1.Text;
         fieldbyname('id_proveedor').asinteger:=v_idproveedor;
         post;
         refresh;
      end;
      begin
       update;
       dm1.T_productos;
       set dm1.T_productos.FieldByName('piezas')= dm1.T_productos.FieldByName('piezas') + dm1.T_productos.FieldByName('new.piezas');
      end;
   end;
Te pongo todo este codigo por que es en el boton que actualiza mi informacion, ahora asi como me lo pusiste anteriormente me marcaba error de codigo entonces lo puse asi como te lo muestro pero me marcar igual el error ya que mi tabla la tengo en Datamodule por esa razon es como yo llamo a la tabla bueno espero que me ayudes o me comentes en donde esta mi error y gracias de nuevo.

Última edición por rgstuamigo fecha: 28-05-2010 a las 22:12:42. Razón: Estética en el código
Responder Con Cita
  #6  
Antiguo 28-05-2010
Lenny Lenny is offline
Miembro
 
Registrado: jun 2007
Posts: 161
Poder: 17
Lenny Va por buen camino
Lightbulb

Primero, Eliges la Tabla a editar:
Código Delphi [-]
Table1.Edit;

Luego Seleccionas de donde y con que editaras la Info:
Si apuntas a un DBEdit, con un Edit donde ingresaras la cantidad a ingresar:
Código Delphi [-]
DBEdit1.Text:= FloatToStr (StrToFloat(DBEdit1.Text) + StrToFloat (Edit1.Text));

Directo a la Tabla:
Código Delphi [-]
Table1.FieldbyName('PIEZAS').AsFloat := StrToFloat (Edit1.Text);

Luego Ingresas el Registro:
Código Delphi [-]
Table1.Post;

O sea quedaria algo asi:
Código Delphi [-]
 
Table1.Edit;
DBEdit1.Text:= FloatToStr (StrToFloat(DBEdit1.Text) + StrToFloat (Edit1.Text));
Table1.Post;

Al menos asi lo hago yop, y me resulta impecable sin errores.

Saludos!!!

Última edición por Lenny fecha: 28-05-2010 a las 19:42:38.
Responder Con Cita
  #7  
Antiguo 28-05-2010
rufo rufo is offline
Miembro
 
Registrado: jul 2006
Posts: 240
Poder: 18
rufo Va por buen camino
Gracias amigo por responderme, tengo una duda en respecto como le hago directo a la tabla como le hago para sumar ya que en los ejemplos que me mostraste no aparece la suma o es la misma linea de codigo que aparece al ejemplo que me muestras:

Código:
 
DBEdit1.Text:= FloatToStr (StrToFloat(DBEdit1.Text) + StrToFloat (Edit1.Text));
Tambien te mando mi codigo como va quedando para que me digas si esta bien.

Código:
  begin
       dm1.T_productos.Edit;
       dm1.T_productos.FieldbyName('piezas').AsString := sEdit1.Text;

       dm1.T_productos.Post;
      end;
Gracias de antemano.
Responder Con Cita
  #8  
Antiguo 28-05-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola rufo.
Sumar las piezas ingresadas en el Edit al campo piezas, es tán sencillo
como lo expuso casimiro (stock_anterior:= stock_anterior + cantidad_ingresada)

En tu caso creo que sería:
Código:
  with dm1.T_productos do
    FieldByName('piezas'):= FieldByName('Piezas')+
      IntToStr(EditX.Text);  // donde, EditX = Piezas ingresadas
Veo en tu código algo que te va a ocasionar problemas, supongamos que estas
manejando un stock de una farmacia.

Estas usando GotoNearest para posicionarte en el registro que buscas.
Supongamos ahora que te equivocas al ingresar el id_producto del producto.
GotoNearest se situará en el registro que más se acerque al buscado sin avisar de ningún error.

Esto puede ocasinar por ejemplo, que ingresar una compra de Aspirina te incremente
las existencias de Viagra (ocasionando un irremediable paro del programa )

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 28-05-2010 a las 21:10:41.
Responder Con Cita
  #9  
Antiguo 28-05-2010
Lenny Lenny is offline
Miembro
 
Registrado: jun 2007
Posts: 161
Poder: 17
Lenny Va por buen camino
Arrow

Sorry, no deje el ejemplo completo, seria algo asi:

Código Delphi [-]
procedure TForm1.Guardar(Sender: TObject);
begin
Table1.Edit;
Table1.FieldbyName('TOTAL').AsFloat:= Table1.FieldbyName('TOTAL').AsFloat +  StrToFloat (Edit1.Text);
Table1.Post;
end;

Tu Código deveria quedar asi:

Código Delphi [-]
procedure TForm1.Guardar(Sender: TObject);
begin
dm1.T_productos;
dm1.T_productos.FieldbyName('piezas').AsFloat:= dm1.T_productos.FieldbyName('piezas').AsFloat +  StrToFloat (sEdit1.Text);
dm1.T_productos.Post;
end;

Prueba y nos cuentas!!!, quizás la respuesta es algo "Caníbal" o "Rebuscado", no pretendo reinventar la rueda, pero soy de los que Código que resulta, Repite y esta forma hasta el día de hoy no me ha dado ningún problema, si alguien tiene alguna mejor forma (obviamente hay alguna mejor y menos rebuscado) que nos ilumine y así aprendemos todos...

Saludos...

Última edición por Lenny fecha: 28-05-2010 a las 21:32:28.
Responder Con Cita
  #10  
Antiguo 28-05-2010
rufo rufo is offline
Miembro
 
Registrado: jul 2006
Posts: 240
Poder: 18
rufo Va por buen camino
Hijole amigos pues resulta que ya ingrese el codigo pero al momento de oprimir el boton actualizar me hace el calculo mal es decir si yo tengo 100 piezas me aparece 20 les pongo en si el codigo de nuevo para que vean si estoy cometiendo un error

Código:
procedure TENTRADAS.sButton4Click(Sender: TObject);
begin
 if messagedlg('Los datos son correctos?',mtconfirmation,[mbok,mbcancel],0)=mrok then
   begin
      with dm1.T_productos do
      begin
         active:=true;
         SetKey;
         FieldByName('id_productos').Asinteger := strtoint(slabel9.Caption);
         GotoNearest;
         edit;
         fieldbyname('id_productos').asinteger:=strtoint(slabel9.Caption);
         fieldbyname('fecha_entrada').asstring:=sedit2.Text;
         fieldbyname('piezas').asstring:=sedit1.Text;
         fieldbyname('id_proveedor').asinteger:=v_idproveedor;
         post;
         refresh;
      end;
      begin
       dm1.T_productos.Edit;
       dm1.T_productos.FieldbyName('piezas').AsFloat:= dm1.T_productos.FieldbyName('piezas').AsFloat +  StrToFloat(sEdit1.Text);
       dm1.T_productos.Post;
      end;
   end;
De antemano gracias.
Responder Con Cita
  #11  
Antiguo 28-05-2010
rufo rufo is offline
Miembro
 
Registrado: jul 2006
Posts: 240
Poder: 18
rufo Va por buen camino
Amigos ya quedo resuelto, les explico que estaba mal al momento de actualizar ya que estaba sumando el mismo registro con el mismo, les pongo como ya quedo mi codigo ya correcto.

Código:
procedure TENTRADAS.sButton4Click(Sender: TObject);
begin
 if messagedlg('Los datos son correctos?',mtconfirmation,[mbok,mbcancel],0)=mrok then
   begin
      with dm1.T_productos do
      begin
         active:=true;
         SetKey;
         FieldByName('id_productos').Asinteger := strtoint(slabel9.Caption);
         GotoNearest;
         edit;
         fieldbyname('id_productos').asinteger:=strtoint(slabel9.Caption);
         fieldbyname('fecha_entrada').asstring:=sedit2.Text;
         //fieldbyname('piezas').asstring:=sedit1.Text;   //Aqui es donde estaba mal ya que estaba sumando asi mismo
         fieldbyname('id_proveedor').asinteger:=v_idproveedor;
         post;
         refresh;
      end;
      begin
       dm1.T_productos.Edit;
       dm1.T_productos.FieldbyName('piezas').AsFloat:= dm1.T_productos.FieldbyName('piezas').AsFloat +  StrToFloat(sEdit1.Text);
       dm1.T_productos.Post;
      end;
   end;
Gracias de antemano por sus contestacion.
Responder Con Cita
  #12  
Antiguo 28-05-2010
Lenny Lenny is offline
Miembro
 
Registrado: jun 2007
Posts: 161
Poder: 17
Lenny Va por buen camino
Exclamation

Edito el comentario, solucionaste el problema antes de darte una solución, Cualquier duda estaré atento...

Saludos...

Última edición por Lenny fecha: 28-05-2010 a las 22:08:18.
Responder Con Cita
  #13  
Antiguo 28-05-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Me alegro que lo hubieras solucionado amigo rufo,. Pero creo que hubiera sido mejor hacer la actualizacion usando un Trigger..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Sql sumar campo sum() teclilla SQL 27 17-02-2008 19:50:15
leer archivo.txt cuando este ha sido modificado... Greco Varios 4 14-11-2007 23:17:06
no me muestra un campo actualizado con triggers pmfras Firebird e Interbase 0 05-03-2005 18:41:07
Sumar un campo en dos tablas Ignacio SQL 2 27-09-2004 02:00:38


La franja horaria es GMT +2. Ahora son las 21:00:22.


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