Visual Basic Foro

Programación => Bases de Datos => Mensaje iniciado por: FreddyJ en Marzo 16, 2010, 08:25:46 pm

Título: Error en Criterio..
Publicado 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.

Código: [Seleccionar]
nc.Execute "UPDATE Mercancia SET Mer_Descripcion = '" & txDesc & _
                                                   "', Mer_existencia = '" & lbExistencia & _
                                                   "' WHERE Mer_Id = " & txCodProducto & ""

Título: Re:Error en Criterio..
Publicado por: seba123neo en Marzo 17, 2010, 11:48:29 am
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.
 
Título: Re:Error en Criterio..
Publicado por: NolO en Marzo 18, 2010, 12:41:54 pm
Hola, una consulta el campo Mer_Existencia es numerico?, si es asi entonces tu sentencia seria asi
Código: (vb) [Seleccionar]
SQL="UPDATE Mercancia SET Mer_Descripcion = '" & txDesc.Text & "', Mer_existencia = " & lbExistencia.Caption & " WHERE Mer_Id = " & txCodProducto.Text
nc.Execute SQL
Espero te ayude.

Saludos.
Título: Re:Error en Criterio..
Publicado por: FreddyJ en Marzo 18, 2010, 01:59:55 pm
Si man. Mer_Existencia es Tipo Número.. No actualiza aún.
Título: Re:Error en Criterio..
Publicado por: ssccaann43 en Marzo 18, 2010, 02:37:31 pm
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...

Código: (vb) [Seleccionar]
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:

Código: (VB) [Seleccionar]
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...
Código: (vb) [Seleccionar]
Private Sub lv_DblClick()
    Call MostrarDatos_Editar
    cmBuscar.Visible = False
    cmd(1).Enabled = False
    cmd(3).Enabled = True
End Sub

Cambialo por esto...!
Código: (vb) [Seleccionar]
Private Sub lv_Click()
    Call MostrarDatos_Editar
    cmBuscar.Visible = False
    cmd(1).Enabled = False
    cmd(3).Enabled = True
End Sub

Saludos
Título: Re:Error en Criterio..
Publicado por: FreddyJ en Marzo 19, 2010, 10:12:06 pm
Gracias a todos por sus respuestas.