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

    Preenche Patrim

    avatar
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    Preenche Patrim Empty Preenche Patrim

    Mensagem  Carlao2 17/1/2018, 15:26

    Boa tarde à todos.

    Uma dúvida.
    Tenho um código desenvolvido pelo colega Alexandre, e queria saber se é normal uma demora muito grande para se executar esse módulo.

    Coloquei para executar a duas horas e meia atras e tive que interromper, pois até agora ele não tinha finalizado.

    Ha algo que se possa fazer para que o módulo rode mais rápido?

    Obrigado à todos
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    Preenche Patrim Empty Re: Preenche Patrim

    Mensagem  FabioPaes 17/1/2018, 17:08

    Por favor, poste o Modulo e o Link do Tópico anterior, para que alguém possa ter noção do que se trata esse Módulo.


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    Preenche Patrim Empty Re: Preenche Patrim

    Mensagem  Carlao2 17/1/2018, 17:22

    Boa tarde Fabio.

    o Link é: https://www.maximoaccess.com/t32058-resolvidosegundo-e-ultimo-bloco-de-cruzamento-e-preenchimento-de-tabela#222063

    e o modulo é o seguinte

    Sub PreenchePtr()

    'código criado por Alexandre Neves, do Fórum MaximoAccess '

    Dim Rst As DAO.Recordset, Rst1 As DAO.Recordset, strPtr As String, ContaPtr As Integer

    Set Rst = CurrentDb.OpenRecordset("SELECT * FROM Princ LEFT JOIN Fis ON Princ.Ptr=Fis.Ptr ORDER BY Princ.Ptr")
    Do While Not Rst.EOF
    If Rst.AbsolutePosition = 0 Then
    strPtr = Rst("Princ.Ptr")
    ContaPtr = 1
    Else
    If Rst("Princ.Ptr") = strPtr Then
    ContaPtr = ContaPtr + 1
    Else
    If ContaPtr = 1 Then
    Set Rst1 = CurrentDb.OpenRecordset("SELECT * FROM Princ WHERE Ptr='" & strPtr & "'")
    Rst1.Edit
    If Rst1("PtrAlt") = Rst1("Ptr") Then Rst1("Idp") = "M1" Else Rst1("Idp") = "B2"
    Rst1.Update
    Set Rst1 = CurrentDb.OpenRecordset("SELECT * FROM Fis WHERE Ptr='" & strPtr & "'")
    If Not Rst1.EOF Then
    Rst1.Edit
    Rst1("Idp") = "M1"
    Rst1.Update
    End If
    Else
    Set Rst1 = CurrentDb.OpenRecordset("SELECT * FROM Princ WHERE Ptr='" & strPtr & "'")
    Do While Not Rst1.EOF
    Rst1.Edit
    If Rst1("PtrAlt") = Rst1("Ptr") Then Rst1("Idp") = "B3" Else Rst1("Idp") = "I4"
    Rst1.Update
    Rst1.MoveNext
    Loop
    Set Rst1 = CurrentDb.OpenRecordset("SELECT * FROM Fis WHERE Ptr='" & strPtr & "'")
    Do While Not Rst1.EOF
    Rst1.Edit
    Rst1("Idp") = "I3"
    Rst1.Update
    Rst1.MoveNext
    Loop
    End If
    strPtr = Rst("Princ.Ptr")
    ContaPtr = 1
    End If
    End If
    Rst.MoveNext
    Loop
    Set Rst = Nothing
    Set Rst1 = Nothing

    CurrentDb.Execute "UPDATE Princ SET Idp='M0' WHERE Cnc like 'Dev*'"
    CurrentDb.Execute "UPDATE Princ SET Idp='B1' WHERE Cnc like 'Sobr*'"
    CurrentDb.Execute "UPDATE Fis SET Idp='I1' WHERE IsNull(Ptr) and Cnc='Sobra'"
    CurrentDb.Execute "UPDATE Princ SET Idp='B2' WHERE PtrAlt<>Ptr and (Cnc like 'Dev*' or Cnc like 'Sobra*')"

    CurrentDb.Execute "UPDATE Princ LEFT JOIN Fis ON Princ.PtrAlt=Fis.Ptr SET Princ.Idp='B2' WHERE Princ.Ptr<>Princ.PtrAlt and Fis.Idp='M1'"
    CurrentDb.Execute "UPDATE Princ LEFT JOIN Fis ON Princ.PtrAlt=Fis.Ptr SET Princ.Idp='I4' WHERE Princ.Ptr<>Princ.PtrAlt and Fis.Idp='I3'"


    End Sub

    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    Preenche Patrim Empty Re: Preenche Patrim

    Mensagem  FabioPaes 17/1/2018, 17:30

    Ok! Nos diga em quantos registros está realizando essa Movimentação e quais as condições da sua rede, tipo as tabelas ficam em um local da rede e está executando atraves do Beck-End em outra Maquina...


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    Preenche Patrim Empty Re: Preenche Patrim

    Mensagem  Carlao2 17/1/2018, 17:53

    Fabio

    Estou executando em máquina local e a tabela tem cerca de 700.000 registros.
    Seria esse o problema?
    Mas ainda assim, ele ficou cerca de duas horas executando e não concluiu
    O que devo fazer
    Colocar o arquivo no servidor da empresa?

    Grato
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    Preenche Patrim Empty Re: Preenche Patrim

    Mensagem  FabioPaes 17/1/2018, 18:58

    Amigo, são muitos registros para serem processados, e são várias alterações com muitas condições... Isso vai deixando o processo moroso mesmo...
    Se a máquina tiver um processador e Memoria melhor, com certeza ela irá realizar a rotina com maior velocidade... Faça um teste rodando direto no servidor...

    Outra coisa que pode estar mudando, é na abertura desses Recordset, buscando apenas os campos necessários...
    Mude de: CurrentDb.OpenRecordset("SELECT * FROM Fis WHERE Ptr='" & strPtr & "'")
    para: CurrentDb.OpenRecordset("SELECT Campo1,Campo2,Campo3 FROM Fis WHERE Ptr='" & strPtr & "'")

    Pode ser que reduza um pouco a carga na memória... Pois imagina que que essa tabela tenha 50 campo... e que será utilizado apenas 3 deles... Pode ser que ajude um pouco.

    Outra coisa é Limpar o RecordSet apos sua utilização Set Rst = Nothing sempre apos a utilização de seus dados...

    Essa rotina tem que ser feita Muitas Vezes em todos esses registros?


    Última edição por FabioPaes em 17/1/2018, 19:25, editado 1 vez(es)


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    Preenche Patrim Empty Re: Preenche Patrim

    Mensagem  Carlao2 17/1/2018, 19:12

    Fábio

    Ok. Vou tentar executar com a base no servidor para ver se ele processa mais rápido.
    Sim, ela verifica a condição de cada item para preencher a coluna Idp de maneira correta e de acordo com a condição em que se encontra o item.
    Tudo bem que é raro termos uma base tão grande assim, na maioria das vezes a base tem no máximo 40.000 registros e com esse tamanho já fiz o teste e ele processa em uma rapidez bastante satisfatória.

    Valeu, muito obrigado pela ajuda e pelas dicas.

    Após processar no servidor, informo aqui se a resposta no processo foi mais rápida.

    Tks
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    Preenche Patrim Empty Re: Preenche Patrim

    Mensagem  FabioPaes 17/1/2018, 19:25

    Editei a Mensagem Anterior... Reveja favor.


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    Preenche Patrim Empty Re: Preenche Patrim

    Mensagem  Carlao2 17/1/2018, 19:34

    Fabio

    Farei a alteração sugerida por você e darei um Feedback sobre o resultado obtido.


    Obrigado.

    avatar
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    Preenche Patrim Empty Re: Preenche Patrim

    Mensagem  Carlao2 18/1/2018, 13:16

    Fabio

    Bom dia

    Fiz a alteração sugerida por você mais dá o seguinte erro:

    "Erro em tempo de execução 3079
    O Campo especificado 'Ptr' pode se referir a mais de uma tabela na cláusula FROM da instrução SQL


    No aguardo de seus comentários
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    Preenche Patrim Empty Re: Preenche Patrim

    Mensagem  FabioPaes 18/1/2018, 14:20

    Olá, quanto ao erro é pq o campo Ptr está em mais de uma tabela origem da consulta, para isso, especifique a tabela tambem, assim:

    Nomedatabela.Ptr Provavelmente é na consulta que tem o Join


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    Carlao2
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 264
    Registrado : 19/10/2016

    Preenche Patrim Empty Re: Preenche Patrim

    Mensagem  Carlao2 18/1/2018, 15:20

    Fabio.

    Seguirei sua orientação e informarei se deu certo

    Obrigado

    Conteúdo patrocinado


    Preenche Patrim Empty Re: Preenche Patrim

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 23/11/2024, 15:05