RESETAR NUMERAÇÃO AUTOMÁTICA [ô]DAO[ô]

 Tópico anterior Próximo tópico Novo tópico

RESETAR NUMERAÇÃO AUTOMÁTICA [ô]DAO[ô]

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#473963 - 15/05/2017 19:41:15

JAKSONLZ
JABORA
Cadast. em:Maio/2016


Pessoal estou tendo dificuldades em alterar um código que usa conexão 'ADO', gostaria de converter para 'DAO', alguém sabe me dizer se é possível?
Este código Limpa uma Tabela e Reseta a AutoNumeração Automática, eu sei que não é muito recomendado fazer isso, mais pra mim é preciso...se alguém puder ajudar...

Segue código 'ADO':

Referência: http://allenbrowne.com/func-adox.html#DeleteAllAndResetAutoNum

Public Function DeleteAllAndResetAutoNum(cnn As Object, name_Bank As String, strTable As String) As Boolean
    'Purpose:   Delete all records from the table, and reset the AutoNumber using ADOX.
    '           Also illustrates how to find the AutoNumber field.
    'Argument:  Name of the table to reset.
    'Return:    True if sucessful.
    
    'Refer: http://allenbrowne.com/func-adox.html#DeleteAllAndResetAutoNum
    
    Dim cat    As New ADOX.Catalog
    Dim tbl    As ADOX.Table
    Dim col    As ADOX.Column
    Dim strSQL As String
  
    'Delete all records.
    strSQL = "DELETE FROM [" & strTable & "];"
    cnn.Execute strSQL
    
    'Find and reset the AutoNum field.
    cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\" & name_Bank & ".mdb;" & "Jet OLEDB:Database Password=" & MyDbPassword & ";"
    Set tbl = cat.Tables(strTable)

    For Each col In tbl.Columns

        If col.Properties("Autoincrement") Then
            col.Properties("Seed") = 1
            DeleteAllAndResetAutoNum = True
        End If

    Next

End Function  




#473964 - 15/05/2017 20:36:23

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Porque "é preciso"?

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#473967 - 15/05/2017 20:46:58

JAKSONLZ
JABORA
Cadast. em:Maio/2016


Citação:
:
Porque "é preciso"?


porque tipo assim minhas Tabelas serão atualizadas com varios registros diariamente, mais 'talvez', nem todas, vai chegar num determinado tempo que terei que zera-lá, então eu estava pensando se era possível zerar, só por questão do Indice mesmo, pra não ficar muito grande...  



Resposta escolhida #473969 - 15/05/2017 21:22:11

DS2T
BARRA MANSA
Cadast. em:Novembro/2010


Após apagar os registros da tabela, dá um Drop no campo de auto-incremento e recria ele.
Mas isso realmente é necessário?
Um campo de autonumeração no Access possui 32 bits para armazenamento. Isso chega na casa dos Bilhões.

Vamos supor que você armazene 10 mil registros por dia: Você precisaria de aproximadamente 214748 dias para estourar o limite, isso dá em média, 7158 meses... que representa mais de 596 anos. Olha que doido...

"Cansei de frases intelectuais" - Eu mesmo


#473970 - 15/05/2017 21:52:46

JAKSONLZ
JABORA
Cadast. em:Maio/2016


Última edição em 15/05/2017 21:53:31 por JAKSONLZ

Citação:
:
Após apagar os registros da tabela, dá um Drop no campo de auto-incremento e recria ele.


Encontrei algo aqui:

[url=http://] https://access-programmers.co.uk/forums/showthread.php?t=67389 [/url]

Citação:
:
Um campo de autonumeração no Access possui 32 bits para armazenamento. Isso chega na casa dos Bilhões.

Vamos supor que você armazene 10 mil registros por dia: Você precisaria de aproximadamente 214748 dias para estourar o limite, isso dá em média, 7158 meses... que representa mais de 596 anos. Olha que doido...


Gostei desta parte, acho que vou deixar quieto...pelo menos por enquanto....kkkkk




 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por JAKSONLZ em 15/05/2017 21:55:04