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

    Diferença de Velocidade de Processamento entre o Insert Into e o OpenRecordset para inserir dados em tabelas do Access.

    avatar
    Lauro Ribeiro
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 15/02/2023

    Diferença de Velocidade de Processamento entre o Insert Into e o OpenRecordset para inserir dados em tabelas do Access. Empty Diferença de Velocidade de Processamento entre o Insert Into e o OpenRecordset para inserir dados em tabelas do Access.

    Mensagem  Lauro Ribeiro 13/7/2023, 14:30

    No código abaixo, você notará que a velocidade de processamento do Openrecordset pode ser de 40 a 200 vezes mais rápida do que usando o Insert Into no Access Vba.
    Para o texte, eu criei uma tabela chamada Table1 e coloquei as colunas de A até J em texto curto. A coluna A será preenchida com a letra 'A', a B com a letra 'B' e assim sucessivamente.
    Com o DoCmd.RunSQL foram gastos 14,1 segundo, com o Openrecordset foram gastos 0,07 segundos. Ou seja 200 vezes mais rápido.

    Private Sub carga()
       Dim rst As Recordset
       Dim vStrSQL As String
       Dim vLgTimer As Long
       Dim vLgI As Long
           'vLgTimer = Timer
           vStrSQL = "SELECT * FROM Table1;"
           Set rst = CurrentDb.OpenRecordset(vStrSQL)
           vStrSQL = "INSERT INTO Table1 (A, B, C, D, E, F, G, H, I, J) " & _
                   "VALUES ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J');"
           If InputBox("Insira: " & vbCr & "1 - para processar DoCmd.RunSQL;" & vbCr & "2 - para processar OpenRecordset;", "Tempo de Processamento...", 1) = 1 Then
               vLgTimer = Timer
               For vLgI = 0 To 1000
                   DoCmd.RunSQL vStrSQL
               Next
               MsgBox "Processado em " & Left(Abs((Timer - vLgTimer)), 4) & " segundos usando o DoCmd.RunSQL"
           Else
               vLgTimer = Timer
               For vLgI = 0 To 1000
    'Não coloque o - Set rst = CurrentDb.OpenRecordset(vStrSQL) - dentro de estruturas de repetição, pois atrasa o processamento.
                   rst.AddNew
                       rst!A = "A": rst!B = "B": rst!C = "C": rst!D = "D": rst!E = "E": rst!F = "F": rst!G = "G": rst!H = "H": rst!I = "I": rst!J = "J"
                   rst.Update
               Next
               MsgBox "Processado em " & Left(Abs((Timer - vLgTimer)), 4) & " segundos usando o OpenRecordset"
           End If
    End Sub

    Outro fator importante é não colocar o Openrecordset dentro da Sub ou função que será chamada para fazer a carga. Isso porque o Set...Openrecordset para ser aberto exige um tempo bem significativo de processamento. No caso de uso de um Loop, For, While, o Set...Openrecordset não deve ficar dentro destas estruturas de repetição. Para tal, declare a variável recordset como pública ou global, e o set...openrecordset fora da estrutura de repetição. Assim o processamento fica top, num piscar de olhos.


    Última edição por Lauro Ribeiro em 14/7/2023, 12:49, editado 1 vez(es)
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3492
    Registrado : 13/12/2016

    Diferença de Velocidade de Processamento entre o Insert Into e o OpenRecordset para inserir dados em tabelas do Access. Empty Re: Diferença de Velocidade de Processamento entre o Insert Into e o OpenRecordset para inserir dados em tabelas do Access.

    Mensagem  Alexandre Fim 13/7/2023, 14:51

    Lauro bom dia,

    O teste é interessante, porém, equivocado.

    O comando "DoCmd.RunSQL" é nativo do Access e o "OpenRecordset" é um metodo proveniente do VB (DAO), onde existem diferenças em seu processmento.

    É isso

    Att,

    Alexandre Fim


    .................................................................................
    Arrow  Marcar tópico como Resolvido: clique aqui
    Arrow  Postar anexos no fórum: clique aqui

    Diferença de Velocidade de Processamento entre o Insert Into e o OpenRecordset para inserir dados em tabelas do Access. Setinf11
    Sistemas e Tecnologia Ltda
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    Diferença de Velocidade de Processamento entre o Insert Into e o OpenRecordset para inserir dados em tabelas do Access. Empty Re: Diferença de Velocidade de Processamento entre o Insert Into e o OpenRecordset para inserir dados em tabelas do Access.

    Mensagem  JPaulo 13/7/2023, 17:55

    Veja a mensagem Nº7 deste tópico respondido pelo Avelino Sampaio;

    https://www.maximoaccess.com/t10778-saldo-de-conta-corrente


    .................................................................................
    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

    Diferença de Velocidade de Processamento entre o Insert Into e o OpenRecordset para inserir dados em tabelas do Access. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    Diferença de Velocidade de Processamento entre o Insert Into e o OpenRecordset para inserir dados em tabelas do Access. Folder_announce_new 102 Códigos VBA Gratuitos...
    Diferença de Velocidade de Processamento entre o Insert Into e o OpenRecordset para inserir dados em tabelas do Access. Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    Diferença de Velocidade de Processamento entre o Insert Into e o OpenRecordset para inserir dados em tabelas do Access. Empty Re: Diferença de Velocidade de Processamento entre o Insert Into e o OpenRecordset para inserir dados em tabelas do Access.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 14:00