MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Macro para apagar todos os registos da BD

    Compartilhe

    martinsf
    Novato
    Novato

    Respeito às Regras 100%

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

    [Resolvido]Macro para apagar todos os registos da BD

    Mensagem  martinsf em Qua 19 Fev 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
    Moderador
    Moderador

    Respeito às Regras 100%

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

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

    Mensagem  JPaulo em Qui 20 Fev 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


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    martinsf
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  martinsf em Qui 20 Fev 2014, 11:01

    Muito obrigado pela ajuda.

    Utilizo o Access 2007.

    Filipe

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

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

    Mensagem  JPaulo em Qui 20 Fev 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.


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    martinsf
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  martinsf em Sex 21 Fev 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
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

    Macro para apagar todos os registos da BD

    Mensagem  toyebom em Sex 21 Fev 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
    Moderador
    Moderador

    Respeito às Regras 100%

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

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

    Mensagem  JPaulo em Sex 21 Fev 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
    testes.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (24 Kb) Baixado 9 vez(es)


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    wsenna
    Developer
    Developer

    Respeito às Regras 100%

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

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

    Mensagem  wsenna em Sex 21 Fev 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
    Moderador
    Moderador

    Respeito às Regras 100%

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

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

    Mensagem  JPaulo em Sex 21 Fev 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


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    wsenna
    Developer
    Developer

    Respeito às Regras 100%

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

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

    Mensagem  wsenna em Sex 21 Fev 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
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

    Macro para apagar todos os registos da BD

    Mensagem  toyebom em Sex 21 Fev 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.

      Data/hora atual: Sex 09 Dez 2016, 11:33