Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Sumar la cantidad de un articulo a través de un ADoquery para Access. (https://www.clubdelphi.com/foros/showthread.php?t=85631)

feliz-58 10-04-2014 17:18:56

Sumar la cantidad de un articulo a través de un ADoquery para Access.
 
Tengo una tabla con diferentes registros, la tabla de llama Productos, y la columna es cantidad existente.

lo que quiero hacer es que cuando yo introduzca en un edit la cantidad por ejemplo '5', le sume a la cantidad existente, que si eran 2 ahora sean 7.

Saluos! :rolleyes:

ecfisa 10-04-2014 17:34:10

Hola Feliz-58.

Código SQL [-]
UPDATE PRODUCTOS
  SET CANTIDAD_EXISTENTE = CANTIDAD_EXISTENTE + :VALOR
WHERE UNA_COLUMNA = :UN_VALOR

Saludos :)

feliz-58 10-04-2014 17:52:23

Cita:

Empezado por ecfisa (Mensaje 475019)
Hola Feliz-58.

Código SQL [-]
UPDATE PRODUCTOS
  SET CANTIDAD_EXISTENTE = CANTIDAD_EXISTENTE + :VALOR
WHERE UNA_COLUMNA = :UN_VALOR

Saludos :)

Iluminame Como :p

ecfisa 10-04-2014 17:57:15

Hola de nuevo :)

Por ejemplo:
Código Delphi [-]
...
  with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE PRODUCTOS');                                     // Acción 
    SQL.Add('SET CANTIDAD_EXISTENTE = CANTIDAD_EXISTENTE + :VALOR'); // Incrementar
    SQL.Add('WHERE ID =:ID');                                        // Condición (sobre que registro)  
    Parameters.ParamByName('VALOR').Value := 10;                     // Valor a incrementar
    Parameters.ParamByName('ID').Value:= 1025;                       // Registro  
    ExecSQL;
  end;
...

Saludos :)

feliz-58 10-04-2014 18:30:23

Cita:

Empezado por ecfisa (Mensaje 475022)
Hola de nuevo :)

Por ejemplo:
Código Delphi [-]
...
  with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE PRODUCTOS');                                     // Acción 
    SQL.Add('SET CANTIDAD_EXISTENTE = CANTIDAD_EXISTENTE + :VALOR'); // Incrementar
    SQL.Add('WHERE ID =:ID');                                        // Condición (sobre que registro)  
    Parameters.ParamByName('VALOR').Value := 10;                     // Valor a incrementar
    Parameters.ParamByName('ID').Value:= 1025;                       // Registro  
    ExecSQL;
  end;
...

Saludos :)

Excelente! Listo.

Asi lo guardo y me pongo a estudiarlo.

Ya lo aplique, funciona perfecto.

Gracias ;)

feliz-58 10-04-2014 21:38:29



Una pregunta, Y que pasa si le quiero buscar el registro no por numero de registro sino por el texto de un campo de un registro?

Código Delphi [-]
Parameters.ParamByName('ID').Value:= 1025;

ecfisa 10-04-2014 21:45:51

Hola Feliz-58.

Ejemplo:
Código Delphi [-]
 with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE PRODUCTOS');                                     
    SQL.Add('SET CANTIDAD_EXISTENTE = CANTIDAD_EXISTENTE + :VALOR'); 
    SQL.Add('WHERE NOMBRE = :NOMBRE');                                       
    Parameters.ParamByName('VALOR').Value := IntToStr(EditValor.Txt);                    
    Parameters.ParamByName('NOMBRE').Value:= EditNombre.Text;                        
    ExecSQL;
  end;
¡ Pero cuidado! Eso puede ser peligroso si existe mas de un campo con el mismo texto (vg. dos productos con el mismo nombre), ya que haría tantas modificaciones como ocurrencias encontrara.

Saludos :)

feliz-58 10-04-2014 21:54:38

Cita:

Empezado por ecfisa (Mensaje 475036)
Hola Feliz-58.

Ejemplo:
Código Delphi [-]
 with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE PRODUCTOS');                                     
    SQL.Add('SET CANTIDAD_EXISTENTE = CANTIDAD_EXISTENTE + :VALOR'); 
    SQL.Add('WHERE NOMBRE = :NOMBRE');                                       
    Parameters.ParamByName('VALOR').Value := IntToStr(EditValor.Txt);                    
    Parameters.ParamByName('NOMBRE').Value:= EditNombre.Text;                        
    ExecSQL;
  end;
¡ Pero cuidado! Eso puede ser peligroso si existe mas de un campo con el mismo texto (vg. dos productos con el mismo nombre), ya que haría tantas modificaciones como ocurrencias encontrara.

Saludos :)

PS entonces lo hago por codigo .-. :eek:


La franja horaria es GMT +2. Ahora son las 17:04:33.

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