¿Qué estoy haciendo mal...?

Estoy desarrollando un programa en Visual Basic .NET 2008 en el cual tengo una sentencia SQL (Update), la idea es actualizar el campo restándole la cantidad ingresada en un text box.
La sentencia Transac-SQL seria la siguiente:
UPDATE Productos SET Cantidad=Cantidad-30 WHERE Codigo='12345'
Pues bien, al tratar de hacerla en VB 2008 el codigo es el siguiente:
Public cnn As New SqlConnection("Data Source=(local);Initial Catalog=Bodega;Integrated Security=SSPI;")
Dim da1 As New SqlDataAdapter("UPDATE Producto SET Cantidad = Cantidad - '&txtCant&' WHERE Codigo = '&txtCod&'", cnn)
MsgBox("Registro Guardado Exitosamente", MsgBoxStyle.Information) 
No se si estaré haciendo algo mal o solo sera un problema en la sintaxis.
Agradecería tu ayuda al respecto...
Nota: Todas las variables están declaradas correctamente y existe conexión positiva con la base de datos.

2 respuestas

Respuesta
1
Pues lo que distingo en este momento es que la cantidad que quieres restar, esta entre comillas simples; en realidad todo es una sola cadena.
Deberia quedarte asi:
Dim da1 As New SqlDataAdapter("UPDATE Producto SET Cantidad = Cantidad -" & txtCant.text & " WHERE Codigo = '" & txtCod.text & "'", cnn)
Estimado Experto, probé la solución presentada pero no ocurre nada...
Al revisar la base de datos con un select no hay cambio alguno.
Saludos
Perdón por la respuesta anterior, respondí a la rápida.
El DataAdapter se utiliza para llenar dataSets o dataTables, y para realizar la actualización, lo harías por medio del método Update del DataAdapter.
En este caso lo que deberías utilizar es un SqlCommand:
Dim sc1 As New SqlCommand("UPDATE Producto SET Cantidad = Cantidad -" & txtCant.text & " WHERE Codigo = '" & txtCod.text & "'", cnn)
Sc1.executeNonQuery()
Respuesta
1
Prueba así..
Dim da1 As New SqlDataAdapter("UPDATE Producto SET Cantidad = Cantidad - "&txtCant&" WHERE Codigo = "'&txtCod&'", cnn)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas