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


5 participantes

    [Resolvido]Macro para apagar todos os registos da BD

    avatar
    martinsf
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6
    Registrado : 18/02/2014

    [Resolvido]Macro para apagar todos os registos da BD Empty [Resolvido]Macro para apagar todos os registos da BD

    Mensagem  martinsf 19/2/2014, 18:05

    Boa tarde,

    Estou a criar uma pequena BD para gerir stocks em vários projectos.

    Quero criar uma Macro que apague todos os registas das tabelas da BD e que reinicie todas as numerações automáticas.
    Outra questão importante é que existem relacionamentos entre tabelas.

    Já procurei no Fórum e já vi algumas supostas soluções que tenho testado mas até agora sem sucesso.

    Utilizo o Access 2007.

    Obrigado

    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    [Resolvido]Macro para apagar todos os registos da BD Empty Re: [Resolvido]Macro para apagar todos os registos da BD

    Mensagem  JPaulo 20/2/2014, 09:46

    Ola Filipe Martins, seja bem vindo ao fórum;

    Este meu código, limpa todos os registros de todas as tabelas do próprio banco.

    Para reiniciar a numeração, temos de adaptar a este código, um outro para Compactar/Reparar, mas para isso necessito de saber qual a versão do seu Ms Access.

    Código:
    Public Function LimpaTabelas()
    'By JPaulo ® Maximo Access 2009
    On Error GoTo 1

    Dim strBanco As DAO.Database
    Dim strTabelas As DAO.TableDef
    Dim strSQL As String

    Set strBanco = CurrentDb()

        For Each strTabelas In strBanco.TableDefs
            If Left(strTabelas.Name, 4) <> "MSys" Then
                strSQL = "DELETE FROM " & strTabelas.Name & ";"
                strBanco.Execute strSQL
            End If
        Next

    MsgBox "Todas as tabelas foram limpas...", vbInformation, "Limpeza Tabelas"
    strBanco.Close

    Exit_1:
        Set strTabelas = Nothing
        Set strBanco = Nothing
        Exit Function

    1:
        Select Case Err.Number
            Case 3376
                Resume Next 'Ignorar o erro se a tabela não foi encontrada
             Case 3270 'Ignorar o erro se a propriedade não existir
                Resume Next
            Case Else
                MsgBox Err.Number & ": " & Err.Description
                Resume Exit_1
        End Select
    End Function


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Macro para apagar todos os registos da BD Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Macro para apagar todos os registos da BD Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Macro para apagar todos os registos da BD Folder_announce_new Instruções SQL como utilizar...
    avatar
    martinsf
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6
    Registrado : 18/02/2014

    [Resolvido]Macro para apagar todos os registos da BD Empty Re: [Resolvido]Macro para apagar todos os registos da BD

    Mensagem  martinsf 20/2/2014, 11:01

    Muito obrigado pela ajuda.

    Utilizo o Access 2007.

    Filipe
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    [Resolvido]Macro para apagar todos os registos da BD Empty Re: [Resolvido]Macro para apagar todos os registos da BD

    Mensagem  JPaulo 20/2/2014, 15:09

    Faça o teste da seguinte forma;

    1º Cole esta função num modulo novo, salve e dê-lhe o nome que quiser.

    Código:
    Public Function LimpaTabelas()
    'By JPaulo ® Maximo Access 2009
    On Error GoTo 1

    Dim strBanco As DAO.Database
    Dim strTabelas As DAO.TableDef
    Dim strSQL As String
    Dim frm As Form
    Dim rpt As Report

    Set strBanco = CurrentDb()
    'procura todas as tabelas excluíndo as de systema
        For Each strTabelas In strBanco.TableDefs
            If Left(strTabelas.Name, 4) <> "MSys" Then
    'deleta todos os registros
                strSQL = "DELETE FROM " & strTabelas.Name & ";"
                strBanco.Execute strSQL
            End If
        Next
    'informa que a operação correu bem e limpou tudo
    MsgBox "Todas as tabelas foram limpas...", vbInformation, "Limpeza Tabelas"
    strBanco.Close

    Exit_1:
        Set strTabelas = Nothing
        Set strBanco = Nothing
        
    'fecha os formularios
    For Each frm In Forms
       DoCmd.Close acForm, frm.Name, acSaveNo
    Next frm
    'fecha os relatorios
    For Each rpt In Reports
       DoCmd.Close acReport, rpt.Name, acSaveNo
    Next rpt
    'compacta o banco
          SendKeys "%(FMC)", False
    'termina a função
        Exit Function

    1:
        Select Case Err.Number
            Case 3376
                Resume Next 'Ignorar o erro se a tabela não foi encontrada
             Case 3270 'Ignorar o erro se a propriedade não existir
                Resume Next
            Case Else
                MsgBox Err.Number & ": " & Err.Description
                Resume Exit_1
        End Select
        
    End Function

    2º No VBA ao pressionar de um botão no formulario, chame a função e teste;

    Código:
    Private Sub SeuBotão_Click()
        Call LimpaTabelas()
    End Sub

    Nota:
    Tópico movido para a sala VBA.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Macro para apagar todos os registos da BD Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Macro para apagar todos os registos da BD Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Macro para apagar todos os registos da BD Folder_announce_new Instruções SQL como utilizar...
    avatar
    martinsf
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6
    Registrado : 18/02/2014

    [Resolvido]Macro para apagar todos os registos da BD Empty Re: [Resolvido]Macro para apagar todos os registos da BD

    Mensagem  martinsf 21/2/2014, 13:08

    Boa tarde,

    Não querendo estar a ser chato, o código apresenta os seguintes erros:

    Quando carrego no botão:

    Erro 3131: Erro Sintaxe na cláusula FROM

    e depois no final dá este erro:

    Não é possível guardar esta base de dados no formato de uma versão anterior porque utiliza as funcionalidades que requerem o formato do ficheiro actual.

    Obrigado

    FM
    toyebom
    toyebom
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 1128
    Registrado : 18/07/2012

    [Resolvido]Macro para apagar todos os registos da BD Empty Macro para apagar todos os registos da BD

    Mensagem  toyebom 21/2/2014, 13:42

    Crias uma macro

    defines:

    ExecutarComandoDeMenu
    SelecionarTodosRegistos

    ExecutarComandoDeMenu
    EliminarRegisto

    a seguir no formulário crias um botão que execute a macro.


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    [Resolvido]Macro para apagar todos os registos da BD Empty Re: [Resolvido]Macro para apagar todos os registos da BD

    Mensagem  JPaulo 21/2/2014, 13:55

    Caro toyebom, não vejo qual o problema de não utilizar o código que passei ao colega.

    Martins, veja o exemplo a funcionar corretamente.

    Nota:
    Na duvida anexe aqui o seu banco.
    Anexos
    [Resolvido]Macro para apagar todos os registos da BD Attachmenttestes.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (24 Kb) Baixado 25 vez(es)


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Macro para apagar todos os registos da BD Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Macro para apagar todos os registos da BD Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Macro para apagar todos os registos da BD Folder_announce_new Instruções SQL como utilizar...
    wsenna
    wsenna
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 491
    Registrado : 22/12/2009

    [Resolvido]Macro para apagar todos os registos da BD Empty Re: [Resolvido]Macro para apagar todos os registos da BD

    Mensagem  wsenna 21/2/2014, 16:09

    Grande JPaulo, boa tarde.

    Esta função é muito interessante quando se quer zerar uma base de dados anteriormente utilizada para experiências ou demonstrações, entretanto, num banco de dados mde, onde se utiliza a rotina de ocultar a janela do Access penso que graves problemas geraria para os menos experientes já que por exemplo tabelas como tblCaminhoBe (mesmo que esta esteja no FrontEnd), tblUsuários, tblNível também seriam totalmente expurgadas, daí ...

    Fico imaginando um usuário ao tentar abrir o seu banco de dados e não possuir os dados na tblCaminhoBe.

    Abraços, WSenna
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    [Resolvido]Macro para apagar todos os registos da BD Empty Re: [Resolvido]Macro para apagar todos os registos da BD

    Mensagem  JPaulo 21/2/2014, 16:20

    Ola Grande Rei;

    No código existe uma linha de If, que pode acrescentar todas as tabelas que não quer deletar os registros.

    If Left(strTabelas.Name, 4) <> "MSys" AND Left(strTabelas.Name, 9) <> "SuaTabela" Then


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Macro para apagar todos os registos da BD Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Macro para apagar todos os registos da BD Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Macro para apagar todos os registos da BD Folder_announce_new Instruções SQL como utilizar...
    wsenna
    wsenna
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 491
    Registrado : 22/12/2009

    [Resolvido]Macro para apagar todos os registos da BD Empty Re: [Resolvido]Macro para apagar todos os registos da BD

    Mensagem  wsenna 21/2/2014, 16:56

    Grande Mestre JPaulo,

    Sei disso, mas lembre-se que citei os menos experientes.
    O Amigão deve ter conhecimento que tudo o que postas como exemplo são avidamente consumido por todos nós como joias preciosas e quase que em 100% utilizadas sem pestanejar em projetos como forma de agregar valor e conhecimento.
    Apenas fiz esse comentário como tipo de aviso.

    Bem sabes que sou seu fã incondicional, e o que sei hoje tem uma parcela infinita de seus conselhos.

    Mais uma vez, um grande abraço e um beijo em vosso coração.

    WSenna
    toyebom
    toyebom
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 1128
    Registrado : 18/07/2012

    [Resolvido]Macro para apagar todos os registos da BD Empty Macro para apagar todos os registos da BD

    Mensagem  toyebom 21/2/2014, 20:07

    JPaulo

    Não vejo problema nenhum apenas dei conhecimento de uma outra forma para fazer o que quer.
    Não quis monopolizar o tópico nem nada do que se pareça.
    Estamos aqui para aprender e aprender a fazer a mesma coisa de várias formas julgo que também é bom.


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.
    avatar
    Falcao39
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1
    Registrado : 23/07/2015

    [Resolvido]Macro para apagar todos os registos da BD Empty Show

    Mensagem  Falcao39 16/3/2022, 10:42

    JPaulo,

    Procurei esse codigo ate nos sites gringos e você me presenteia. Eu não programo direto no Access, apenas uso como banco de dados, o qual comecei a estudar esse ano de 2022 e já consegui entender seu codigo e ate como adaptar ao meu projeto no excel. Não sei meu nivel quanto a isso, mas me esforço muito e lhe agradeço.

    JPaulo gosta desta mensagem

    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    [Resolvido]Macro para apagar todos os registos da BD Empty Re: [Resolvido]Macro para apagar todos os registos da BD

    Mensagem  JPaulo 16/3/2022, 10:56

    Agradecido amigo, bons estudos.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Macro para apagar todos os registos da BD Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Macro para apagar todos os registos da BD Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Macro para apagar todos os registos da BD Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    [Resolvido]Macro para apagar todos os registos da BD Empty Re: [Resolvido]Macro para apagar todos os registos da BD

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 09:49