Ayuda con el Listview de VB6

Disculpe tengo un problema... Tengo una base de datos en access y la cargo en un listview en VB6, tengo en mi bd una tabla llamada Equipos y un Id de tipo numérico llamado NoDeInventario...
Mi problema es al querer guardar desde mi programa en VB6... Cuando oprimo el botón guardar, todos los campos en mi listview (solo en el listview no en mi BD) se borran y solo aparece el nuevo Id que se ingresó...
El Id lo genero automáticamente cada vez que se ingresa un nuevo registro, pero no lo uso de tipo autonumérico debido a que si se borra uno continuaría con el consecutivo, por tal manera lo genero en el código...
Este es mi Código del formulario para guardar...
Option Explicit
Enum EACCION
    ENTRAR_EQUIPO = 0
    EDITAR_EQUIPO = 1
End Enum
Public IdRegistro
Public ACCION As EACCION
Private Sub cmdGuardar_Click()
On Error GoTo ErrorSub
    Dim sql As String
    ' Valida que la descripción no este vacio
    ''''''''''''''''''''''''''''''''
    If Trim(Text1(1)) = "" Then
        MsgBox "La Descripción del equipo no puede estar vacio", vbCritical, "Datos incompletos"
        Text1(1).SetFocus
        Exit Sub
    ' Valida la categoria
    ''''''''''''''''''''''''''''''''
    ElseIf Trim(Text1(2)) = "" Then
        MsgBox "La Categoría no puede estar vacia", vbCritical, "Datos incompletos"
        Text1(2).SetFocus
        Exit Sub
    ' Valida la marca
    ''''''''''''''''''''''''''''''''
    ElseIf Trim(Text1(3)) = "" Then
        MsgBox "La Marca no puede estar vacia", vbCritical, "Datos incompletos"
        Text1(3).SetFocus
        Exit Sub
    ' Valida el modelo
    ''''''''''''''''''''''''''''''''
    ElseIf Trim(Text1(4)) = "" Then
        MsgBox "El Modelo no puede estar vacio", vbCritical, "Datos incompletos"
        Text1(4).SetFocus
        Exit Sub
    ' Valida el numero de serie
    ''''''''''''''''''''''''''''''''
    ElseIf Trim(Text1(5)) = "" Then
        MsgBox "El Numero de Serie no puede estar vacio", vbCritical, "Datos incompletos"
        Text1(5).SetFocus
        Exit Sub
    Else
    End If
    'Agrega el registro
    '''''''''''''''''''''''''''''''
    Select Case ACCION
    Case EDITAR_EQUIPO
        cnn.Execute "UPDATE Equipos set Descripcion = '" & Text1(1) & _
                                         "', Categoria = '" & Text1(2) & _
                                         "', Marca = '" & Text1(3) & _
                                         "', Modelo = '" & Text1(4) & _
                                         "', NoDeSerie = '" & Text1(5) & _
                                         "', Observaciones = '" & Text1(6) & _
                                         "' where NoDeInventario = " & IdRegistro & ""
    Case ENTRAR_EQUIPO
    If rs.State = adStateOpen Then
      rs.Close
    End If
     sql = "Select MAX(NoDeInventario) As MaxNum from Equipos"
     rs.Open sql, cnn, adOpenDynamic, adLockOptimistic
     If IsNull(rs!MaxNum) Then
      IdRegistro = 1
     Else
     IdRegistro = rs!MaxNum + 1
     End If
     If IsNull(IdRegistro) Then
        IdRegistro = 1
        Else
        IdRegistro = IdRegistro + 1
      End If
        cnn.Execute "INSERT INTO Equipos " & "(NoDeInventario, Descripcion,Categoria,Marca,Modelo,NodeSerie,Observaciones,FechaDeAlta) VALUES( '" & IdRegistro & "' ,'" & _
                                 Text1(1) & "','" & _
                                 Text1(2) & "','" & _
                                 Text1(3) & "','" & _
                                 Text1(4) & "','" & _
                                 Text1(5) & "','" &...

1 Respuesta

Respuesta
1
No he revisado tu código end etalle, pero lo que debes revisar es donde llenas el listview, seguramente no estas refrescando bien el control
Muchas gracias... pero ia cambie el código, le puse un RecordCount y lo fui guardando en un acumulador... pero ahora mi problema es que al llegar a los 9 registros ingresado no me deja seguir guardando por duplicidad de llave... =S
Este es mi código incrementador...
If (rs.RecordCount = 0) Then
    IdRegistro = 1
    Else
    IdRegistro = 1
    rs.MoveLast
    IdRegistro = IdRegistro + rs.RecordCount
    End If
La duplicidad de llave es ´porque el código o llave ya existe en la tabal de la base de datos
Si, pero el campo llave lo voy generando con el código que le mostré... y supuestamente debería de irse incrementando a medida que ingreso registros... pero al llegar al registro 9 y querer ingresar el próximo registro (10) es que me marca la duplicidad de llave...
A lo mejor no esta creando 10 y por eso el error

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas