MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into.

    Carvalho
    Carvalho
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 204
    Registrado : 19/01/2013

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into.

    Mensagem  Carvalho em 20/5/2020, 02:53

    Pessoal boa noite,

    Estou com uma bronca enorme, tenho as tabelas vinculas do Mysql hospedada na web no access, até ai tudo bem. mais está acontecendo uma situação muito chata os comando Update, insert into e delete ao serem executadas estão demorando muito mais muito tempo mesmo, pra atualizar 17 registros demora mais de 48seg a 1 min.
    como faço para resolver essa lentidão.

    códigos que uso.

    Código:

    CurrentDb.Execute "update TbLogistica set RespPCP='" & Me!TxtPcp & "', DataPCP='" & Me!TxtData & "' WHERE bloco ='" & TxtBloco & "' and fase ='" & Me!TxtFase & "'"

    Me ajudem por favor.
    Finformática
    Finformática
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 602
    Registrado : 23/03/2010

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty Re: [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into.

    Mensagem  Finformática em 20/5/2020, 16:24

    Caro Amigo,

    Não sei se é seu caso. Tivemos um problema com um amigo aqui do fórum parecido. Tinha Select, criava uma tabela e demorava muito. Pergunto: nesses campos envolvidos, como está a propriedade do campo na tabela? Em indexado? Veja aí.

    Abraços
    Carvalho
    Carvalho
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 204
    Registrado : 19/01/2013

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty Demorando muito ao fazer Update, Delete, Insert Into.

    Mensagem  Carvalho em 20/5/2020, 17:38

    Boa tarde amigo,

    Eu indexei alguns campos, mais creio que isso não seja o problema pois em rede local com vario usuário mexendo e fazando as funções update e outras vai como bala bem rápido.
    porem quando exportei para mysql e fiz as mesmas atividades ficou lenta de mais.
    Finformática
    Finformática
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 602
    Registrado : 23/03/2010

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty Re: [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into.

    Mensagem  Finformática em 20/5/2020, 19:28

    Boa tarde,

    Indexado com duplicação autorizada? Se não for chave primária.

    Abraços
    Carvalho
    Carvalho
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 204
    Registrado : 19/01/2013

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty Demorando muito ao fazer update, delete, insert into.

    Mensagem  Carvalho em 20/5/2020, 20:15

    Boa tarde, isso tem campos que eu coloquei indexado onde tem itens duplicados. Mais não mudou nada.
    FranklinJSP
    FranklinJSP
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 397
    Registrado : 25/02/2016

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty Re: [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into.

    Mensagem  FranklinJSP em 20/5/2020, 21:43

    Boa tarde Carvalho

    As consultas SQL pass-through são utilizadas para enviar comandos directamente para um servidor de base de dados ODBC. Ao utilizar uma consulta SQL pass-through, trabalha directamente com as tabelas do servidor (velocidade) em vez de ter o motor de base de dados Microsoft Jet a processar os dados (lentidão).

    Veja SQL pass-through

    Saludos


    .................................................................................
    Meu Português não é muito bom,
    mas eu gosto de colaborar... em qualquer idioma
    Smile "Access... minha paixão"
    Carvalho
    Carvalho
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 204
    Registrado : 19/01/2013

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty Demorando muito ao fazer update, delete, insert into.

    Mensagem  Carvalho em 20/5/2020, 21:48

    Boa tarde Franklin,
    O pass-through seria uma ótima solução porem não tem como fazer uma ação (VBA) com o pass-through. Eu particularmente não consegui se fosse possível séria uma ótima solução pois o pass-through é realmente muito rápido.
    FranklinJSP
    FranklinJSP
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 397
    Registrado : 25/02/2016

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty Re: [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into.

    Mensagem  FranklinJSP em 22/5/2020, 00:31

    Carvalho

    Veja:

    docs.microsoft.com/pt-br/office/troubleshoot/access/adox-create-sql-pass-through-query

    Saludos


    .................................................................................
    Meu Português não é muito bom,
    mas eu gosto de colaborar... em qualquer idioma
    Smile "Access... minha paixão"
    sardao
    sardao
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 328
    Registrado : 12/03/2011

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty Re: [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into.

    Mensagem  sardao em 22/5/2020, 01:40

    Boas FranklinJSP,

    Eu tou com o mesmo problema e sem servidor.
    Tenho as tabelas todas a ficar no estado Read Only, e com exactamente as mesmas pessoas que tinha anteriormente a usar o sistema, por isso nao sera por ter muita pessoas a aceder.
    Actualmente a empresa ja reportou a Microsoft, estamos a aguardar respostas.

    Carvalho
    Carvalho
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 204
    Registrado : 19/01/2013

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty Demorando muito ao fazer update, delete, insert into

    Mensagem  Carvalho em 22/5/2020, 01:50

    Pessoal obrigado a todos pela força e ajuda e também ao (Damasceno), consegui com a consulta pass-through, com o seguinte código vba.

    Obs: Cuidado com o "case sensitive" a consulta diferencia maiusculas e minusculas!


    Código:

    CurrentDb.QueryDefs("QryUpdate").SQL = "update TbLogistica set RespPCP = """ & Me!TxtPCP & """, DataPCP = """ & Format(Me!TxtData, "YYYY-MM-DD") & """ WHERE bloco = """ & TxtBloco & """;"
        Call CurrentDb.Execute("qryUpdate")


    Eloirp
    Eloirp
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 211
    Registrado : 15/06/2013

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty Re: [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into.

    Mensagem  Eloirp em 27/5/2020, 16:51

    Já pensou em desvincular as tabelas e trafegar via conexão para cada ação?
    eu tenho aplicação 100% on-line em MySQL na uolhost e no início tentei vincular, foi uma perda de tempo, trava, não vai.... enfim optei por trabalhar 100% desvinculado e roda show! Tenho ações de muitos dados e roda rapidinho....

    veja esse exemplo que nem coube na linha do Access e tive que separar em 03 de tantos dados....

    quem sabe fazer um teste com uma movimentação que está lenta e ver se percebe a diferença na sua aplicação!

    Código:

                Call Cnn_Open
                Dim strSqlUp, strSqlUp2, strSqlUp3 As String

                strSqlUp = "UPDATE tbl_Produto SET " & _
                            "EmbDiam='" & Me.EmbDiam & "', EmbEstrias='" & Nz(Me.EmbEstrias, 0) & "', MAJDiam ='" & Nz(Me.MAJDiam, "") & "', InnerDiam ='" & Me.InnerDiam & "', PCD ='" & Me.PCD & "', UndEmb='" & Me.UndEmb & "', EmbPRE='" & Me.Pre & "', Peso=" & Replace(Me.Peso, ",", ".") & ", Dim1='" & Me.Dim1 & "', Dim2='" & Me.Dim2 & "', Dim3='" & Me.Dim3 & "', Dim4='" & Me.Dim4 & "', Comercial='" & Me.Comercial & "', Comercial2='" & Me.Comercial2 & "', Catalogo='" & Me.Catalogo & "', CatalogoWeb='" & Me.CatalogoWeb & "', Obs='" & StrConv(Me.Obs, 1) & "', NCM='" & Me.NCM & "',Pack1='" & Me.Pack1 & "', Pack2='" & Me.Pack2 & "', Conteudo='" & StrConv(Me.Conteudo, 1) & "', Volante='" & StrConv(Me.Volante, 1) & "', Comissao='" & Replace(Me.Comissao, ",", ".") & "', StatusCom='" & StrConv(Nz(Me.StatusCom, ""), 1) & "', ExTipi='" & Nz(Me.NCMExc, "") & "', Origem=" & Me.Origem & ", PesoBruto= " & Replace(Me.PesoBruto, ",", ".") & ", UndCom='" & Me.Und & "', DescricaoNF='" & StrConv(DescricaoNF, 1) & "' " & _
                            "WHERE Codigo = " & Me.Codigo
                cnn.Execute strSqlUp
                
                If IsNull(Me.dtaLancamento) Then
                    strSqlUp2 = "UPDATE tbl_Produto SET " & _
                                "cIpiEnq='" & Nz(Me.cIpiEnq, "") & "',cEnq='" & Nz(Me.cEnq, "") & "', vTotTrib ='" & Nz(Me.vTotTrib, "") & "', cLoad='" & Nz(Me.CLoad, "") & "', Data = '" & Now() & "', User = '" & getUsuarioAtual() & "' " & _
                                "WHERE Codigo = " & Me.Codigo
                Else
                    strSqlUp2 = "UPDATE tbl_Produto SET " & _
                                "cIpiEnq='" & Nz(Me.cIpiEnq, "") & "',cEnq='" & Nz(Me.cEnq, "") & "', vTotTrib ='" & Nz(Me.vTotTrib, "") & "', cLoad='" & Nz(Me.CLoad, "") & "',dtaLancamento='" & Nz(Format(Me.dtaLancamento, "YYYY-MM-DD"), "") & "',dtaLancAno='" & strAnoLanc & "',dtaLancMes='" & strMesLanc & "',dtaLancDia='" & strDiaLanc & "',dtaLancFull=" & strDataLancFull & ", Data = '" & Now() & "', User = '" & getUsuarioAtual() & "' " & _
                                "WHERE Codigo = " & Me.Codigo
                End If
                cnn.Execute strSqlUp2
                
                strSqlUp3 = "UPDATE tbl_Produto_Estoque SET " & _
                            "EstoqueMin=" & Nz(Me.SldEstoqueMin, 0) & ", Localiza='" & StrConv(Me.Localiza, 1) & "', Data = '" & Now() & "', User = '" & getUsuarioAtual() & "' " & _
                            "WHERE Produto = " & Me.Codigo
                cnn.Execute strSqlUp3
                
                MsgBox ("        Dados Alterados com sucesso!        "), vbOKOnly, "SieWeb"

                Set cnn = Nothing: Close
    Carvalho
    Carvalho
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 204
    Registrado : 19/01/2013

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty Re: [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into.

    Mensagem  Carvalho em 27/5/2020, 17:07

    Eloirp boa tarde,
    Como faria essa conexão via VBA ? me mostra um exemplo por favor.
    Eloirp
    Eloirp
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 211
    Registrado : 15/06/2013

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty Re: [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into.

    Mensagem  Eloirp em 27/5/2020, 18:00

    Se sua aplicação é muito grande vai dar trabalho na mudança da sintaxe para conversar com o MySQL, mas depois só alegria....
    para vc ter uma ideia eu tenho o front end dentro do banco e quando o usuário acessa verifica se está atualizado, se não estiver aplicação faz bkp zip e faz bkp do arquivo atual, baixa a nova versão que está no banco, deszipa e deixa pronto para utilizar, tudo sozinho... o arquivo do meu front end tem aprox. 20MB (zipado 4MB) e faz tudo... lógico que neste rotina de baixar o arquivo de dentro do banco demora um pouco, neste caso 13 segundos...

    Quanto a conexão:
    Anexei um arquivo para vc ver como as referências de banco ADO, OLE... se não marcar não completa a conexão (se não me engano, faz muito tempo que fiz essa parte)

    MyslqServidor = Caminho para o Server
    MyslqDatabase =  Nome DB
    MyslqUsuario = Seu User
    MyslqSenha = Sua Senha
    MyslqPorta = 3306 (essa que eu uso, mas veja qual o seu caso)

    Mas para isso vc precisa instalar o driver ODBC no pc onde está o front end e pode conseguir neste link:
    https://dev.mysql.com/downloads/connector/odbc/5.3.html

    Observe que tem diferença entre 32 e 64bits!
    No meu caso eu uso a 5.3 (MySQL ODBC 5.3 ANSI Driver)

    Nos forms vc só chama a conexão e depois de rodar fecha:

    Call Cnn_Open 'abre a conexão
    ... procedimento...
    Set cnn = Nothing: Close 'fecha a conexão


    Inserir:
    Código:
      Call Cnn_Open
       cnn.Execute "INSERT INTO tbl_Numero_OeM (Montadora,Produto,OEM,Status,Data,User) VALUES (" & Me.Montadora & "," & Me.CodigoProd & ",'" & StrConv(Me.OEM, 1) & "','ATIVO','" & Now() & "','" & getUsuarioAtual() & "')"
       MsgBox ("         Dados gravados com sucesso!        "), vbOKOnly, "SieWeb"
       Set cnn = Nothing: Close

    Alterar:
    Código:
      Call Cnn_Open
       Dim strSqlUp As String
       strSqlUp = " UPDATE tbl_Numero_OeM SET OEM = '" & StrConv(Me.OEM, 1) & "', Data = '" & Now() & "', User = '" & getUsuarioAtual() & "' WHERE Codigo = " & Me.Codigo & ";  "
       cnn.Execute strSqlUp
       MsgBox ("        Dados Alterados com sucesso!        "), vbOKOnly, "SieWeb"
       Set cnn = Nothing: Close

    Deletar:
    Código:
      Dim strSqlDel As String
       Call Cnn_Open
       strSqlDel = " DELETE FROM tbl_ProdutoKit WHERE  Codigo = " & Me.ListaKit.Column(0) & " "
       cnn.Execute strSqlDel
       Set cnn = Nothing: Close

    Consultar:
    Código:
       Call Cnn_Open
        strRS = "SELECT tbl_Numero_OeM.codigo, tbl_Numero_OeM.Montadora, tbl_Numero_OeM.OEM " & _
                "FROM tbl_Numero_OeM " & _
                "WHERE (((tbl_Numero_OeM.codigo)='" & Me.SelCod & "') AND ((tbl_Numero_OeM.Status)='ATIVO'))"
        Set rs = cnn.Execute(strRS)
        
        If Not rs.BOF Then
            Me.Codigo.Value = rs!Codigo
            Me.Montadora = rs!Montadora
            Me.OEM = rs!OEM
        Else
            MsgBox "   Nenhum dados localizado!   ", vbInformation + vbOKOnly, "SieWeb"
        End If
        
        Set rs = Nothing: Close
        Set cnn = Nothing: Close

    Módulo da Conn:
    Código:
    Public Sub Cnn_Open()
    On Error GoTo ErrConn
    DoCmd.SetWarnings False
        
        If cnn.State = 1 Then
            cnn.Close
        End If
        
        Call MySQL_Server
        
        cnn.ConnectionString = "Driver={MySQL ODBC 5.3 ANSI Driver};Server=" & MyslqServidor & ";Database=" & MyslqDatabase & ";User=" & MyslqUsuario & "; Password=" & MyslqSenha & "; Port=" & MyslqPorta & ";Option=-3;"
        cnn.Open

        Exit Sub

    ErrConn:
        Select Case err.Number
            Case -2147467259
                MsgBox "     Sem conexão com o banco de dados, verifique sua conexão de internet ou contate o administrador!     ", vbOKOnly, "SieWeb"
            Case Else
                MsgBox err.Number & " " & err.Description
        End Select
        DoCmd.Quit
        Exit Sub
    DoCmd.SetWarnings True
    End Sub
    Anexos
    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. AttachmentSieWeb.pdf
    Você não tem permissão para fazer download dos arquivos anexados.
    (279 Kb) Baixado 19 vez(es)
    Eloirp
    Eloirp
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 211
    Registrado : 15/06/2013

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty Re: [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into.

    Mensagem  Eloirp em 27/5/2020, 18:19

    esqueci de comentar, no módulo da Conn crie as seguintes vairiáveis:

    Option Compare Database
    Public cnn As New ADODB.Connection
    Public rs As New ADODB.Recordset
    Global sMySQL As String
    Global strRS As String


    'Variaveis de conexão ao servidor MySQL
    Global MyslqServidor As String
    Global MyslqUsuario As String
    Global MyslqSenha As String
    Global MyslqPorta As String
    Global MyslqDatabase As String

    Carvalho
    Carvalho
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 204
    Registrado : 19/01/2013

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty Re: [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into.

    Mensagem  Carvalho em 28/5/2020, 00:04

    Cara! como eu digo, se for fazer uma casa faça bem feita, se não depois vai ter mais dor de cabeça do quê agora.

    se ficar do jeito que falas vale apena o tempo gasto!

    você é demais obrigado pela dica vou olhar agora todo o material e por em pratica.

    Obrigado Eloirp.
    Eloirp
    Eloirp
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 211
    Registrado : 15/06/2013

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty Re: [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into.

    Mensagem  Eloirp em 28/5/2020, 00:09

    Sugiro fazer um teste amigo e vai sentir a real condição que vai ficar.

    Caso tenha dificuldades em criar a conexão inicial me avise que te ajudo a fazer rodar, depois é só seguir o barco...

    Carvalho
    Carvalho
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 204
    Registrado : 19/01/2013

    [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into. Empty Re: [Resolvido]Demorando muito ao fazer Update, Delete, Insert Into.

    Mensagem  Carvalho em 28/5/2020, 00:15

    certo, estou fazendo os testes agora mesmo.

      Data/hora atual: 4/12/2020, 08:18