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


4 participantes

    [Resolvido]Excluir 30 mil registros rapidamente

    avatar
    ton0612
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 275
    Registrado : 30/03/2011

    [Resolvido]Excluir 30 mil registros rapidamente Empty [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  ton0612 15/2/2016, 12:05

    Bom dia a todos.

    Estou executando um código simples de exclusão de registros, mas esta demorando uns 10 minutos...
    teria alguma forma mais rapida para excluir os 30 mil registros?

    obs. a velocidade é a mesma se for em rede ou local.
    obs2 preciso reduzir este tempo para no maximo 120 segundo.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  JPaulo 15/2/2016, 12:16

    Ola;

    Mostre-nos como está a fazer.


    .................................................................................
    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]Excluir 30 mil registros rapidamente Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Excluir 30 mil registros rapidamente Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Excluir 30 mil registros rapidamente Folder_announce_new Instruções SQL como utilizar...
    avatar
    ton0612
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 275
    Registrado : 30/03/2011

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  ton0612 15/2/2016, 12:50

    bom dia. obrigado pelo retorno.

    DoCmd.SetWarnings False

    strDl = "Delete * from [tbl Pedido] Where SaidaPor = 'SS' or SaidaPor = 'SO'"

    DoCmd.RunSQL strDl

    DoCmd.SetWarnings True

    1 - Ja tentei tb abrir a tabela manualmente criar o filtro e deletar na mão.
    2 - Ja tentei criar uma consulta de exclusao, mas todos demoram muito.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  Alvaro Teixeira 15/2/2016, 13:30

    Olá a todos, um pitaco.
    O campo SaidaPor é indexado, facilitava.
    Poderá efetuar em duas etapas:
    Código:
    strDl = "Delete * from [tbl Pedido] Where SaidaPor = 'SS'"
    strDl = "Delete * from [tbl Pedido] Where SaidaPor = 'SO'"

    Alguma razão especial para o tempo de eliminação, compactar-reindexar também será saudável.
    Abraço
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  JPaulo 15/2/2016, 14:06

    Fiz aqui em cima do joelho um teste com 45.264 registos e deletou em 1 segundo;

    Código:
    Public Function teste()
    Dim strDl$
    Dim hInicio As Date
    Dim hFim As Date
    Dim hResultado As Date

    hInicio = Now()
        CurrentDb.Execute "Delete * from [tbl Pedido] Where SaidaPor = 'SS' or SaidaPor = 'SO'"
    hFim = Now()

    hResultado = hInicio - hFim
    Debug.Print hResultado
    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]Excluir 30 mil registros rapidamente Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Excluir 30 mil registros rapidamente Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Excluir 30 mil registros rapidamente Folder_announce_new Instruções SQL como utilizar...
    avatar
    ton0612
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 275
    Registrado : 30/03/2011

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  ton0612 15/2/2016, 15:39

    Boa tarde JPaulo.
    a função foi mais rápida do que o normal, mas ainda assim demorou quase 5 minutos
    mas por se tratar de um acesso ao Sql Server precisei adicionar o "[dbseechanges]".

    Fiz o teste com uma tabela local diretamente no access e apagou praticamente instantaneo mesmo.

    mas o problema é que com o acesso ao sql server seja local na maquina ou via rede esta demorando...

    seria devido ao "[dbseechanges]"?


    ahteixeira -> obrigado pela ajuda, mas também ja tentei desta forma e o tempo praticamente duplica, pois ele tem que fazer a consulta duas vezes antes de executar.

    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  JPaulo 15/2/2016, 15:44

    Desde a abertura deste tópico, só agora você menciona que é "Sql Server ", pois....



    .................................................................................
    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]Excluir 30 mil registros rapidamente Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Excluir 30 mil registros rapidamente Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Excluir 30 mil registros rapidamente Folder_announce_new Instruções SQL como utilizar...
    avatar
    ton0612
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 275
    Registrado : 30/03/2011

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  ton0612 15/2/2016, 15:45

    Sim peço desculpas... deveria ter mencionado antes toda a arquitetura...
    Mas creio que agora não falta mais informações...

    Peço desculpas mesmo.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  JPaulo 15/2/2016, 16:06

    Penso que não existe muito mais a melhorar.

    No entanto pode fazer da forma anteriormente sugerida e ver se melhora a performance;

    Código:
    Public Function teste()
    Dim strDl$
    Dim hInicio As Date
    Dim hFim As Date
    Dim hResultado As Date

    hInicio = Now()

    CurrentDb.Execute "Delete from [tbl Pedido] Where SaidaPor = 'SS'", dbFailOnError + dbSeeChanges
    CurrentDb.Execute "Delete from [tbl Pedido] Where SaidaPor = 'SO'", dbFailOnError + dbSeeChanges

    hFim = Now()

    hResultado = hInicio - hFim
    Debug.Print hResultado
    End Function

    Chame a função na janela immediate e veja o tempo que regista no debug.print

    ?teste


    .................................................................................
    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]Excluir 30 mil registros rapidamente Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Excluir 30 mil registros rapidamente Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Excluir 30 mil registros rapidamente Folder_announce_new Instruções SQL como utilizar...
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  Alvaro Teixeira 15/2/2016, 16:08

    Olá, uma curiosidade, de que forma é que liga o Front_end ao SQLserver projecto ADP ?
    Abraço
    avatar
    ton0612
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 275
    Registrado : 30/03/2011

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  ton0612 15/2/2016, 17:56

    Agradeço o retorno...
    como o banco esta no sql, demora muito mesmo... ja tentei de diversas formas...

    e não uma solução por enquanto.... a não ser esperar os minutos pelo menos rsrs..

    Muito obrigado mesmo.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  Avelino Sampaio 15/2/2016, 18:39

    Olá!

    Crie a consulta ação no sql Server (Stored Prcedure).

    Execute o Store Procedure pelo Access

    Sucesso!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    ton0612
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 275
    Registrado : 30/03/2011

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  ton0612 15/2/2016, 18:45

    Boa tarde Avelino.
    Agradeço a ajuda...

    eu não sei bem se seria isso mas dentro do sql management criei uma query

    Código:

    use PCP2
    go
    delete from [tbl Pedido]
    where SaidaPor = 'SS' or SaidaPor= 'SO';
    go

    este levou apenas 2 minutos ... achei show.
    Agora não sei como chamar este script via access...
    eu iria fazer agora:
    chamar o comando via um .bat com este script.
    estou no caminho certo?

    Desde já agradeço a todos.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  Avelino Sampaio 15/2/2016, 20:14

    Veja se este vídeo ajuda

    http://www.experts-exchange.com/videos/182/Executing-a-SQL-Server-Stored-Procedure-from-Within-Access.html

    Bom estudo!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    ton0612
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 275
    Registrado : 30/03/2011

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  ton0612 15/2/2016, 21:40

    Muito Bom...
    o video é excelente...
    da para resolver o tópico...
    muito obrigado.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  Alvaro Teixeira 19/2/2016, 08:19

    Olá Everton, conseguiu resolver Smile
    Obrigado pelo retorno, os utilizadores do fórum agradecem.
    Abraço a todos.
    avatar
    ton0612
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 275
    Registrado : 30/03/2011

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  ton0612 19/2/2016, 09:34

    bom dia.
    Consegui resolver sim....
    criei a Query conforme acima, depois salvei no computador.
    criei um bat que executa a Query

    sqlcmd -S.\PCPEXPRESS -U user-P senha-i "NomeDaQuery.sql"

    como este local usei o "S.\InstanciaDoSQLEXpress"
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  Alvaro Teixeira 19/2/2016, 10:55

    Olá, fica a dica.
    Obrigado e abraço.

    Conteúdo patrocinado


    [Resolvido]Excluir 30 mil registros rapidamente Empty Re: [Resolvido]Excluir 30 mil registros rapidamente

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 25/11/2024, 08:16