Error "3021" no hay ningun registro activo

zek
03 de Agosto del 2004
Que tal como estan mi problema es que al querer agregar un registro nuevo me marca ese error el 3021 que creo que a muchos les a salido tambien me sale al darle con un command button que es el move last me salel el mismo error estoy usando un data control porfavor necesito que me ayuden ya que apenas estoy empesando con esto de la progrmacion porfavor este es el codigo que tengo y me marca el

""datnum.Recordset.MoveLast""

error en Public Edito As Boolean


Private Sub Command1_Click()
If Not datnum.Recordset.BOF() Then
datnum.Recordset.MovePrevious
End If
End Sub

Private Sub Command2_Click()
If Not datnum.Recordset.EOF() Then
datnum.Recordset.MoveNext
End If
End Sub

Private Sub Command3_Click()
datnum.Recordset.MoveFirst
End Sub

Private Sub Command4_Click()
datnum.Recordset.MoveLast
End Sub

Private Sub mnuBorrar_Click()
resp = MsgBox("Esta Seguro de que Desea Eliminarlo", vbYesNo)
If resp = vbYes Then
datnum.Recordset.Delete
Else
Numero.Text = ""
Nombre.Text = ""
Apellido.Text = ""
Fecha.Text = ""
Estado.Text = ""
Curp.Text = ""
Numhijos.Text = ""
Direccion.Text = ""
Municipio.Text = ""
Telefono.Text = ""
Codigo.Text = ""
Email.Text = ""
End If
If resp = vbNo Then
Resume Next
End If
End Sub

Private Sub mnuEditar_Click()
Edito = True
checaesto False, True
End Sub

Private Sub mnuGuardar_Click()
If Edito = False Then
datnum.Recordset("NumerodeEmpleado") = Int(Numero.Text)
Else
resp = MsgBox("Esta Seguro de que Desea Actualizarlo", vbYesNo)
If resp = "vbNo" Then
GoTo saliR
Else
datnum.Recordset.Edit
End If
End If

datnum.Recordset("Nombre") = Nombre.Text
datnum.Recordset("Apellido") = Apellido.Text
datnum.Recordset("Fecha") = Fecha.Text
datnum.Recordset("EstadoCivil") = Estado.Text
datnum.Recordset("Curp") = Curp.Text
Numhijos.Text = "0"
datnum.Recordset("NumerodeHijos") = CInt(Numhijos.Text)

datnum.Recordset("Direccion") = Direccion.Text
datnum.Recordset("Munisipio") = Municipio.Text
datnum.Recordset("Telefono") = Telefono.Text
datnum.Recordset("CodigoPostal") = Codigo.Text
datnum.Recordset("Email") = Email.Text
datnum.Recordset.Update
MsgBox "Se Actualizó Base de Datos", vbInformation, "Actualizacion de Datos"
checaesto False, False

saliR:
End Sub

Private Sub mnuNuevo_Click()
Edito = False
datnum.Recordset.MoveLast
datnum.Recordset.AddNew
checaesto True, True
End Sub

Public Sub checaesto(arg1 As Boolean, arg2 As Boolean)
' Arg1 limpia controles de Captura
' Arg2 habilita controles de Captura
If arg1 Then
Numero.Text = ""
Nombre.Text = ""
Apellido.Text = ""
Fecha.Text = ""
Estado.Text = ""
Curp.Text = ""
Numhijos.Text = ""
Direccion.Text = ""
Municipio.Text = ""
Telefono.Text = ""
Codigo.Text = ""
Email.Text = ""
End If
If arg2 Then
If Edito = False Then
Numero.Enabled = True
End If
Nombre.Enabled = True
Apellido.Enabled = True
Fecha.Enabled = True
Estado.Enabled = True
Curp.Enabled = True
Numhijos.Enabled = True
Direccion.Enabled = True
Municipio.Enabled = True
Telefono.Enabled = True
Codigo.Enabled = True
Email.Enabled = True
Else
Numero.Enabled = False
Nombre.Enabled = False
Apellido.Enabled = False
Fecha.Enabled = False
Estado.Enabled = False
Curp.Enabled = False
Numhijos.Enabled = False
Direccion.Enabled = False
Municipio.Enabled = False
Telefono.Enabled = False
Codigo.Enabled = False
Email.Enabled = False
End If
End Sub

Private Sub mnuSalida_Click()
Unload Me
End Sub


Espero que me puedan ayudar

tecniCam
03 de Agosto del 2004
Nombre de la constante:
adErrNoCurrentRecord

Número error:
3021
0x800A0BCD

Descripción:
Either BOF or EOF is True, or the current record has been deleted; the operation requested by the application requires a current record.

¡Ala, traduce!

Dice más o menos:
O BOF o EOF son verdadero (o sea, que estás al principio o al final del Recordset) o el registro actual se ha borrado; la operación solicitada necesita el registro actual.

Si borras un registro, inmediatamente después, debes moverte a otro, anterior, próximo, primero o último.
Tras borrar el registro pon en la siguiente línea xxx.MoveLast, por ejemplo. Así habrá un registro, salvo que fuera el único el que se ha borrado, que también podría ocurrir. Para evitar que sea el único registro de la tabla yo siempre comienzo las tablas con un primer registro que no "cuadre" con ninguna búsqueda a fin de que no se pueda borrar y siempre exista, de esta forma nunca estará la tabla totalmente vacía. También hay otras formas de hacerlo. El caso es que no te quedes sin registros.