problema con actualizacion en procedimiento

04/03/2008 - 18:47 por warface75 | Informe spam
Tengo un procedimiento que realiza una actualizacion de una tabla realizando
una comparacion con 3 campos y asi realizar la actualizacion de dos diferentes
el problema es que al tener dos registros similares y solo diferente en uno
de ellos afecta a los dos
por ejemplo
prodID IDCART LADO CANTIDAD
ACC125 2778545 DER 25
ACC125 2778545 IZQ 10

y modifico el que dice izq con cantidad de 30 , me afecta al que tiene lado
"DER" y me pone ambos con cantidad de 25 lado "DER"

el procedimiento esta como sigue:

@IdCart nvarchar(50),
@ProdID nvarchar(20),
@Lado nvarchar(12),
@Cantidad int
)
AS

UPDATE OrdenSecuencial

SET
Lado = @Lado,
Cantidad = @Cantidad


WHERE
IdCart = @IdCart
AND
ProdID = @ProdID
and
Lado=@Lado or Lado='-'

Preguntas similare

Leer las respuestas

#1 Isaias
04/03/2008 - 18:53 | Informe spam
Que significa Lado='-' ?

Si lo intentas asi:

WHERE ( IdCart = @IdCart AND ProdID = @ProdID)
AND Lado=@Lado

Saludos
IIslas


"warface75" wrote:

Tengo un procedimiento que realiza una actualizacion de una tabla realizando
una comparacion con 3 campos y asi realizar la actualizacion de dos diferentes
el problema es que al tener dos registros similares y solo diferente en uno
de ellos afecta a los dos
por ejemplo
prodID IDCART LADO CANTIDAD
ACC125 2778545 DER 25
ACC125 2778545 IZQ 10

y modifico el que dice izq con cantidad de 30 , me afecta al que tiene lado
"DER" y me pone ambos con cantidad de 25 lado "DER"

el procedimiento esta como sigue:

@IdCart nvarchar(50),
@ProdID nvarchar(20),
@Lado nvarchar(12),
@Cantidad int
)
AS

UPDATE OrdenSecuencial

SET
Lado = @Lado,
Cantidad = @Cantidad


WHERE
IdCart = @IdCart
AND
ProdID = @ProdID
and
Lado=@Lado or Lado='-'


Respuesta Responder a este mensaje
#2 warface75
04/03/2008 - 19:34 | Informe spam
Hola Isaias
muchas gracias por responder
no me funciono ninguno de los siguientes

WHERE ( IdCart = @IdCart AND ProdID = @ProdID)
AND Lado=@Lado or Lado='-'

WHERE ( IdCart = @IdCart AND ProdID = @ProdID)
AND (Lado=@Lado or Lado='-')

WHERE IdCart = @IdCart AND ProdID = @ProdID
AND (Lado=@Lado or lado='-')



el poner '-' es un caracter por ser cualquiera en realidad lo que coloca es
una X
no le afecta en la consulta



"Isaias" wrote:

Que significa Lado='-' ?

Si lo intentas asi:

WHERE ( IdCart = @IdCart AND ProdID = @ProdID)
AND Lado=@Lado

Saludos
IIslas


"warface75" wrote:

> Tengo un procedimiento que realiza una actualizacion de una tabla realizando
> una comparacion con 3 campos y asi realizar la actualizacion de dos diferentes
> el problema es que al tener dos registros similares y solo diferente en uno
> de ellos afecta a los dos
> por ejemplo
> prodID IDCART LADO CANTIDAD
> ACC125 2778545 DER 25
> ACC125 2778545 IZQ 10
>
> y modifico el que dice izq con cantidad de 30 , me afecta al que tiene lado
> "DER" y me pone ambos con cantidad de 25 lado "DER"
>
> el procedimiento esta como sigue:
>
> @IdCart nvarchar(50),
> @ProdID nvarchar(20),
> @Lado nvarchar(12),
> @Cantidad int
> )
> AS
>
> UPDATE OrdenSecuencial
>
> SET
> Lado = @Lado,
> Cantidad = @Cantidad
>
>
> WHERE
> IdCart = @IdCart
> AND
> ProdID = @ProdID
> and
> Lado=@Lado or Lado='-'
>
>
Respuesta Responder a este mensaje
#3 Alejandro Mesa
04/03/2008 - 19:47 | Informe spam
warface75,

La condición debe ser:

UPDATE
dbo.OrdenSecuencial
SET
Cantidad = @Cantidad
WHERE
IdCart = @IdCart
AND ProdID = @ProdID
AND Lado=@Lado

No tienes porque actualizar la columna [Lado] que esta se supone que sea
igual al valor de el parametro.

Si todavia sigue cambiando los valores, entonces chequea si la tabla tiene
un trigger asociado a la accion.


AMB

"warface75" wrote:

Hola Isaias
muchas gracias por responder
no me funciono ninguno de los siguientes

WHERE ( IdCart = @IdCart AND ProdID = @ProdID)
AND Lado=@Lado or Lado='-'

WHERE ( IdCart = @IdCart AND ProdID = @ProdID)
AND (Lado=@Lado or Lado='-')

WHERE IdCart = @IdCart AND ProdID = @ProdID
> AND (Lado=@Lado or lado='-')

el poner '-' es un caracter por ser cualquiera en realidad lo que coloca es
una X
no le afecta en la consulta



"Isaias" wrote:

> Que significa Lado='-' ?
>
> Si lo intentas asi:
>
> WHERE ( IdCart = @IdCart AND ProdID = @ProdID)
> AND Lado=@Lado
>
> Saludos
> IIslas
>
>
> "warface75" wrote:
>
> > Tengo un procedimiento que realiza una actualizacion de una tabla realizando
> > una comparacion con 3 campos y asi realizar la actualizacion de dos diferentes
> > el problema es que al tener dos registros similares y solo diferente en uno
> > de ellos afecta a los dos
> > por ejemplo
> > prodID IDCART LADO CANTIDAD
> > ACC125 2778545 DER 25
> > ACC125 2778545 IZQ 10
> >
> > y modifico el que dice izq con cantidad de 30 , me afecta al que tiene lado
> > "DER" y me pone ambos con cantidad de 25 lado "DER"
> >
> > el procedimiento esta como sigue:
> >
> > @IdCart nvarchar(50),
> > @ProdID nvarchar(20),
> > @Lado nvarchar(12),
> > @Cantidad int
> > )
> > AS
> >
> > UPDATE OrdenSecuencial
> >
> > SET
> > Lado = @Lado,
> > Cantidad = @Cantidad
> >
> >
> > WHERE
> > IdCart = @IdCart
> > AND
> > ProdID = @ProdID
> > and
> > Lado=@Lado or Lado='-'
> >
> >
Respuesta Responder a este mensaje
#4 warface75
04/03/2008 - 19:59 | Informe spam
Hola Alejandro, el campo LAdo tambien tiende a ser actualizado ya que este es
modificado por el usuario, de inicio el valor es ´X´ pero el usuario tiene
que modificarlo a izq o der. por eso es importante que sea cambiado


"Alejandro Mesa" wrote:

warface75,

La condición debe ser:

UPDATE
dbo.OrdenSecuencial
SET
Cantidad = @Cantidad
WHERE
IdCart = @IdCart
AND ProdID = @ProdID
AND Lado=@Lado

No tienes porque actualizar la columna [Lado] que esta se supone que sea
igual al valor de el parametro.

Si todavia sigue cambiando los valores, entonces chequea si la tabla tiene
un trigger asociado a la accion.


AMB


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida