MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    O seu banco de dados Access pode corromper-se?

    Administrador
    Administrador
    Administrador
    Administrador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 425
    Registrado : 02/11/2009

    O seu banco de dados Access pode corromper-se? Empty O seu banco de dados Access pode corromper-se?

    Mensagem  Administrador 13/5/2011, 12:07

    Sim pode e talvez esta dica não resolva o problema, mas uma das causas mais comuns para repetidas corrupções de bases de dados Access é o não fechamento e destruição dos explícitos de objetos Recordset e Database (quando se usa DAO).

    Quando criar objetos ou códigos VBA isolados, devem sempre, ir a Debug e fazer o Compile, corrigir todos os erros apresentados.

    Também sempre que criar uma aplicação usando Access, deve criar rotinas de fechar recordsets e databases, para usar dentro dos tratamentos de erros.

    Estas rotinas são criadas desta forma:

    Public Sub FechaRecordset (rs as Recordset)
    On Error Resume Next
    rs.Close
    Set rs = Nothing
    End Sub


    Public Sub FechaDatabase (db as Database)
    On Error Resume Next
    db.Close
    Set db = Nothing
    End Sub



    Onde quer que você declare uma variável como Recordset, seja a nível de módulo ou de procedimento, certifique-se de chamar a rotina de fechamento explícito dos recordsets ao sair de onde está no momento.

    Como você não tem como saber se um erro terá ocorrido antes ou depois de instanciar objetos Recordset nas variáveis declaradas, e como em tratamentos de erros não há como usar a cláusula On Error, é necessário ter uma rotina que pode tratar internamente o erro que ocorreria ao se chamar o método Close para um objecto que nem tenha sido instanciado ainda.
    Seja dentro dos tratamentos de erros ou em qualquer parte, chame sempre FechaRecordset para todas as variáveis do tipo Recordset que estiverem saindo do escopo. Se estiver usando DAO, faça o mesmo com os objetos Database quando não mais for usá-los ou ao encerrar sua aplicação. Se estiver usando ADO, faça o mesmo com as conexões quando não precisar usá-las ou ao encerrar sua aplicação.

    Existem inúmeros relatos de problemas recorrentes de corrupção de bancos de dados Access que foram resolvidos com esta medida simples e que deve tornar-se um hábito de programação.


      Data/hora atual: 14/5/2024, 12:54