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


3 participantes

    [Resolvido]Apagar em mais que uma tabelas no mesmo click

    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Apagar em mais que uma tabelas no mesmo click Empty [Resolvido]Apagar em mais que uma tabelas no mesmo click

    Mensagem  Assis 25/6/2015, 19:59

    Boa tarde Amigos

    No exemplo que anexo, depois de seleccionar o intervalo de datas no formulário, ao clikar OK serão eliminados na tabela "Encomenda" os registos que estiverem nesse intervalo de datas.

    Pergunto: Daria para aplicar a este comando, apagar em outras tabelas ao memo tempo com o mesmo intervalo de datas.

    Obrigado


    .................................................................................
    *** Só sei que nada sei ***
    APJesus
    APJesus
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 367
    Registrado : 21/09/2010

    [Resolvido]Apagar em mais que uma tabelas no mesmo click Empty Re: [Resolvido]Apagar em mais que uma tabelas no mesmo click

    Mensagem  APJesus 25/6/2015, 20:14

    Assis, Boa tarde
    Uso este método em meus projetos para excluir em mais de uma tabela, por exemplo quando tenho formulário e subformulário com chaves entre eles. o que faço?
    Crio consultas (Exclusão) independente, crio os critérios e executo no botão no form que quero selecionar para excluir.
    Ex:
    Tab_OS - Cód OS
    Tab_DETOS - Cód OS, essa tab possui uma chave estrangeira

    Caso queira excluir o Cód OS da TAB_OS, ficará ainda na TAB_DETOS o código gerado. As consultas excluirão os dois códigos mediante os critérios das consultas.

    No botão no form para exclusão fica:
    Docmd.OpenQuery "xxxxx" para a TAB_DETOS
    DoCmd. OpenQuery "xxxxx" para a TAB_OS

    Seguir esta ordem senão o sistema não deixará vc avançar devido integridade dos dados, etc. bla, bla, bla...

    Att,
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Apagar em mais que uma tabelas no mesmo click Empty Re: [Resolvido]Apagar em mais que uma tabelas no mesmo click

    Mensagem  Assis 25/6/2015, 20:19

    Alessandro Pereira

    Obrigado pela resposta mas eu queria mesmo é em VBA.
    Vamos aguardar .

    Cumprimentos


    .................................................................................
    *** Só sei que nada sei ***
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7919
    Registrado : 15/03/2013

    [Resolvido]Apagar em mais que uma tabelas no mesmo click Empty Re: [Resolvido]Apagar em mais que uma tabelas no mesmo click

    Mensagem  Alvaro Teixeira 25/6/2015, 22:24

    Olá a todos,
    Assis , da forma que o Alessandro Pereira diz, também é via código (VBA) e no meu entender mais simples.
    Dei uma espreitadela ao código e não compreendo qual a razão de estar a utilizar "transações" , talvez para ter o retorno do nº de registos afetados (mas também conseguimos o mesmo mais simples com uma consulta).

    Na minha opinião respondendo à sua perguntas, o código abaixo apaga os dados com a origem a vermelho:

    Set T = db.OpenRecordset("Select * from Encomenda ")
    Ws.BeginTrans 'Início da transação

    'Apaga os dados entre a DataX e a DataY
    Num = 0
    Do While Not T.EOF
    If T!Data >= DataX And T!Data <= DataY Then
    't.Edit
    T.Delete
    Num = Num + 1
    End If
    T.MoveNext
    Loop

    ' executa ou cancela a transação
    S = "Esta Operação Vai Eliminar" & Chr(13) & "Todos os Documentos de Vendas com Datas Entre: " & Chr(13) & "" & DataX & " e " & DataY & " ?"
    X = MsgBox(S, 32 + 4 + 256, "Mensagem")
    If X = 6 Then 'sim
    Ws.CommitTrans ' executa a transação
    Else
    Ws.Rollback ' desfaz a transação
    Exit Sub
    End If

    ' Informa o resultado ao usuário
    If Num = 0 Then
    S = "Não Havia Documentos de Vendas no Período Indicado."
    ElseIf Num = 1 Then
    S = "Um Documentos de Vendas foi Apagado."

    ElseIf Num > 1 Then
    S = Trim$(Str$(Num)) & " Documentos de Vendas foram apagados."
    Else
    End If

    ' Avisa que n compromissos foram apagados
    MsgBox S, vbInformation, "Documentos de Vendas"


    Seria no final repetir o mesmo processo para a outra tabela, imagine que era a tabela "pendentes"

    Set T = db.OpenRecordset("Select * from Pendentes ")
    Ws.BeginTrans 'Início da transação

    'Apaga os dados entre a DataX e a DataY
    Num = 0
    Do While Not T.EOF
    If T!Data >= DataX And T!Data <= DataY Then
    . . .


    Abraço
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7919
    Registrado : 15/03/2013

    [Resolvido]Apagar em mais que uma tabelas no mesmo click Empty Re: [Resolvido]Apagar em mais que uma tabelas no mesmo click

    Mensagem  Alvaro Teixeira 25/6/2015, 23:40

    Assis, estive aqui entretido e aproveitei o seu exemplo para demonstrar da forma que eu e o Alessandro sugerimos:

    Código:
           'inicio apagar-------------------------------------------------------------
            Dim reg1, reg2 As Double
            Dim bd As DAO.Database
            Set bd = CurrentDb
            
            'Eliminar Encomenda1
            bd.Execute "DELETE Encomenda1.Data FROM Encomenda1 WHERE Encomenda1.Data >=# " & _
                         Format([DataApagar], "mm/dd/yyyy") & "# And Encomenda1.Data <=#" & _
                         Format([DataApagarFim], "mm/dd/yyyy") & "#;"
            reg1 = bd.RecordsAffected
            
            'Executando a consulta de Exclusão - Encomenda2
            bd.Execute "DELETE Encomenda2.Data FROM Encomenda2 WHERE Encomenda2.Data >=# " & _
                         Format([DataApagar], "mm/dd/yyyy") & "# And Encomenda2.Data <=#" & _
                         Format([DataApagarFim], "mm/dd/yyyy") & "#;"
            reg2 = bd.RecordsAffected
            
            MsgBox "Foram excluídos " & reg1 & " registo(s) da tabela Encomenda1 e " & _
                    reg2 & " registo(s) da tabela Encomenda2.", _
                    vbInformation, "Aviso"
            'fim apagar  -----------------------------------------------------------------

    Técnica utilizada, veja a dica 21 do Mestre Avelino

    Exemplo de Teste ApagarMetodo2.rar

    Abraço


    Última edição por ahteixeira em 27/6/2015, 12:29, editado 1 vez(es)
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Apagar em mais que uma tabelas no mesmo click Empty Re: [Resolvido]Apagar em mais que uma tabelas no mesmo click

    Mensagem  Assis 26/6/2015, 17:56

    Obrigado Teixeira

    Quem sabe sabe.


    .................................................................................
    *** Só sei que nada sei ***
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7919
    Registrado : 15/03/2013

    [Resolvido]Apagar em mais que uma tabelas no mesmo click Empty Re: [Resolvido]Apagar em mais que uma tabelas no mesmo click

    Mensagem  Alvaro Teixeira 27/6/2015, 11:06

    Olá Assis, perfeito, obrigado pelo retorno.
    Com o MaximoAccess estamos sempre aprender lol!
    Abraço

    Conteúdo patrocinado


    [Resolvido]Apagar em mais que uma tabelas no mesmo click Empty Re: [Resolvido]Apagar em mais que uma tabelas no mesmo click

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 27/4/2024, 00:45