Base de datos



  • Buenos dias, les paso a comentar.
    Hice una base de datos con acces 2007, la acople a visual, y ahi todo bien.
    Le pongo los botones etc, pero cuando lo pruebo, me tira un error, debe ser facil de solucionar pero yo no lo se, el error es el siguiente:

    Al no tener registros cargados, hago clic en el botón eliminar que cree y me sale Error 3021 en tiempo de ejecución, no hay registros actualmente, y me marca esta linea

    Data1.Recordset.Delete
    Yo lo que quiero es que no me tire ese error, quiero que me salga un Msgbox que diga: No hay registros cargados.

    Este es el codigo entero:

    Private Sub Eliminar_Click()
    If MsgBox("Quieres eliminar la matrinula numero: " & Text1 & "?", 16 + 4) Then
    Data1.Recordset.Delete
    Data1.Refresh
    Text1.SetFocus
    MsgBox "Se elimino el cliente", vbCritical, "Aviso importante"
    Else
    MsgBox "No se elimino el cliente numero: " & Text1, vbExclamation, "Aviso importante"
    If Data1.Recordset.NoMatch Then
    MsgBox "No hay registros para eliminar", vbExclamation, "Aviso importante"
    End If
    End Sub

    Porfavor necesito ayuda, muchas gracias.



  • **No se bien como funciona eso , pero en el boton ponele que armas una estructura asi

    If NoHayNadaCargado Then
    Messagebox.show("No hay nada cargado")
    Else
    Lo demas
    End If

    Capaz estoy mandando fruta jaja**



  • **@rolukigo:

    Este es el codigo entero:

    Private Sub Eliminar_Click()
    If MsgBox("Quieres eliminar la matrinula numero: " & Text1 & "?", 16 + 4) Then
    Data1.Recordset.Delete
    Data1.Refresh
    Text1.SetFocus
    MsgBox "Se elimino el cliente", vbCritical, "Aviso importante"
    Else
    MsgBox "No se elimino el cliente numero: " & Text1, vbExclamation, "Aviso importante"
    If Data1.Recordset.NoMatch Then
    MsgBox "No hay registros para eliminar", vbExclamation, "Aviso importante"
    End If
    End Sub

    Mmm, ojo que abrís 2 If y cerrás 1 solo. Fijate si cerrando los dos If te sigue tirando el error.**



  • Pregunta primero por si no hay, despues intenta borrar, fijate como armo deerex la estructura


  • Banned

    Puede ser que te aparezca porque no te toma bien el codigo cuando seleccionas un registro. Dale true a un item del registro para que te lo seleccione automaticamente, y asi no te salta error por no seleccionar ninguno.



  • Primero vas a tener que hacer un metodo booleano preguntando si existe ese ID en la tabla.
    Fijate bien como es en access, pero en otro lenguaje SQL es algo asi "select * for tabla where id=Num1". Si esa consulta te trae algo, retornas true y seguis con el delete, sino, retornas un false y mostras el mensaje que no existe.



  • @rolukigo:

    Private Sub Eliminar_Click()
    If MsgBox("Quieres eliminar la matrinula numero: " & Text1 & "?", 16 + 4) Then
    Data1.Recordset.Delete
    Data1.Refresh
    Text1.SetFocus
    MsgBox "Se elimino el cliente", vbCritical, "Aviso importante"
    Else
    MsgBox "No se elimino el cliente numero: " & Text1, vbExclamation, "Aviso importante"
    If Data1.Recordset.NoMatch Then
    MsgBox "No hay registros para eliminar", vbExclamation, "Aviso importante"
    End If
    End Sub

    Es más o menos como te dijeron arriba, pero te explico el error.

    Te da ese error porque en realidad si vos pusiste un número de matrícula y no existe vos igual estás entrando a la primer cláusula del IF e intentando hacer un Recordset.Delete sin que haya registros por borrar.
    Yo te diría que para validar esto hagas que el botón "Eliminar Matrícula" tenga un IF en que preguntes si existen registros, por verdadero pones todo eso de la busqueda y por falso que salga el cartel "No hay registros para eliminar".


Log in to reply