NECESITO resolver mi problema

Cerrado
NIñAA - 21 jun 2009 a las 02:50
 Elinv - 22 jun 2009 a las 14:22
Hola, necesito alguien que me ayude con esta programacion , si no lo termino para mañana me van a reprobar... no se por k no funciona !! alguen puede decir que sucede.

me sale un mensaje que dice
EL VALOR DEL BOF O EOF ES TRUE, O EL ACTUAL REGISTRO SE ELIMINO LA OPERACION SOLICITADA REQUIERE UN REGISTRO ACTUAL.

SEGUN ESTO ES PARA GUADAR LOS DATOS DE TEXTBOX EN ACCESS Y ME SALIO BN UNA VEZ PERO A LA SEGUNDA VEZ QUELOCORRI YA NO SALIO Y NO LE MOVI NADA.

AYUDENME POR FAVOR LES DEJO LA PROGRAMACION
Option Explicit

Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset

'Connection Confirmation
Private Sub Form_Load()


' establece la cadena de conexión a utilizar en la propiedad ConnectionString
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Admin\Escritorio\calis.mdb;Persist Security Info=False"

' abre la base de datos
cnn.Open

' Abre el recordset enviando la consulta sql
rs.Open "Select * from demos", cnn, adOpenDynamic, adLockOptimistic

' muestra los datos en los text
Call Visualizar_Datos
End Sub

' botón que mueve al primer previo
'''''''''''''''''''''''''''''''''''''''''''''''
Private Sub cmdMoveFirst_Click()

rs.MoveFirst

' Visualiza los datos en los textbox
Call Visualizar_Datos
End Sub

' botón que se desplaza al último registro
'''''''''''''''''''''''''''''''''''''''''''''''
Private Sub cmdMoveLast_Click()

' Ejecuta MoveLast y se posiciona en el último registro
rs.MoveLast

' Visualiza los datos en los textbox
Call Visualizar_Datos
End Sub

' Botón para el siguiente
'''''''''''''''''''''''''''''''''''''''''''''
Private Sub cmdMoveNext_Click()

rs.MoveNext

' Si no sobrepasó el final del recordset ...
If rs.EOF Then
' se posiciona en el ultimo
rs.MoveLast
MsgBox " Se está en el ultimo registro ", vbInformation
Else
' Visualiza los datos en los text box
Call Visualizar_Datos
End If
End Sub


' Command para ir al registro previo
''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub cmdMovePrevious_Click()
rs.MovePrevious

' si el recordset sobrepasó el comienzo se posiciona en el primero
If rs.BOF Then
rs.MoveFirst
MsgBox " este es el Primer registro ", vbInformation, " Primer registro"
Else
' Carga los datos
Call Visualizar_Datos
End If
End Sub


' Botón que añade un nuevo registro
'''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub command1_Click()

Call clear
' Ejecuta el método AddNew para crear un registro
rs.AddNew
' Le pasa el foco al control
Text1.SetFocus

End Sub

' Botón que elimina el registro
''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub command2_click()

If MsgBox(" Eliminar el registro ?? ", vbOKCancel + vbExclamation, " Eliminar ") = vbOK Then

' elimina el registro en el que está posicionado el recordset
rs.Delete

' Mueve al siguiente
rs.MoveNext

' si elrecordset llegó al final se posiciona en el último
If rs.EOF Then
rs.MoveLast
MsgBox " Ultimo registro ", vbInformation
End If

' muestra los datos en los textbox
Call Visualizar_Datos
End If



End Sub

' Botón que graba los datos
'''''''''''''''''''''''''''''''''''''''
Private Sub command3_Click()
If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Or Text4.Text = "" Then
MsgBox "Debe completar los datos", vbExclamation
Exit Sub
End If
Call Asignar_Datos
rs.Update
MsgBox " Registro guardado", vbInformation, "Grabar"

End Sub


' Sub que carga los datos del recordset y los asigna a los textbox
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Visualizar_Datos()
Text1.Text = CLng(rs("nombre"))
Text2.Text = rs("escuela")
Text3.Text = rs("colonia")
Text4.Text = rs("sexo")
End Sub

' Limpia las cajas de texto
Private Sub clear()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
End Sub

' Sub que asigna los datos al recordset
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Asignar_Datos()
rs("nombre") = Text1.Text
rs("escuela") = Text2.Text
rs("colonia") = Text3.Text
rs("sexo") = Text4.Text
End Sub

3 respuestas

Mira creo entender de acuerdo a tu código que está todo bien.
Te faltaría un controlador de errores, para cuando la base de datos no tiene registro alguno, es decir, está vacía, o cuando la consulta sql no te arroja ningún resultado.

Opcionalmente se utiliza "on error resume next"

Pero si queres algo mas dirigido usa el controlador de errores "err"

He autorizado a recibir tus respuestas por mail, así que todo lo que quieras, estoy a tu disposición.

Un abrazo.

Luis
1