Visual Basic - error 3021 visual basic

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 3
Ha disminuido su posición en 50 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error 3021 visual basic

Publicado por Johan (2 intervenciones) el 19/05/2019 23:09:09
Me aparece el error 3021
"el valor del BOF o EOF es true, o el actual registro se elimino; la operacion solicitada requiere un registro actual"
nose porque¿?
es para la matricula de un alumno, saber si ya existe y no le registrarlo de nuevo y si me sale bien
pero cuando pongo una nueva que no existe me marca el error.

este es mi codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Private Sub TXTMATRICULA_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
With Alum
.Requery
.Find “matricula=’” & Trim(TXTMATRICULA.Text) & “’”
 
If !matricula = Trim(TXTMATRICULA.Text) Then
MsgBox "El alumno ya esta registrado " & TXTMATRICULA.Text, vbInformation, "Información"
TXTMATRICULA = ""
Else
MsgBox "Ingresara un nuevo alumno " & TXTMATRICULA.Text, vbInformation, "Información"
TXTMATRICULA = ""
TXTNOMBRE.Enabled = True
TXTAPP.Enabled = True
TXTAPM.Enabled = True
TXTCARRERA.Enabled = True
TXTSEMESTRE.Enabled = True
TXTGRUPO.Enabled = True
TXTTURNO.Enabled = True
TXTTELEFONO.Enabled = True
TXTEMAIL.Enabled = True
TXTESTADO.Enabled = True
TXTMUNICIPIO.Enabled = True
TXTCOLONIA.Enabled = True
TXTCALLE.Enabled = True
TXTNUMERO.Enabled = True
TXTCP.Enabled = True
End If
End With
End If
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de gilman
Val: 516
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error 3021 visual basic

Publicado por gilman (281 intervenciones) el 20/05/2019 09:02:01
El problema está en las sentencias:
1
2
.Find “matricula=’” & Trim(TXTMATRICULA.Text) & “’”
If !matricula = Trim(TXTMATRICULA.Text) Then
Si no existe ningún alumno con matrícula TXTMATRICULA.Text la sentencia:
1
.Find “matricula=’” & Trim(TXTMATRICULA.Text) & “’”
no devuelve ningún registro y, por lo tanto Alum.EOF y Alum.BOF son True, y en esas circunstancias no se puede consultar un campo del recorset, ya que te devuelve ese error, sustituye la sentencia:
1
If !matricula = Trim(TXTMATRICULA.Text) Then
por
1
If not .EOF Then
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 149
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error 3021 visual basic

Publicado por raul (64 intervenciones) el 23/05/2019 00:49:27
Si te fijas bien tienes 2 errores en vez de uno.
1- El metodo find genera un error cuando no encuentra el valor buscado al iguan que el metodo filter o sea que necesitas un manejador de error.
2- Cuando una tecla baja [Keypress o keydown] los textbox no tienen nada text1.text = "" porque el evento es que se pulsa no que se inserta el valor de la tecla pulsada en el texbox o sea que tu codigo se deveria escribirse en el KEYUP momento en que si existe algo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar