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


2 participantes

    [Resolvido]Compactação automática de aplicação com tabelas linkadas

    avatar
    VCF
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11
    Registrado : 26/12/2011

    [Resolvido]Compactação automática de aplicação com tabelas linkadas Empty Compactação automática de aplicação com tabelas linkadas

    Mensagem  VCF 3/11/2012, 16:07

    Boa tarde

    Utilizo, no meu dia a dia, 2 aplicações em Access 2007. Uma é a aplicação base(designada NVACOMP) cujas tabela se encontram linkadas à segunda (designada TabNVACOMP).
    Todas as manutenções (diárias) das tabelas são feitas na aplicação base.
    Uma vez que o acesso especifico à aplicação TabNVACOMP é fortuito, a respetiva compactação automática não é efetuada com a necessária assiduidade para evitar o seu cescimento.
    Pergunto se não será possível inserir uma instrução na aplicação base (NVACOMP) de modo que, ao fechar esta, seja efetuada a compactação da outra aplicação (TabACOMP) onde existem as tabelas linkadas)?
    Obrigado
    avatar
    Convidado
    Convidado


    [Resolvido]Compactação automática de aplicação com tabelas linkadas Empty Re: [Resolvido]Compactação automática de aplicação com tabelas linkadas

    Mensagem  Convidado 3/11/2012, 20:09

    Boas VCF, o access 2007 faz isso sem ser necessário códigos.

    Tanto no BD da aplicação como no DB onde estao as tabelas

    Clique no botão do Office, vá nas opções do Access, Banco de Dados Atual marque:

    Compactar ao fechar, assim ao fechar o DB do sistema, o BD onde ficam as tabelas será fechado e compactado.


    Cumprimentos.
    avatar
    VCF
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11
    Registrado : 26/12/2011

    [Resolvido]Compactação automática de aplicação com tabelas linkadas Empty Re: [Resolvido]Compactação automática de aplicação com tabelas linkadas

    Mensagem  VCF 3/11/2012, 20:53

    Boas Piloto. Obrigado pela resposta.
    De facto essa opção já tenho selecionada em todas as aplicações em Access que uso. Mas o que verifico é que na situação que descrevi não funciona a compactação (acabei de testar novamente)na aplicação que tem as tabelas.
    Daí o meu pedido de ajuda.
    Mais uma vez obrigado.
    avatar
    Convidado
    Convidado


    [Resolvido]Compactação automática de aplicação com tabelas linkadas Empty Re: [Resolvido]Compactação automática de aplicação com tabelas linkadas

    Mensagem  Convidado 3/11/2012, 21:41

    Veja:

    http://maximoaccess.forumeiros.com/t11-102-codigos-vba-para-access


    Ai tem o código.


    Cumprimentos.
    avatar
    VCF
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11
    Registrado : 26/12/2011

    [Resolvido]Compactação automática de aplicação com tabelas linkadas Empty Re: [Resolvido]Compactação automática de aplicação com tabelas linkadas

    Mensagem  VCF 3/11/2012, 22:27

    Obrigado Piloto
    Associei o módulo a um botão de Saída.
    Não funciona e dá o seguinte erro:
    "Não é possível compactar a base de dados aberta executando uma macro ou código do Visual Basic".
    O código utilizado associado ao botão foi o seguinte:

    Private Sub Command231_Click()
    Call CompactDb
    DoCmd.CloseDatabase
    End Sub

    A função CompactDB foi a seguinte:

    Public Function CompactDb()
    On Error Resume Next
    CommandBars. _
    FindControl(ID:=2071). _
    accDoDefaultAction
    End Function
    avatar
    Convidado
    Convidado


    [Resolvido]Compactação automática de aplicação com tabelas linkadas Empty Re: [Resolvido]Compactação automática de aplicação com tabelas linkadas

    Mensagem  Convidado 3/11/2012, 22:42

    Você utilizou o código errado, veja la que tem o proprio para 2007.

    Cumprimentos.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Compactação automática de aplicação com tabelas linkadas Empty Re: [Resolvido]Compactação automática de aplicação com tabelas linkadas

    Mensagem  criquio 3/11/2012, 22:53

    Com a permissão dos amigos, acho que o que o colega está precisando é fazer o Compact/Repair em um banco à partir de outro. Ou seja, ao fechar o frontend, fazer o Compact no backend. Para isso, será necessário fornecer o caminho do aplicativo a ser compactado e um nome para a cópia que será gerada. Depois, verificar se a cópia foi realmente gerada para então deletar o original e renomear a cópia para o nome do original. Eu faço assim:

    Crio uma funçao como abaixo:
    Código:
    Function RepairDatabase(strSource As String, strDestination As String) As Boolean
        On Error GoTo error_handler
        RepairDatabase = Application.CompactRepair(LogFile:=True, SourceFile:=strSource, DestinationFile:=strDestination)
        On Error GoTo 0
        Exit Function
    error_handler:
        RepairDatabase = False
    No clique do botão que quer chamar essa rotina ou outro evento que melhor convier:
    Código:
    Call RepairDatabase(CurrentProject.Path & "\Boletim_be.mdb", CurrentProject.Path & "\Compactado.mdb")

    if Len(Dir(CurrentProject.Path & "\Compactado.mdb", vbArchive)) > 0 Then

        Kill (CurrentProject.Path & "\Boletim_be.mdb")

        Dim OldName, NewName
        OldName = CurrentProject.Path & "\Compactado.mdb"
        NewName = CurrentProject.Path & "\Boletim_be.mdb"
        Name OldName As NewName

    Else
        MsgBox "A base de dados não foi corretamente compactada.", vbInformation, "Atenção"
    End If

    No exemplo acima: Boletim_be.mdb é o nome do backend a ser compactado. Compactado.mdb é o nome que será usado na cópia do original compactado. Logo depois, será verificado se a cópia Compactado.mdb realmente foi criada. Se foi, deleta o original e renomeia a cópia para o nome do original.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    VCF
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11
    Registrado : 26/12/2011

    [Resolvido]Compactação automática de aplicação com tabelas linkadas Empty Re: [Resolvido]Compactação automática de aplicação com tabelas linkadas

    Mensagem  VCF 4/11/2012, 17:23

    Muito obrigado a todos pelas vossas preciosas indicações.
    Com base no código fornecido pelo Criquio resolvi o meu problema.
    Tive, apenas que efetuar uma pequena alteração para indicação correta do folder onde está localizada a aplicação das tabelas (que é diferente do da aplicação base).
    Tudo correu bem,
    avatar
    Convidado
    Convidado


    [Resolvido]Compactação automática de aplicação com tabelas linkadas Empty Re: [Resolvido]Compactação automática de aplicação com tabelas linkadas

    Mensagem  Convidado 4/11/2012, 21:02

    O Fórum agradece o retorno.

    Conteúdo patrocinado


    [Resolvido]Compactação automática de aplicação com tabelas linkadas Empty Re: [Resolvido]Compactação automática de aplicação com tabelas linkadas

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 2/5/2024, 10:43