bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
zerar um campo tipo numeração automática

Zerar um campo, tipo Numeração Automática

Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito. 

Veja como comprar e saiba mais sobre o material oferecido,  clicando aqui.

Open v3

 

Usuário Ricardo:

Olá!

Como posso reiniciar um campo (coluna) de tabela, tipo "Numeração Automática", por código VBA?

Desde já, agradeço a sua ajuda.

Suporte:

Ricardo,

se a tabela está zerada (sem registros), basta usar o Compactar e Reparar.  Caso contrário, utilize o seguinte código:

'Criando uma nova tabela sem o campo Autonumeração
currentdb.Execute "SELECT Classe,código,seq INTO tblClasse_tmp FROM tblClasse;"
'Acrescentando o campo Autonumeração à nova tabela
currentdb.Execute "ALTER TABLE tblClasse_tmp ADD COLUMN Id AUTOINCREMENT;"
'Deletando a tabela antiga
docmd.DeleteObject acTable ,"tblClasse"
'Renomeando a nova tabela
docmd.Rename "tblClasse",acTable ,"tblClasse_tmp"

A sua tabela está relacionada a outra tabela?

Nota: não esqueça de  fazer antes, um backup de sua base de dados.

Usuário Ricardo:

Olá, Avelino!

Fiz o teste utilizando o currentdb.execute e funcionou bem até criar a nova tabela.  Ao deletar a antiga, apresentou a seguinte mensagem:

"O mecanismo de banco de dados não pôde bloquear a tabela 'TB_TRABALHO', pois ela já está sendo usada por outra pessoa ou processo."

'Criando uma nova tabela sem o campo Autonumeração
CurrentDb.Execute "SELECT trb_codbol,trb_valor INTO TB_TRABALHO_TMP FROM TB_TRABALHO;"
'Acrescentando o campo Autonumeração à nova tabela
CurrentDb.Execute "ALTER TABLE TB_TRABALHO_TMP ADD COLUMN trb_seq AUTOINCREMENT;"
'Acrescentando o campo Autonumeração como chave primária
CurrentDb.Execute "ALTER TABLE TB_TRABALHO_TMP ADD CONSTRAINT pkey PRIMARY KEY (trb_seq);"
'Deletando a tabela antiga
DoCmd.DeleteObject acTable, "TB_TRABALHO"
'Renomeando a nova tabela
DoCmd.Rename "TB_TRABALHO_TMP", acTable, "TB_TRABALHO"

Suporte:

Ricardo,

a mensagem é clara.  A tabela está em uso e portanto não pode ser excluída.  O formulário em questão tem origem na tabela TB_TRABALHO? Se sim, este é o problema.

Usuário Ricardo:

Olá Avelino!

Fiz um formulário simples e não está associado a nenhuma tabela.  O propósito deste formulário é executar o código proposto.  Mesmo assim, o problema acontece.

Criei um banco de teste com dois formulários: - o primeiro utiliza a tabela dentro de um sub-formulário, o segundo executa somente o procedimento mencionado acima.

Suporte:

Ricardo,

como havia previsto, o formulário frmX está associado à tabela tblTrab. É preciso primeiro desvincular o formulário para que funcione.

Segue a modificação do código:

'Desvinculando o formulário
Me.RecordSource = ""
'Criando uma nova tabela sem o campo Autonumeração
CurrentDb.Execute "SELECT tbltrabcli,tbltrabval INTO tbltrab_tmp FROM tbltrab;"
'Acrescentando o campo Autonumeração à nova tabela
CurrentDb.Execute "ALTER TABLE tbltrab_tmp ADD COLUMN tbltrabseq AUTOINCREMENT;"
'Acrescentando o campo Autonumeração como chave primária
CurrentDb.Execute "ALTER TABLE tbltrab_tmp ADD CONSTRAINT pkey PRIMARY KEY (tbltrabseq);"
'Deletando a tabela antiga
DoCmd.DeleteObject acTable, "tbltrab"
'Renomeando a nova tabela
DoCmd.Rename "tbltrab", acTable, "tbltrab_tmp"
'voltando a vincular o formulário
Me.RecordSource = "tbltrab"

Usuário Ricardo:

Olá, Avelino!

Está funcionando!

Mais uma vez, obrigado pela ajuda.


 

 


Não há comentário

Envie seu comentário: