Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/03/2009, 12:28
Avatar de nadal83
nadal83
 
Fecha de Ingreso: abril-2005
Mensajes: 7
Antigüedad: 20 años
Puntos: 0
Problemas con el recordset

Hola a todos, tengo un pequeño problema con el recordset.

Tengo una tabla de clientes en la cual la clave primaria es el código de cliente (un entero). Al agregar un cliente hago un moveLast y cojo el código de cliente y le sumo 1, y luego lo guardo.

Siempre se ha guardado bien:

First___________Last
1 2 3 4 ..... 50 51 52

Hasta que a partir de ahora sin haber modificado el código me lo muestra así:

First______________________Last
70 71 72 1 2 3 4 ..... 66 67 68 69

Y cuando hago el moveLast para coger el último código de cliente, me lo mueve al 69 i coge ese código, de esta manera el nuevo cliente tiene el código 70 i me da error al tener la clave primaria repetida.

Aquí les dejo el código de nuevo cliente y el de guardar.
Código:
'''''NOU
Private Sub Nou()
On Error GoTo errors
Dim ultimCodi As Long
    HabilitarCaixes
    InhabilitarToolbar
    InhabilitarBotons
    Me.Toolbar1.Buttons(7).Enabled = True 'guardar
    Me.Toolbar1.Buttons(8).Enabled = True 'cancelar
    
    Me.adoClients.Recordset.MoveLast
    ultimCodi = Me.txtCodi
    Me.adoClients.Recordset.AddNew
    Me.txtCodi = ultimCodi + 1
    Me.txtNom.SetFocus

eixir:
    Exit Sub
errors:
    MsgBox Err & " - " & Err.Description
    Me.adoClients.Recordset.CancelUpdate
    Resume eixir
End Sub
Código:
'''''GUARDAR
Private Sub Guardar()
On Error GoTo errors

    If Me.txtNom <> "" Then
        Me.adoClients.Recordset.Update
    End If
    
activar_botons:
    InhabilitarCaixes
    HabilitarToolbar
    HabilitarBotons
    Toolbar1.Buttons(7).Enabled = False 'guardar
    Toolbar1.Buttons(8).Enabled = False 'cancelar
    
    If Me.txtNom = "" Then
        MsgBox "Has de plenar el Camp del Nom Obligatoriament", vbInformation, "Error"
        Cancelar
        Nou
    End If

    Me.adoClients.Recordset.Requery
eixir:
    Exit Sub
errors:
    If MsgBox(Err.Description, vbCritical + vbRetryCancel, "Error") = vbCancel Then
        Me.adoClients.Recordset.CancelUpdate
        Resume activar_botons
    Else
        Me.txtNom.SetFocus
        Resume eixir
    End If
End Sub
Espero haberme explicado bien. Y muchas gracias por haber leido el mensage.