Ayuda por favor problemas con Data Control
Tengo un problema al tratar de buscar un codigo dentro de una base de datos acces, al ingresar el codigo en la caja de texto debe buscarlo inmediatamente dentro de la base de datos,pues no debe repetirse la misma clave de acceso la caja de texto la tengo enlazada con un datacontrol, con el campo clave de acceso, me sale un error "esta accion fue cancelada por el objeto asociado", y quiero que si lo encuentra me muestre los contenidos de los campos, el siguiente es el codigo
Private Sub cmd_grabar_Click()
Data1.Recordset.Edit
Data1.Recordset.Update
End Sub
Private Sub Cmd_ingreso_Click()
Data1.Recordset.MoveLast
Data1.Recordset.AddNew
txt_nombre.Text = ""
txt_curso.Text = ""
Txt_nota.Text = ""
txt_nombre.SetFocus
End Sub
Private Sub txt_curso_LostFocus()
Data1.Recordset.MoveLast
Data1.Recordset.FindFirst ("curso='" & txt_curso1.Text & "'")
If Data1.Recordset.NoMatch Then
MsgBox ("Alumno nuevo")
Txt_nota.SetFocus
Else
MsgBox ("Ya esta ingresado")
Data1.recordset.edit
End If
End Sub
Private Sub cmd_grabar_Click()
Data1.Recordset.Edit
Data1.Recordset.Update
End Sub
Private Sub Cmd_ingreso_Click()
Data1.Recordset.MoveLast
Data1.Recordset.AddNew
txt_nombre.Text = ""
txt_curso.Text = ""
Txt_nota.Text = ""
txt_nombre.SetFocus
End Sub
Private Sub txt_curso_LostFocus()
Data1.Recordset.MoveLast
Data1.Recordset.FindFirst ("curso='" & txt_curso1.Text & "'")
If Data1.Recordset.NoMatch Then
MsgBox ("Alumno nuevo")
Txt_nota.SetFocus
Else
MsgBox ("Ya esta ingresado")
Data1.recordset.edit
End If
End Sub
El problema está en que primero haces el Addnew y luego, al perder el foco la otra caja de texto, mandas buscar. Ten en cuenta que después del addnew, sin haber actualizado, ese registro todavía no existe y no te deja hacer nada desde él. Haz el Addnew justo cuando grabes los datos. Otra cosa , haces un movelast y luego un findfirst, así nunca va a encontrar nada, haz un movefirst. El código quedaría:
NOTA: El AddNew añade por defecto al final.
Private Sub cmd_grabar_Click()
Data1.Recordset.Update
End Sub
Private Sub Cmd_ingreso_Click()
Data1.Recordset.MoveLast
txt_nombre.Text = ""
txt_curso.Text = ""
Txt_nota.Text = ""
txt_nombre.SetFocus
End Sub
Private Sub txt_curso_LostFocus()
Data1.Recordset.MoveFirst
Data1.Recordset.FindFirst ("curso='" & txt_curso1.Text & "'")
If Data1.Recordset.NoMatch Then
MsgBox ("Alumno nuevo")
Txt_nota.SetFocus
Data1.recordset.AddNew
Else
MsgBox ("Ya esta ingresado")
Data1.recordset.edit
End If
End Sub
Suerte
NOTA: El AddNew añade por defecto al final.
Private Sub cmd_grabar_Click()
Data1.Recordset.Update
End Sub
Private Sub Cmd_ingreso_Click()
Data1.Recordset.MoveLast
txt_nombre.Text = ""
txt_curso.Text = ""
Txt_nota.Text = ""
txt_nombre.SetFocus
End Sub
Private Sub txt_curso_LostFocus()
Data1.Recordset.MoveFirst
Data1.Recordset.FindFirst ("curso='" & txt_curso1.Text & "'")
If Data1.Recordset.NoMatch Then
MsgBox ("Alumno nuevo")
Txt_nota.SetFocus
Data1.recordset.AddNew
Else
MsgBox ("Ya esta ingresado")
Data1.recordset.edit
End If
End Sub
Suerte
