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

    Como guardar base de dados vazia (sem guardar os dados das tabelas).

    miglea85
    miglea85
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 19
    Registrado : 03/08/2011

    Como guardar base de dados vazia (sem guardar os dados das tabelas). Empty Como guardar base de dados vazia (sem guardar os dados das tabelas).

    Mensagem  miglea85 14/2/2013, 17:42

    Boa tarde pessoal,

    Eu gostava de saber se é possível guardar uma copia de uma base de dados vazia (i.e. sem guardar os registos das tabelas, apenas a estrutura).

    Já fiz umas buscas aqui no forum um pouco superficiais e não encontrei completamente nada sobre este assunto.

    NOTA: Peço desculpa se não postei no sitio certo, mas este pareceu-me o mais indicado.

    Cumprimentos,
    Miguel Leão
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Como guardar base de dados vazia (sem guardar os dados das tabelas). Empty Re: Como guardar base de dados vazia (sem guardar os dados das tabelas).

    Mensagem  criquio 14/2/2013, 17:49

    Como o tópico é referente a tabelas, acho que a sala de tabelas é mais adequada. Bem, você precisa fazer isso via VBA ou quer copiar as tabelas de um bd? Se for apenas criar uma cópia, o Access dá a possibilidade de se copiar apenas a estrutura. O mesmo pode ser feito via macro, a qual você pode converter para vba para ver o código. Pode tambem criar uma tabela via VBA tendo por base os campos de outra, ou copiar a tabela com os dados e excluir os dados com a instrução SQL DELETE em um Db.Execute por exemplo.


    .................................................................................
    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.

    miglea85
    miglea85
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 19
    Registrado : 03/08/2011

    Como guardar base de dados vazia (sem guardar os dados das tabelas). Empty Re: Como guardar base de dados vazia (sem guardar os dados das tabelas).

    Mensagem  miglea85 14/2/2013, 20:22

    Viva,

    Não fui muito claro na minha duvida e peço desculpa desde já por isso.

    Tentando clarificar:
    Eu tenho uma base de dados (em access 2007) de gestão documental aplicada a um projecto e queria migrar toda a estrutura (tbl, cst, frm, macros, vba, etc...) desta BD para um projecto novo (a começar completamente do zero) sem registos completamente nenhuns.

    Basicamente eu quando preciso de uma BD limpa copio a BD de um projecto antigo para o novo directorio (do novo projecto) e depois apago todos os registos (tabela a tabela, registo a registo) e por fim faço o Compactar a esta "nova" BD para reiniciar as numerações automaticas.
    Ou então crio uma BD nova e migro tudo de uma antiga mantendo-a integralmente igual com excepção dos registos que na nova ainda não existem.

    Considero que isto devia ser uma opção base do access tipo um "Save As" com opção "Empty"/Vazia.

    Espero desta vez ter conseguido ser claro o suficiente.

    Uma das razões para eu pretender fazer isto é a partilha da BD pelos restantes colaboradores do meu grupo de trabalho e posta-la aqui tambem pois voçes foram fundamentais para que eu conseguisse evoluir a BD até ao ponto a que hoje se encontra.

    Obrigado pela resposta Criquio,

    Cumprimentos,
    Miguel Leão
    avatar
    Convidado
    Convidado


    Como guardar base de dados vazia (sem guardar os dados das tabelas). Empty Re: Como guardar base de dados vazia (sem guardar os dados das tabelas).

    Mensagem  Convidado 15/2/2013, 01:06

    Boa noite colega Miguel, tudo bem??

    Faça assim: Em um banco novo no menu Dados Externos, Botão Access (Obter dados externos) e clicando no procurar e selecionando as tbls, css, forms,rels, mcs e codigos click em opções e marque "somente definição".
    miglea85
    miglea85
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 19
    Registrado : 03/08/2011

    Como guardar base de dados vazia (sem guardar os dados das tabelas). Empty Re: Como guardar base de dados vazia (sem guardar os dados das tabelas).

    Mensagem  miglea85 15/2/2013, 10:54

    Viva cafpr,

    Obrigado pela dica mas esse processo de migração, apesar de funcional, não posso aplicar a minha BD.
    O motivo é que quem vai mexer nesta BD não sabe nada disto e só a palavra ACCESS assusta-os, lolol.

    Para alem disto, não consegui migrar os módulos e tive uns erros em alguns formulários e relatórios (que facilmente resolveria):
    Como guardar base de dados vazia (sem guardar os dados das tabelas). Bderrorso

    Precisava que nesta opção (Save the database in another format) tivesse opção de não guardar os dados contidos nas tabelas. (até parece simples, lolol)
    Como guardar base de dados vazia (sem guardar os dados das tabelas). Saveasr

    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Como guardar base de dados vazia (sem guardar os dados das tabelas). Empty Re: Como guardar base de dados vazia (sem guardar os dados das tabelas).

    Mensagem  criquio 15/2/2013, 13:47

    Fale mais sobre o que precisa.

    Você quer importar todos os elementos, tais como tabelas, consultas, formulários, etc? Ou só as tabelas?

    Quer importar para o próprio banco ou para um outro banco?

    Quer importar para um banco ou criar uma cópia do banco e zerar as tabelas?


    .................................................................................
    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.

    miglea85
    miglea85
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 19
    Registrado : 03/08/2011

    Como guardar base de dados vazia (sem guardar os dados das tabelas). Empty Re: Como guardar base de dados vazia (sem guardar os dados das tabelas).

    Mensagem  miglea85 15/2/2013, 14:08

    Viva criquio,

    Quero criar uma copia da BD e zerar as tabelas desta copia.


    Eu falei em importar porque é dessa maneira que tenho feito este "comando"/processo.

    Desculpem toda esta confusão.
    Miguel Leão
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Como guardar base de dados vazia (sem guardar os dados das tabelas). Empty Re: Como guardar base de dados vazia (sem guardar os dados das tabelas).

    Mensagem  criquio 15/2/2013, 16:55

    Você pode utilizar o FileCopy para copiar, o DELETE para zerar as tabelas e o CompacteDatabase para compactá-la. No esquema abaixo estou supondo três arquivos, sendo um que será o responsável por chamar a função que vai copiar a base de dados para outro nome. Coloquei mensagens informando cada passa para ficar mais fácil de entender. Nesse esquema, estamos fazendo uma cópia do arquivo Base.mdb com o nome de Dados.mdb:

    Código:
    Dim arqOrigem As String, arqDestino As String, db As Database, tb As TableDef

    arqOrigem = CurrentProject.Path & "\Base.mdb"
    arqDestino = CurrentProject.Path & "\Dados.mdb"

    FileCopy arqOrigem, arqDestino

    MsgBox "Cópia criada"

    Set db = DBEngine.Workspaces(0).OpenDatabase(arqDestino, False, False, "MS Access;PWD=Senha")

    For Each tb In db.TableDefs
        If Left(tb.Name, 4) <> "MSys" Then
            db.Execute "DELETE * FROM " & tb.Name & ""
        End If
    Next

    db.Close
    Set db = Nothing

    MsgBox "Tabelas zeradas"

    DBEngine.CompactDatabase CurrentProject.Path & "\Dados.mdb", CurrentProject.Path & "\Compactado.accdb", , , ";pwd=Senha"

    MsgBox "Base compactada"
       
    Dim OldName As String, NewName As String

    OldName = CurrentProject.Path & "\Compactado.accdb"
    NewName = CurrentProject.Path & "\Dados.mdb"

    If Len(Dir(OldName)) > 0 Then
        Kill (CurrentProject.Path & "\Dados.mdb")
        Name OldName As NewName
    End If

    MsgBox "Processo concluído"


    .................................................................................
    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.

    miglea85
    miglea85
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 19
    Registrado : 03/08/2011

    Como guardar base de dados vazia (sem guardar os dados das tabelas). Empty Re: Como guardar base de dados vazia (sem guardar os dados das tabelas).

    Mensagem  miglea85 15/2/2013, 17:51

    Viva criquio,

    A rotina postada por si está a dar-me um erro de falta de ficheiro DLL: "Run-time error '48': Error in loading DLL".

    Já pesquisei sobre este erro e fiquei na mesma...

    O erro surge na linha: "For Each tb In db.TableDefs".

    De grosso modo vou usar o codigo postado por si, principalmente a parte de zerar as tabelas, pois a copia será feita em ambiente windows.

    PS: Faltam as adaptações.
    Código:
    Dim arqOrigem As String, arqDestino As String, db As Database, tb As TableDef

    Set db = DBEngine.Workspaces(0).OpenDatabase(arqDestino, False, False, "MS Access;PWD=Senha")

    For Each tb In db.TableDefs
        If Left(tb.Name, 4) <> "MSys" Then
            db.Execute "DELETE * FROM " & tb.Name & ""
        End If
    Next

    db.Close
    Set db = Nothing

    MsgBox "Tabelas zeradas"

    DBEngine.CompactDatabase CurrentProject.Path & "\Dados.mdb", CurrentProject.Path & "\Compactado.accdb", , , ";pwd=Senha"

    MsgBox "Base compactada"
       
    Dim OldName As String, NewName As String

    OldName = CurrentProject.Path & "\Compactado.accdb"
    NewName = CurrentProject.Path & "\Dados.accdb"

    If Len(Dir(OldName)) > 0 Then
        Kill (CurrentProject.Path & "\Dados.accdb")
        Name OldName As NewName
    End If

    MsgBox "Processo concluído"
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Como guardar base de dados vazia (sem guardar os dados das tabelas). Empty Re: Como guardar base de dados vazia (sem guardar os dados das tabelas).

    Mensagem  criquio 16/2/2013, 14:19

    Eu postei um exemplo aqui que está funcionando a contento na minha máquina. Teste ele aí.


    .................................................................................
    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.

    miglea85
    miglea85
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 19
    Registrado : 03/08/2011

    Como guardar base de dados vazia (sem guardar os dados das tabelas). Empty dúvida sobre dll

    Mensagem  miglea85 18/2/2013, 11:37

    Bom dia criquio,

    Estou com problemas a executar a sua programação.

    Limitei-me a descompactar as bases de dados para uma pasta e clicar no botão da BD "Manut.mdb".

    Ele ainda copia a BD mas depois dá-me erro logo em "For Each tb In db.TableDefs".

    Como guardar base de dados vazia (sem guardar os dados das tabelas). Bderrorcri1

    Como guardar base de dados vazia (sem guardar os dados das tabelas). Bderrorcri2

    Estará alguma referencia em falta? Ou terei problema com algum DLL?

    Desculpe ser tão chato,
    Miguel Leão
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Como guardar base de dados vazia (sem guardar os dados das tabelas). Empty Re: Como guardar base de dados vazia (sem guardar os dados das tabelas).

    Mensagem  criquio 18/2/2013, 12:32

    Qual é a versão do seu Access? Verifique na lista de referências se tem alguma escrita AUSENTE. Se tiver, tente desabilitá-la ou ver se tem alguma outra versão dela maior ou menor do que a que está selecionada, caso a versão do seu Access seja maior ou menor do que a 2007.

    P.S: Não se deve postar dúvidas nas salas de Repositório de Exemplos. Tive que fazer um malabarismo da gota aqui para trazer a mensagem anterior à essa para esse tópico


    .................................................................................
    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.

    miglea85
    miglea85
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 19
    Registrado : 03/08/2011

    Como guardar base de dados vazia (sem guardar os dados das tabelas). Empty Re: Como guardar base de dados vazia (sem guardar os dados das tabelas).

    Mensagem  miglea85 18/2/2013, 14:30

    OK criquio,
    Desculpe ter postado duvidas no repositório de BD.

    Uma questão ainda sobre o mesmo problema.

    Será possível que este problema pode surgir por o meu Access estar em Inglês?

    Testei no Access 2010, 2007 e 2003 e funcionou lindamente e todos estão em português (PT-PT), mas no meu 2007 em Inglês não funciona...


    Agora uma pergunta sobre outro ponto da programação: Será possível deixar a BD "Dados.mdb" sem password?

    Obrigado,
    Miguel Leão

    EDIT: Testei tambem num Access 2007 em Ingles e não deu erro. Tenho algum problema com o meu Access. Vou tentar reinstalar o Office.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Como guardar base de dados vazia (sem guardar os dados das tabelas). Empty Re: Como guardar base de dados vazia (sem guardar os dados das tabelas).

    Mensagem  criquio 18/2/2013, 15:21

    Então deve ser mesmo problema no Office. Ele está com os SPs atualizados?

    Quanto à questão da password, retire a que está marcada, deixando em branco.


    .................................................................................
    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.

    miglea85
    miglea85
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 19
    Registrado : 03/08/2011

    Como guardar base de dados vazia (sem guardar os dados das tabelas). Empty Re: Como guardar base de dados vazia (sem guardar os dados das tabelas).

    Mensagem  miglea85 19/2/2013, 11:22

    Viva grande criquio,
    Sempre em altas a resolver os problemas. Era mesmo falta do ultimo SP. MUITO OBRIGADO.

    Voltado ao tópico, eu precisei editar algumas coisas nomeadamente quais as tabelas que são zeradas devido as ribbons (USysRibbons).

    Ficou assim: "If Left(tb.Name, 4) <> "MSys" And Left(tb.Name, 4) <> "USys" Then"

    Apesar da sintaxe estar correcta no "IF" este não corre o comando de apagar o conteúdo das tabelas, no entanto corre uma msgbox que criei para verificar onde estava o defeito...

    Código:

    Function CleanDB() As Variant
    'A very big thank's to criquio from maximoaccess.forumeiros.com

    Dim arqOrigem As String, arqDestino As String, db As Database, tb As TableDef

    arqOrigem = CurrentProject.Path & CurrentProject.Name

    Set db = DBEngine.Workspaces(0).OpenDatabase(arqOrigem, False, False, "MS Access;PWD=")

    For Each tb In db.TableDefs
        If Left(tb.Name, 4) <> "MSys" And Left(tb.Name, 4) <> "USys" Then

            db.Execute "DELETE * FROM " & tb.Name & ""
           
        End If
    Next

    db.Close
    Set db = Nothing

    MsgBox "Tabelas zeradas"

    MsgBox "Processo concluído"

    End Function

    Obrigado desde já por toda a ajuda, voces são impecaveis
    Miguel Leão

    Conteúdo patrocinado


    Como guardar base de dados vazia (sem guardar os dados das tabelas). Empty Re: Como guardar base de dados vazia (sem guardar os dados das tabelas).

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/4/2024, 03:32