Jump to content
progster

[Resolvido] Numeração Automática

Recommended Posts

progster

Boa Noite.

Surgiu-me um problema que não estou a conseguir resolver. Estou a trabalhar com Visual Studio.net 2003, e MS Access.

Será que alguém me pode ajudar, com a questão da numeração automática?

Tenho um campo ID definido em MS Access, com numeração automática. Até aqui tudo bem.

O problema é por exemplo em 5 registos, se elimino o registo número 3, a coluna ID não fica ordenada sequencialmente.

A minha questão é: Como é que eu faço para a coluna ficar ordenada sequencialmente através do form em VB?

Cumprimentos.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
Caça

Não o podes fazer, é assim que funciona. Não sei se no access também é possível reiniciar os campos numeração automática.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
jpaulino

O problema é por exemplo em 5 registos, se elimino o registo número 3, a coluna ID não fica ordenada sequencialmente.

Imagina que a tua aplicação é de clientes e que esses clientes efectuam compras online. Numa tabela tens os números dos clientes e noutra tens os registos de compras associadas a esse cliente. Não podes simplesmente apagar um cliente e criar um novo com o mesmo número, pois o histórico que estava associado ao cliente anterior, ficaria agora associado ao novo cliente.

Também não podes apagar o histórico, porque se existiram movimentos (compras) tens de contabiliza-las e têm de ficar no histórico, mesmo que esse cliente cancele a conta..

Por isso o campo autonumber (no caso do Access) é automático e normalmente cancelas um cliente e não apagas na realidade. Deixa é de ser visível na tua aplicação.

Os restantes situações onde usas o autonumbers são normalmente irrelevantes.

Share this post


Link to post
Share on other sites
bioshock

Não sei se no access também é possível reiniciar os campos numeração automática.

Sim, é possível, mas com um entrave: quando fazes o reset, ele faz reset a tudo.

Share this post


Link to post
Share on other sites
Caça

Sim, é possível, mas com um entrave: quando fazes o reset, ele faz reset a tudo.

O que é que queres dizer com tudo? Não é só na tabela em questão?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
bioshock

O que é que queres dizer com tudo? Não é só na tabela em questão?

Sim, só na tabela em questão mas nos campos todos. O que ele queria era fazer um reset apenas a um campo, algo que é impossível sendo numeração automática e má prática também, como o @jpaulino referiu.

Share this post


Link to post
Share on other sites
progster

Não o podes fazer, é assim que funciona. Não sei se no access também é possível reiniciar os campos numeração automática.

No Access é possivel, não através de um form, mas abrindo a tabela em vista de estrutura, elimina-se a coluna, e depois é só voltar a cria-lá.

Deste modo os registos aparecem ordenados sequencialmente.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
progster

Por isso o campo autonumber (no caso do Access) é automático e normalmente cancelas um cliente e não apagas na realidade. Deixa é de ser visível na tua aplicação.

Ok. Agora percebo por que é que quando se elimana um registo, os  restantes não ficam ordenados sequencialmente.

Vou estudar melhor a situação, e provavelmente vou optar por colocar manualmente o Id de registo.

Obrigado a todos pela ajuda.

Cumprimentos.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
progster

Boa tarde.

Tal como referido anteriormente, defini o tipo de dados do campo Id para Número.

Agora surgiu-me outro problema que não estou a conseguir resolver:

DsCliente11.Clear()
OleDbDataAdapter1.Fill(DsCliente11)
Mostra_Dados()

Por exemplo em 5 registos, elimino o número 2. Se inserir um novo registo, funciona bem

O problema é quando volto a inserir um registo com o Id 2, dá-me erro na segunda linha.

O erro é:

An unhandled exception of type 'System.Data.ConstraintException' occurred in system.data.dll

Additional information: Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.

Será que me podem ajudar novamente? Desde já fico agradecido.

Cumprimentos.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
Caça

Estás a tentar violar a chave primária.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
progster

Certo. Mas será que á alguma maneira de dar a volta á situação?


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
Caça

Sim, se quiseres perder a integridade dos dados, apaga a chave primária. Resta-me dizer que depois vais ter problemas


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
progster

Sim. Acabei agora mesmo de testar essa possibilidade.

Ok. Obrigado pelo esclarecimento.

Cumprimentos.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.