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

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

    Compartilhe

    vinicius.anna
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

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

    Mensagem  vinicius.anna em Sex 22 Ago 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

    vinicius.anna
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

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

    Mensagem  vinicius.anna em Ter 26 Ago 2014, 15:08

    Alguma dica?

    Att.
    Vinicius
    avatar
    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

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

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

    Mensagem  Avelino Sampaio em Ter 26 Ago 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!








    vinicius.anna
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

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

    Mensagem  vinicius.anna em Qui 28 Ago 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

    vinicius.anna
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

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

    Mensagem  vinicius.anna em Seg 01 Set 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

    vinicius.anna
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

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

    Mensagem  vinicius.anna em Qua 17 Set 2014, 18:04

    Boa tarde,

    Com as dicas do Avelino consegui resolver o problema.

    Att.
    Vinicius

      Data/hora atual: Sex 23 Jun 2017, 21:38