Visual Basic Foro
Programación => Bases de Datos => Mensaje iniciado por: FreddyJ en Marzo 16, 2010, 08:25:46 pm
-
Deseo actualizar o editar la existencia de un producto. tengo el siguiente codigo pero me dice que tengo error en el criterio.
nc.Execute "UPDATE Mercancia SET Mer_Descripcion = '" & txDesc & _
"', Mer_existencia = '" & lbExistencia & _
"' WHERE Mer_Id = " & txCodProducto & ""
-
Hola, cuando el id es numerico no hace falta que cierres..esta demas el & "" a lo ultimo...igualmente siempre deberias guardar tus cadenas SQL en un string...asi si ocurre un error es mas facil saber donde esta, haciedo un simple Debug.Print vSQL te muestra la cadena con los valores que ha tomado...y asi la ejecutas en access o donde sea.
ejecuta esa consulta con sus valores en access o donde estes trabajando y ahi vas a saber el error facilmente...
saludos.
-
Hola, una consulta el campo Mer_Existencia es numerico?, si es asi entonces tu sentencia seria asi
SQL="UPDATE Mercancia SET Mer_Descripcion = '" & txDesc.Text & "', Mer_existencia = " & lbExistencia.Caption & " WHERE Mer_Id = " & txCodProducto.Text
nc.Execute SQL Espero te ayude.
Saludos.
-
Si man. Mer_Existencia es Tipo Número.. No actualiza aún.
-
Freddy me detuve a leer tú post y revise tú codigo... Fijate, detalles importantes...!
En la BD almacenas el campo Mer_ID contiene 9 caracteres... Pero cuando los muestras, al hacer el formato lo cambias a 10... Por favor edita esto en tú source...
Private Sub Cargar_Mercancia()
Dim iCol As Integer
Dim cItem As ListItem
Dim rs As New ADODB.Recordset
Call lv.ListItems.Clear
rs.Open "SELECT * FROM Mercancia", nc, adOpenDynamic, adLockOptimistic
While Not rs.EOF
'Set cItem = lv.ListItems.Add(, , Format(rs!Mer_Id, "000000000#")) CAMBIALO
Set cItem = lv.ListItems.Add(, , Format(rs!Mer_Id, "000000000")) 'ASI
cItem.SubItems(1) = rs!Mer_Descripcion
cItem.SubItems(2) = rs!Mer_Genero
cItem.SubItems(3) = rs!Mer_Talla
cItem.SubItems(4) = rs!Mer_Color
cItem.SubItems(5) = rs!Mer_Marca
cItem.SubItems(6) = rs!Mer_Costo
cItem.SubItems(7) = rs!Mer_Iva
cItem.SubItems(8) = rs!Mer_Porcentaje
cItem.SubItems(9) = rs!Mer_Precio
cItem.SubItems(10) = rs!Mer_Fecha
DoEvents
rs.MoveNext
Wend
rs.Close
Set rs = Nothing
'Auto organiza las columnas
For iCol = 1 To lv.ColumnHeaders.Count
Call SendMessage(lv.hWnd, LVM_SETCOLUMNWIDTH, iCol - 1, ByVal -2)
DoEvents
Next iCol
End Sub
Luego para Editar, puedes usar esto:
Private Sub Editar_Registro()
'nc.Execute "UPDATE Mercancia SET Mer_Genero = '" & cboGenero.Text & "', Mer_Descripcion = '" & cboDetalle.Text & "', Mer_Talla = '" & cboTallas.Text & "', Mer_Color = '" & cboColor.Text & "', Mer_Marca = '" & cboMarca.Text & "', Mer_Iva = '" & cboIva.Text & "', Mer_Costo = '" & txCosto.Text & "', Mer_Porcentaje = '" & txVenta.Text & "', Mer_Precio = '" & TxPrecio.Text & "',Mer_Fecha = #" & CDate(lbFecha.Caption) & "# Where Mer_Id = '" & txCodigo.Text & "'"
Dim RsUpdate As New ADODB.Recordset
rs.Open "SELECT * FROM Mercancia Where Mer_Id = '" & txCodigo.Text & "'", nc, adOpenDynamic, adLockOptimistic
If rs.State = 1 Then
If rs.EOF = False Then
rs!Mer_Genero = cboGenero.Text
rs!Mer_Descripcion = cboDetalle.Text
rs!Mer_Talla = cboTallas.Text
rs!Mer_Color = cboColor.Text
rs!Mer_Marca = cboMarca.Text
rs!Mer_Costo = txCosto.Text
rs!Mer_Iva = cboIva.Text
rs!Mer_Porcentaje = txVenta.Text
rs!Mer_Precio = txPrecio.Text
rs!Mer_Rif = txRif.Text
rs!Mer_Proveedor = txProveedor.Text
rs!Mer_Telefono = txTlf.Text
rs!Mer_Fecha = cDate(lbFecha.Caption)
rs.Update
rs.Close
End If
End If
Set rs = Nothing
MsgBox "El registro ha sido modificado correctamente", vbInformation
Cargar_Mercancia
End Sub
Por ultimo...!!!
Tienes que mostraras la informacion al hacer Doble Click, cambialo por solo un Click...
Private Sub lv_DblClick()
Call MostrarDatos_Editar
cmBuscar.Visible = False
cmd(1).Enabled = False
cmd(3).Enabled = True
End Sub
Cambialo por esto...!
Private Sub lv_Click()
Call MostrarDatos_Editar
cmBuscar.Visible = False
cmd(1).Enabled = False
cmd(3).Enabled = True
End Sub
Saludos
-
Gracias a todos por sus respuestas.