MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

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

    Banco Access em rede lento e travando

    Compartilhe

    israelcomex
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 27
    Registrado : 12/05/2017

    Banco Access em rede lento e travando

    Mensagem  israelcomex em 30/9/2018, 16:15

    Bom dia!

    Criei um banco para lançamento de dados com parâmetros em VBA, porém sou iniciante. após algum tempo de utilização começou a ficar lento e travando em alguns momentos. Vi algumas postagens e me chamou atenção a do amigo Damasceno Jr, no qual utiliza tabelas temporárias para resolver o problema, fiquei esperançoso quando vi, e até tentei recriar o modelo, mas como disse meu conhecimento em VBA é quase zero, por isso estou com muita dificuldade de fazer funcionar... muita mesmo!!!   Laughing  
    Poderiam me ajudar por favor?!

    Sobre o Banco: trabalho com Front End em cada máquina e Back End que está na rede
    Disponibilizei no link a seguir:
    dropbox.com/s/h2jbe2qgv0b6c8x/PastaSevidorBackEnd.zip?dl=1

    Obs. Usei o App que está na pasta PastaServidorBackEnd, subpasta "Nova_Versão".

    Orbigado pela atenção.
    avatar
    José Machado
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 101
    Registrado : 13/09/2016

    Re: Banco Access em rede lento e travando

    Mensagem  José Machado em 2/10/2018, 13:57

    Bom dia Amigo

    Olhei seu sistema, e o problema é acoplamento das tabelas.
    *Sugiro troca do tipo de conexão para adodb ou dao

    Att
    José Machado

    israelcomex
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 27
    Registrado : 12/05/2017

    Re: Banco Access em rede lento e travando

    Mensagem  israelcomex em 2/10/2018, 23:28

    Olá Jose tudo bem,

    Obrigado pelo retorno. Pode me explicar como faço a alteração? Ainda estou estudando sobre.

    Vlw.
    avatar
    José Machado
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 101
    Registrado : 13/09/2016

    Re: Banco Access em rede lento e travando

    Mensagem  José Machado em 3/10/2018, 14:35

    Bom dia israelcomex


    Pra melhorar o desempenho em rede, você pode fazer quase tudo desvinculado.
    O problema são os relatórios, que de modo prático, não funcionam desvinculados.


    ex: crie um módulo de classe com o nome cls_conexao e adicione este código abaixo


    Código:
    'Importe a Referencia Microsoft Activex Data Objets 2.8 Library
    Private conexao As ADODB.Connection
    Private conexao_string As String

    Public record_set As ADODB.Recordset
       
    Private Sub Initialize()
        Dim database_provider As String
        Dim database_local As String
        Dim database_nome As String
        Dim database_usuario As String
        Dim database_senha As String
       
        database_provider = "Microsoft.ACE.OLEDB.12.0" ' Driver para o banco de dados com extensão .accdb
        'database_local = "" 'Local onde está o banco de dados, ex: C:/
        database_local = "" & CurrentProject.Application.CurrentDb.Name 'como o banco está dentro do projeto
        database_nome = "" 'Nome do arquivo do banco de dados, ex: Data_Base.accdb
        database_usuario = "" 'Usuário do banco de dados, caso você tenha colocado usuário
        database_senha = "" 'Senha para acesso ao banco de dados caso tenha colocado senha
       
        conexao_string = "Provider = " & database_provider & _
        ";Data Source = " & database_local + database_nome & _
        ";USER ID = " & database_usuario & _
        ";PASSWORD = " & database_senha & ";" ' essa é a string da conexao
       
        'instancia o objeto da conexao
        Set conexao = New ADODB.Connection
            conexao.CursorLocation = adUseClient
       
    End Sub
    'Abre a conexao
    Public Sub conexao_abrir()
        On Error GoTo erro
            Initialize
            conexao.Open conexao_string
        Exit Sub
    erro:
        MsgBox "Falha ao abrir a conexao" & Error
    End Sub
    'Fecha a conexao
    Public Sub conexao_fechar()
        On Error GoTo erro
            conexao.Close
            Set conexao = Nothing
        Exit Sub
    erro:
        MsgBox "Falha ao fechar a conexao" & Error
    End Sub
    'Executa a query do tipo INSERT,DELETE, UPDATE
    Public Sub executar_nonquery(query As String)
        On Error GoTo erro
            Set record_set = New ADODB.Recordset
                conexao_abrir
                conexao.Execute (query)
                record_set.Open query, conexao, adOpenStatic, adLockOptimistic
            Set record_set = Nothing
            conexao_fechar
        Exit Sub
    erro:
        MsgBox "Falha ao executar a query" & Error
    End Sub
    'Executa a query do tipo READ/SELECT
    Public Sub executar_recordset(query As String)
    On Error GoTo erro
        Set record_set = New ADODB.Recordset
            record_set.Open query, conexao, adOpenStatic, adLockReadOnly
    Exit Sub
    erro:
        MsgBox "Falha ao executar o record_set" & Error
    End Sub
    'Fecha o SELECT e a conexao
    Public Sub fechar_record_set()
        On Error GoTo erro
            record_set.Close
            Set record_set = Nothing
            conexao_fechar
        Exit Sub
    erro:
        MsgBox "Falha ao fechar o record_set" & Error
    End Sub


    Depois você chama esta classe nos módulos de classe, módulos, formulários e relatórios, ex:
    Para preencher uma lista;
    Código:
    Private conexao As New Cls_Conexao_ADODB ' instancia o objeto da classe conexão

    Private Sub Form_Load()
        preencher_lista_Adodb 'chama o método quando carrega o furmulário
    End Sub

    Sub preencher_lista_Adodb()
        Dim query As String ' variavel tipo String
       
        query = "SELECT * FROM lista" 'atribui os parametros da consulta
       
        On Error GoTo erro
        conexao.conexao_abrir 'abre a conexao
       
        conexao.executar_recordset (query) 'executa a instrução sql
       
        With Me.lista_adodb 'nome da lista no formulario
            .ColumnCount = 2 ' 2 colunas
            .ColumnWidths = "3cm;5cm" ' largura das colunas
            Set .Recordset = Nothing 'limpa a lista
            Set .Recordset = conexao.record_set 'preenche a lista com os dados da conexao
        End With
        conexao.fechar_record_set ' fecha o record_set e a conexao
        Exit Sub
    End Sub


    Com esses códigos, dá para desacoplar as tabelas dos formulários.
    Qualquer coisa, pergunte pelo Zap: +55 013 99672-1583 


    Att
    José Machado
    avatar
    José Machado
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 101
    Registrado : 13/09/2016

    Re: Banco Access em rede lento e travando

    Mensagem  José Machado em 4/10/2018, 13:03

    Amigo

    Segue pacote com os dados VBA

    Att
    José
    Anexos
    CheckWeight.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (946 Kb) Baixado 17 vez(es)

      Data/hora atual: 16/12/2018, 15:46