Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Error 3021 en tiempo de ejecucion:

Estas en el tema de Error 3021 en tiempo de ejecucion: en el foro de Visual Basic clásico en Foros del Web. Hola amigos fijense que estoy haciendo una puequeña aplicacion de horarios para unos profesores, tengo creado un modulo de profesores donde son altas, bajas, cambios, ...
  #1 (permalink)  
Antiguo 05/01/2006, 11:35
 
Fecha de Ingreso: septiembre-2003
Mensajes: 182
Antigüedad: 20 años, 8 meses
Puntos: 1
Error 3021 en tiempo de ejecucion:

Hola amigos fijense que estoy haciendo una puequeña aplicacion de horarios para unos profesores, tengo creado un modulo de profesores donde son altas, bajas, cambios, eliminar, ya me he conecte a la base de datos y he puesto el codigo mi problema es que cuando le doy eliminar registro me manda el siguiente error "Error 3021 en tiempo de ejecucion:
El valor de BOF o EOF ES True, o el actual registro se elimino; la operacion solicitada requiere un registro actual." y no se que hacer para corregir el error.

Nota mi base de datos esta hecha en access 2000, les dejo el codigo esperando que me puedan ayudar gracias.


Dim cn1 As New ADODB.Connection
Dim rs1 As New ADODB.Recordset

Private Sub Anterior_Click()
rs1.MovePrevious
Posterior.Enabled = True
desabilitar
If rs1.BOF = True Then
rs1.MoveFirst
Primero.Enabled = False
Anterior.Enabled = False
Else
refrescar
End If

End Sub


Private Sub Cancelar_Click()
rs1.CancelUpdate
refrescar
desabilitar
End Sub

Private Sub Eliminar_Click()
n = MsgBox("Esta Seguro que desea eliminar el registro?", vbYesNo, "Confirme Eliminacion")
If n = vbYes Then
rs1.Delete
End If
rs1.MovePrevious
rs1.MoveNext
refrescar
End Sub

Private Sub Form_Load()
cn1.Provider = "Microsoft.Jet.OLEDB.4.0"
cn1.ConnectionString = "C:\Horarios2\Horarios.mdb"
cn1.Open
rs1.Open "select * from profesores", cn1, adOpenKeyset, adLockOptimistic
rs1.MoveFirst
refrescar
desabilitar
End Sub

Private Sub Guardar_Click()
rs1.Fields("IdProfesor") = Text1.Text
rs1.Fields("Nombre") = Text2.Text
rs1.Fields("Apellidos") = Text3.Text
rs1.Fields("Direccion") = Text4.Text
rs1.Fields("Telefono") = Text5.Text
rs1.Fields("Cp") = Text6.Text
rs1.Fields("Rfc") = Text7.Text
rs1.Fields("Curp") = Text8.Text
rs1.Fields("GradoAcademico") = Text9.Text
rs1.Fields("Especialidad") = Text10.Text
rs1.Fields("HorarioLabores") = Text11.Text
rs1.Fields("Historial1") = Text12.Text
rs1.Fields("Historial2") = Text13.Text
rs1.Fields("Itfp") = Text14.Text
rs1.Fields("Ssp") = Text15.Text

rs1.Update
desabilitar
End Sub

Private Sub listadelegaciones_Click(Area As Integer)
Dim rs1 As New ADODB.Recordset
rs1.Open "select * from delegaciones order by DescDel", cn1, adOpenKeyset, adLockOptimistic
Set listadelegaciones.DataSource = rs1
Set listadelegaciones.RowSource = rs1
listadelegaciones.ListField = ("DescDel")
End Sub

Private Sub listaestados_Click(Area As Integer)
Dim rs1 As New ADODB.Recordset
rs1.Open "select * from estados order by DescEst", cn1, adOpenKeyset, adLockOptimistic
Set listaestados.DataSource = rs1
Set listaestados.RowSource = rs1
listaestados.ListField = ("DescEst")
End Sub

Private Sub listapagos_Click(Area As Integer)
Dim rs1 As New ADODB.Recordset
rs1.Open "select * from pagos", cn1, adOpenKeyset, adLockOptimistic
Set listapagos.DataSource = rs1
Set listapagos.RowSource = rs1
listapagos.ListField = ("DescPag")
End Sub
Public Sub refrescar()
Text1.Text = rs1!IdProfesor
Text2.Text = rs1!Nombre
Text3.Text = rs1!Apellidos
Text4.Text = rs1!Direccion
Text5.Text = rs1!Telefono
Text6.Text = rs1!Cp
Text7.Text = rs1!Rfc
Text8.Text = rs1!Curp
Text9.Text = rs1!GradoAcademico
Text10.Text = rs1!Especialidad
Text11.Text = rs1!HorarioLabores
Text12.Text = rs1!Historial1
Text13.Text = rs1!Historial2
Text14.Text = rs1!Itfp
Text15.Text = rs1!Ssp
End Sub

Private Sub limpiar()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Text9.Text = ""
Text10.Text = ""
Text11.Text = ""
Text12.Text = ""
Text13.Text = ""
Text14.Text = ""
Text15.Text = ""
listadelegaciones.Text = ""
listapagos.Text = ""
listaestados.Text = ""
End Sub

Public Sub desabilitar()
If Primero.Value = True Then
Posterior.Enabled = True
Ultimo.Enabled = True
Anterior.Enabled = False
Nuevo.Enabled = True
Guardar.Enabled = False
Cancelar.Enabled = False
Primero.Enabled = False
Modificar.Enabled = True
Else
If Nuevo.Value = True Then
Posterior.Enabled = False
Ultimo.Enabled = False
Anterior.Enabled = False
Nuevo.Enabled = False
Guardar.Enabled = True
Cancelar.Enabled = True
Primero.Enabled = False
Salir.Enabled = False
Eliminar.Enabled = False
Modificar.Enabled = False
Else
If Guardar.Value = True Or Cancelar.Value = True Then
Posterior.Enabled = True
Ultimo.Enabled = True
Anterior.Enabled = True
Nuevo.Enabled = True
Guardar.Enabled = False
Cancelar.Enabled = False
Primero.Enabled = True
Salir.Enabled = True
Eliminar.Enabled = True
Modificar.Enabled = True
Else
If Ultimo.Value = True Then
Posterior.Enabled = False
Ultimo.Enabled = False
Anterior.Enabled = True
Nuevo.Enabled = True
Guardar.Enabled = False
Cancelar.Enabled = False
Primero.Enabled = True
Else
If Modificar.Value = True Then
Posterior.Enabled = False
Ultimo.Enabled = False
Anterior.Enabled = False
Nuevo.Enabled = False
Guardar.Enabled = True
Cancelar.Enabled = True
Primero.Enabled = False
Eliminar.Enabled = False
Else
Posterior.Enabled = True
Ultimo.Enabled = True
Anterior.Enabled = True
Nuevo.Enabled = True
Guardar.Enabled = False
Cancelar.Enabled = False
Primero.Enabled = True
Eliminar.Enabled = True
End If
End If
End If
End If
End If
End Sub

Public Function validar() As Boolean
If rs.BOF = True Or rs.EOF = True Then
validar = False
Else
validar = True
End If
End Function

Private Sub Modificar_Click()
desabilitar
End Sub

Private Sub Nuevo_Click()
rs1.AddNew
limpiar
desabilitar
End Sub

Private Sub Posterior_Click()
rs1.MoveNext
desabilitar
If rs1.EOF = True Then
rs1.MoveLast
Ultimo.Enabled = False
Posterior.Enabled = False
Else
refrescar
End If
End Sub

Private Sub Primero_Click()
rs1.MoveFirst
refrescar
desabilitar
End Sub

Private Sub Salir_Click()
End
End Sub

Private Sub Ultimo_Click()
rs1.MoveLast
refrescar
desabilitar
End Sub
  #2 (permalink)  
Antiguo 05/01/2006, 19:15
Avatar de jc_moty  
Fecha de Ingreso: septiembre-2005
Ubicación: Usulután, El Salvador
Mensajes: 477
Antigüedad: 18 años, 7 meses
Puntos: 1
El error te lo da porque el recordset no tiene registros, porque no probas con un SQL...
Código:
Private Sub Eliminar_Click()
n = MsgBox("Esta Seguro que desea eliminar el registro?", vbYesNo, "Confirme Eliminacion")
If n = vbYes Then
	con1.Execute "DELETE FROM profesores WHERE Idprofesor = " & Text1 ' En lugar de rs1.Delete
End If
rs1.MovePrevious
rs1.MoveNext
refrescar
End Sub
Espero te sirva
Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:14.