Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Actualizar Stock (https://www.clubdelphi.com/foros/showthread.php?t=35944)

BlueSteel 26-09-2006 23:22:31

Actualizar Stock
 
Hola amigos, tengo un pequeño problema.(pa variar :D ) necesito actualizar el Stock de la tabla productos, pero nunca he realizado eso....

la siguiente sentencia me actualiza el stock, pero lo que realmente me hace es cambiar el contenido por el nuevo valor, y lo que necesito es que se lo sume o le reste dicho valor (dependiendo del caso)

Código Delphi [-]
For i:=0 to Items_Paso.RowCount-1 Do
Begin
     IBQ_Stock.SQL.Clear;
     IBQ_Stock.SQL.Add('Update "Producto" Set "Pro_Stock"=:Var1');
     IBQ_Stock.SQL.Add('Where "Pro_Codigo"=:Var2');
     IBQ_Stock.Params[0].AsInteger := StrToInt(Items_Paso.Cells[1,i]);
     IBQ_Stock.Params[1].AsString  := Items_Paso.Cells[0,i];
     IBQ_Stock.ExecSQL;
End;

encontre esta sentencia y me funciona bien pero en el Editor de SQL y no se como traspasarla al Delphi

Código Delphi [-]
Update "Producto" Set "Pro_Stock"="Pro_Stock"+25
la idea es que el 25 se reemplace por el contenido de StrToInt(Items_Paso.Cells[1,i]);

tambien probé esto, pero no me funcionó (cambiando la asignación del parametro)
Código Delphi [-]
IBQ_Stock.Params[0].AsInteger := IBQ_Stock['Pro_Stock']+StrToInt(Items_Paso.Cells[1,i]);

Caral 26-09-2006 23:29:22

Hola
Supongo que asi:
Código Delphi [-]
IBQ_Stock.SQL.Add('Update "Producto" Set "Pro_Stock"'+25'');
Saludos

Caral 26-09-2006 23:40:05

Hola
En Realidad no veo para que el uso de comillas dobles:
Código Delphi [-]
IBQ_Stock.SQL.Add('Update Producto Set Pro_Stock = Pro_Stock '+25'');
Saludos

BlueSteel 27-09-2006 17:47:52

Hola Caral...

se que la sentencia que me das funciona bien en el Editor de SQL..:p . pero si la ingresas a un IBQuery de esa forma no funciona:(

ademas, eso de 25 era un ejemplo... ya que debo reemplazarlo por StrToInt(Items_Paso.Cells[1,i])

esperando me haya explicado bien...:D :p

Caral 27-09-2006 20:16:42

Hola BlueSteel
Te respondo para poner este en primer lugar de la fila y ver si alguien mas ayuda en esto, pero me quedo corto talvez se me ocurra algo.
estare pendiente de esto haber que pasa.
Saludos

aledieb 27-09-2006 21:04:18

Proba con, no se si funcionará:

Código SQL [-]
Update Producto Set Pro_Stock=Pro_Stock+:valor

Código Delphi [-]
IBQ_Stock.Params[0].AsInteger:=StrToInt(Items_Paso.Cells[1,i]);

Otra opción seria utilizar una variable auxiliar asignarle el valor del campo y luego hacer el update:

Código SQL [-]
Update Producto Set Pro_Stock=:valor

Código Delphi [-]
variable_aux:=IBQ_Stock['Pro_Stock'];
IBQ_Stock.Params[0].AsInteger:=variable_aux+StrToInt(Items_Paso.Cells[1,i]);

BlueSteel 28-09-2006 00:14:56

ya me funciono...gracias
 
realice el siguiente codigo.. y funciona perfecto...tanto para sumar como para restar

Código Delphi [-]
For i:=0 to Items_Paso.RowCount-1 Do
Begin
     IBQ_Param.SQL.Clear;
     IBQ_Param.SQL.Add('Update "Producto" Set "Pro_Stock"="Pro_Stock"-'+Items_Paso.Cells[1,i]);
     IBQ_Param.SQL.Add('Where "Pro_Codigo"=:Var1');
     IBQ_Param.Params[0].AsString  := Items_Paso.Cells[0,i];
     IBQ_Param.ExecSQL;
End;

gracias a todos por su ayuda...:p


La franja horaria es GMT +2. Ahora son las 04:11:57.

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