Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > SQL
Register FAQ Members List Calendar Guía de estilo Today's Posts

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 12/05/2003
judoboy judoboy is offline
Miembro
 
Join Date: May 2003
Location: Valencia
Posts: 139
Poder: 24
judoboy Va por buen camino
¿Como realizar bien un UPDATE?

Hola tengo problemas a la hora de hacer un UPDATE.
El asunto es el siguiente, quiero actualizar el stock de unos artículos. El UPDATE lo hago cogiendo los datos de un DBGrid.

Yo hago esto

Code:
 Data:=DBGLineasPedido.DataSource.DataSet;
             Data.First;

while not (Data.Eof) do

begin
//HAGO en UPDATE

Data.Next;

end;

Pero me pasa lo siguiente en lugar de actualicar el stock de cada artículo con su correspondiente cantidad,me suma las cantidades de todos los artículos y con esa misma cantidad me actualiza el stock de todos los artículos.

No sé si me he explicado bien.

Seguramente se podrá hacer de otra forma mediante TRIGGERs o algo, pero es que mediante triggers no me entero.

Un Saludo.
Reply With Quote
  #2  
Old 12/05/2003
judoboy judoboy is offline
Miembro
 
Join Date: May 2003
Location: Valencia
Posts: 139
Poder: 24
judoboy Va por buen camino
El update lo hago así
Code:
'UPDATE ARTICULOS SET STOCK=STOCK+"'+DBGLineasPedido.Fields[2].Value+'"';
donde Cantidad ocupa la tercera posición en el dbgrid.
Reply With Quote
  #3  
Old 12/05/2003
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: Ciudad de México
Posts: 20,269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Quote:
Posteado originalmente por judoboy
El update lo hago así
Code:
'UPDATE ARTICULOS SET STOCK=STOCK+"'+DBGLineasPedido.Fields[2].Value+'"';
donde Cantidad ocupa la tercera posición en el dbgrid.
¿Y no le falta una cláusula WHERE a tu instrucción? Sin ella el UPDATE se hace sobre todos los registros.

// Saludos
Reply With Quote
  #4  
Old 13/05/2003
judoboy judoboy is offline
Miembro
 
Join Date: May 2003
Location: Valencia
Posts: 139
Poder: 24
judoboy Va por buen camino
Ya pero que pongo en la cláusula WHERE, porque yo quiero que me hago los artículos como digo que estan en el DBGrid.

Es que no se que puedo poner para que identifique a un artículo y luego al otro.
Reply With Quote
  #5  
Old 13/05/2003
__cadetill __cadetill is offline
Miembro
 
Join Date: May 2003
Posts: 3,387
Poder: 27
__cadetill Va por buen camino
Quiza el codigo del articulo que tienes en la linea de detalle?

Vamos, no se como habras hecho las relaciones entre las tablas, pero es lo mas logico que se me ocurre
Reply With Quote
  #6  
Old 13/05/2003
judoboy judoboy is offline
Miembro
 
Join Date: May 2003
Location: Valencia
Posts: 139
Poder: 24
judoboy Va por buen camino
He probado esto

Code:
 SentenciaSqlStock:='UPDATE ARTICULOS SET
 STOCK_OBRA_RECIBIR=STOCK_OBRA_RECIBIR-
"'+UModuloDatos.TL_P_ProvCANTIDAD.AsString+'" 
WHERE CODIGO_ARTICULO="'+UModuloDatos.TableArticulosCODIGO_ARTICULO.Value+'"';
Y lo que me hace es actualizarme el útimo articulo con la suma de las cantidades de los otros. Mientras que los demás no actualiza nada.

Last edited by judoboy : 13/05/2003 at 10:27.
Reply With Quote
  #7  
Old 13/05/2003
__cadetill __cadetill is offline
Miembro
 
Join Date: May 2003
Posts: 3,387
Poder: 27
__cadetill Va por buen camino
Buff, pos ahora creo que me he perdido yo. No se lo que quieres hacer exactamente

A ver si nos lo puedes explicar un tanto mejor

P.D. : mira de editar tu mensaje anterior y poner en varias lineas el codigo que has puesto, que lo de la barra de desplazamiento horizontal es un coñazo para seguir en codigo. Gracias
Reply With Quote
  #8  
Old 13/05/2003
judoboy judoboy is offline
Miembro
 
Join Date: May 2003
Location: Valencia
Posts: 139
Poder: 24
judoboy Va por buen camino
Intentaré explicarme mejor.
Quiero actualizar el stock de mis artículos cuando estén servidos.
Pero no consigo hacerlo bien.

Muestro en un DBGrid los artículos para que el usuario los vea.
Y a continuación filtro por el pedido para realizar solo el UPDATE de los artículos de dicho pedido.

Ejemplo: tengo un pedido con 2 artículos uno tiene cantidad 4 y el otro tiene cantidad 5.

Si hago el UPDATE sin la clausula where me actualiza ambos artículos con la suma de las dos cantidades es decir, en 9 artículos más.

Mientras que si hago el UPDATE con la clásula where que puesto antes, solo me actualiza el 2º artículo pero con la suma de las dos cantidades, es decir, me suma 9 al stock del 2º artículo, pero en el 1º no hace nada.

Lo que quiero es que me actualice 4 en el 1º artículo y 5 en el 2º,
en este ejemplo claro está.


Me he explicado mejor?
Reply With Quote
  #9  
Old 13/05/2003
__cadetill __cadetill is offline
Miembro
 
Join Date: May 2003
Posts: 3,387
Poder: 27
__cadetill Va por buen camino
Si utilizas un SGBD, te recomiendo los triggers. Si no, no te quedara mas remedio que hacer un bucle recorriendo todo el detalle del pedido y, por cada linea, lanzar el SQL de Update con la clausula where del codigo del articulo. Pero claro, este bucle no puedes (un consejo mio, claro) ponerlo en ningun evento del TDataSet o TDataSource, mejor ponlo en un boton o al validar la pantalla o algo por el estilo.

Espero que ahora si arreglemos tu problema

P.D. : gracias por editar el post
Reply With Quote
  #10  
Old 13/05/2003
jceluce jceluce is offline
Miembro
 
Join Date: May 2003
Location: Mar del Plata - Argentina
Posts: 29
Poder: 0
jceluce Va por buen camino
Yo haría algo así:

Data:=DBGLineasPedido.DataSource.DataSet;
Data.First;

while not (Data.Eof) do

begin
//HAGO en UPDATE

//Supongo que es CODIGO de Articulo está en la primer columna
//del DBGrid (DBGLineasPedido.Fields[0].Value)

Query1.Sql.Text := 'UPDATE ARTICULOS SET STOCK=STOCK+"'+DBGLineasPedido.Fields[2].Value+'"' +
'WHERE CODIGO_ARTICULO = "'+DBGLineasPedido.Fields[0].Value+'"';




Data.Next;

end;
__________________
Saludos

Javier
Reply With Quote
  #11  
Old 13/05/2003
judoboy judoboy is offline
Miembro
 
Join Date: May 2003
Location: Valencia
Posts: 139
Poder: 24
judoboy Va por buen camino
Jceluce, te quiero, ya me funciona bien
Reply With Quote
  #12  
Old 13/05/2003
judoboy judoboy is offline
Miembro
 
Join Date: May 2003
Location: Valencia
Posts: 139
Poder: 24
judoboy Va por buen camino
Por cierto no os pongais celosos los demás: cadetill, roman..
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +2. The time now is 05:30.


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