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

    [Resolvido]Capacidade de execução do recordset em banco com tamanho maior que 1GB

    avatar
    vinicius.anna
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 199
    Registrado : 29/04/2011

    [Resolvido]Capacidade de execução do recordset em banco com tamanho maior que 1GB Empty [Resolvido]Capacidade de execução do recordset em banco com tamanho maior que 1GB

    Mensagem  vinicius.anna 22/8/2014, 15:08

    Bom dia

    Em meu sistema possuo uma tabela que contém 2744625 registros. O banco, sem a manutenção através da função (fncRegAgrupI250 - código abaixo) possui um tamanho de 1,2 gb. Quando executo a esta função, o banco excede o tamanho máximo de 2 gb causando uma série de erros e corrompendo o mesmo.

    Algum amigo tem alguma dica de como possa fazer para que, consiga executar a esta função sem exceder o tamanho do banco

    Código:

    Public Function fncRegAgrupI250()
    On Error GoTo trataerro
        Dim db As DAO.Database
        DBEngine.SetOption dbMaxLocksPerFile, 90000000
        Dim Rst As DAO.Recordset, AgAnterior As String
        Set db = CurrentDb
        Set Rst = CurrentDb.OpenRecordset("SELECT Agrupamento FROM reg_I250 ORDER BY Id_Registro")
        Do While Not Rst.EOF
            If IsNull(Rst(0)) Then
                Rst.Edit
                Rst(0) = (Format(AgAnterior, "00000"))
                Rst.Update
            Else
                AgAnterior = Rst(0)
            End If
        Rst.MoveNext
        Loop
        Set Rst = Nothing

    CurrentDb.Execute "Delete reg_I250.Registro FROM reg_I250 WHERE (((reg_I250.Registro)='I200'));"

    sair:
        Exit Function
    trataerro:
        Select Case Err.Number
            Case 3061
                Resume Next
            Case 3049
                Resume Next
            Case Else
                MsgBox "Erro: (fncRegAgrupI250) " & Err.Number & vbCrLf & Err.Description, vbCritical, "Aviso", _
                Err.HelpFile, Err.HelpContext
        End Select
        Resume sair:

    End Function

    Att.
    Vinicius
    avatar
    vinicius.anna
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 199
    Registrado : 29/04/2011

    [Resolvido]Capacidade de execução do recordset em banco com tamanho maior que 1GB Empty Re: [Resolvido]Capacidade de execução do recordset em banco com tamanho maior que 1GB

    Mensagem  vinicius.anna 26/8/2014, 15:08

    Alguma dica?

    Att.
    Vinicius
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Capacidade de execução do recordset em banco com tamanho maior que 1GB Empty Re: [Resolvido]Capacidade de execução do recordset em banco com tamanho maior que 1GB

    Mensagem  Avelino Sampaio 26/8/2014, 16:04

    Olá!

    Se eu não me engano o tamanho máximo suportado pelo recordset é de 1GB. Uma sugestão é montar o seu código de forma que altere em duas etapas. Uma que vai do registro 1 ao 1.500.000 e a outra que va do 1.500.001 ao Final

    Nota. Falatou fechar o recordeset

    rst.close
    Set Rst = Nothing

    Sucesso!









    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso irrestrito ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    vinicius.anna
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 199
    Registrado : 29/04/2011

    [Resolvido]Capacidade de execução do recordset em banco com tamanho maior que 1GB Empty Re: [Resolvido]Capacidade de execução do recordset em banco com tamanho maior que 1GB

    Mensagem  vinicius.anna 28/8/2014, 14:31

    Avelino,

    Bom dia,

    Obrigado pela dica, porém, mesmo fechando o recordset e dividindo função para ser executada por etapas o banco ainda acaba excedendo o tamanho. A única coisa que percebi é que, quando uso o recordset o banco acaba "inchando". Tem mais alguma dica do que possa fazer? Já tentei de N formas mas todas elas tem a mesma característica, ou seja, aumenta o tamanho do banco excessivamente

    Muito obrigado pela atenção

    Att.
    Vinicius
    avatar
    vinicius.anna
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 199
    Registrado : 29/04/2011

    [Resolvido]Capacidade de execução do recordset em banco com tamanho maior que 1GB Empty Re: [Resolvido]Capacidade de execução do recordset em banco com tamanho maior que 1GB

    Mensagem  vinicius.anna 1/9/2014, 20:11

    Avelino,

    Boa tarde

    Me perdoe, mas realmente estou procurando soluções para meu problema, porém, não a encontro. Fiz várias tentativas, com recursos diferentes, mas em todas acabo "estourando" o tamanho do banco. Tem mais alguma dica de algo que possa verificar o tentar fazer? Desmembrei a função para executar mensalmente, mas mesmo assim tenho o mesmo problema..., originalmente o banco está com 400 mb, quando a executo ele vai para 2.1 gb e retorna erro.... a função usada é esta:

    Código:

    Public Function fncAgrupamento1t()
    Dim strSql As String
    Dim rs As DAO.Recordset
    Dim ym As Long
    Dim k As Long
    Dim db As DAO.Database
    DBEngine.SetOption dbMaxLocksPerFile, 90000000
    Set db = CurrentDb
    strSql = "SELECT reg_I250.DataOk, reg_I250.Id_Registro, reg_I250.Registro, reg_I250.Agrupamento, Format(([DataOk]),'mm') AS MesLanc, reg_I250.AgCriado FROM reg_I250 WHERE (((reg_I250.Registro)='I200') AND ((Format(([DataOk]),'mm'))=1)) ORDER BY reg_I250.DataOk, reg_I250.Id_Registro, reg_I250.DataOk;"
    Set rs = CurrentDb.OpenRecordset(strSql)
    rs.MoveFirst
    ym = Val(Format(rs!DataOk, "dd")) 'ano/mes
    k = 0
    Do While Not rs.EOF
        If ym = Val(Format(rs!DataOk, "dd")) Then
            k = k + 1
        Else
            k = 1
            ym = Val(Format(rs!DataOk, "dd"))
        End If
        rs.Edit
            'rs!AgCriado = Val(ym & Format(k, "00000"))
            rs!AgCriado = (Format(k, "00000"))
        rs.Update
        rs.MoveNext
    Loop
    rs.Close
    Set rs = Nothing
    MsgBox "Término da montagem.... Mês 01"

    Att.
    Vinicius
    avatar
    vinicius.anna
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 199
    Registrado : 29/04/2011

    [Resolvido]Capacidade de execução do recordset em banco com tamanho maior que 1GB Empty Re: [Resolvido]Capacidade de execução do recordset em banco com tamanho maior que 1GB

    Mensagem  vinicius.anna 17/9/2014, 18:04

    Boa tarde,

    Com as dicas do Avelino consegui resolver o problema.

    Att.
    Vinicius

    Conteúdo patrocinado


    [Resolvido]Capacidade de execução do recordset em banco com tamanho maior que 1GB Empty Re: [Resolvido]Capacidade de execução do recordset em banco com tamanho maior que 1GB

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/3/2024, 05:34