Fórum auto numeração em access #243934
21/07/2004
0
vlw
galera
Slack
Curtir tópico
+ 0Posts
21/07/2004
Sandra
No access existe o tipo de campo ´autonumeração´... não poderia ser feito diretamente com ele? Se for o caso, basta utilizá-lo no momento da criação da tabela.
Gostei + 0
31/01/2005
Alexsandro
Criei uma tabela Access com o campo auto incrmento, mas quando vou incluir um novo registro o campo chave não está incrementado. O que preciso fazer no componente? Tem algum tratamento?
Muito Obrigado,
Alex
Gostei + 0
01/02/2005
Sandra
Alexsandro,
Que eu me lembre, não há necessidade de nenhum tratamento nos componentes de acesso, pelo menos no programainha (bem simples mesmo) que fiz. [b:331b9cfb3a]Acho[/b:331b9cfb3a] que o código só aparecia depois que os dados são gravados na tabela.
Porém, quais componentes está usando?
Gostei + 0
01/02/2005
Alexsandro
Estou usando um campo DBEDIT do Delphi. Já disseram aqui que a auto numeração só aprece depois de eu salvar os dados, mas não é isso que eu quero. Eu gostaria de ao pressionar o botão de incluir que o delphi me trouxesse automaticamente o novo registro com o novo código...
Agradeço sua ajuda.
Alex
Gostei + 0
01/02/2005
Unk
Gostei + 0
01/02/2005
Alexsandro
Percebi que não tem jeito, eu preciso implementar na mão o recurso da auto-numeração, e por isso gostaria de saber em qual evento devo implementar a rotina. Vocês teriam algum exemplo?
Obrigado,
Alex
Gostei + 0
01/02/2005
Alexsandro
Percebi que não tem jeito, eu preciso implementar na mão o recurso da auto-numeração, e por isso gostaria de saber em qual evento devo implementar a rotina. Vocês teriam algum exemplo?
Obrigado,
Alex
Gostei + 0
02/02/2005
Sandra
Experimente esse exemplo bem simples, no evento onNewRecord da tabela que necessita da auto incrementação:
with Query1 do begin Close; SQL.Text := ´Select Max(SeuCampo) from SuaTabela´; Open ; If Fields[0].isNull then SuaTabela.FieldByName(´SeuCampo´).asInteger := 1 else SuaTabelaSeuCampo.AsInteger := Fields[0].AsInteger + 1; end;
Espero que ajude.
Gostei + 0
03/02/2005
Alexsandro
Alex
Gostei + 0
03/02/2005
Icheuk
Talvez o tipo de problema que voce teve foi por ter outras tabelas associadas a ela e por isso precisa desta chave(auto incremento) coreto, eu ja tive este problema.
Qual solucao que achei mais viavel, dentro do meu banco de dados eu criei um campo denominado CHAVE neste campo eu gera um numero composto por (Empresa+Usuario+data+Hora) pois o sistema é multi empresa, ou seja desta forma nao vai haver duplicidade ok.
Bom no momento que adicionei um registro o campo auto incremente ainda nao foi criado pois o access deve garantir que se o usuario cancelar a operacao este numero de auto incremente nao vai ser perdido ou seja ele so disponibiliza o numero ao gravar o registro efetivamente, pois voce pode estar em rede com varios usuarios concorrendo ao mesmo tempo por um registro gravado, mas voltando a logica.
Esta chave eu guardo em uma variavel no sistema e assim que gravar o registro e nao houver nenhum erro na gravacao eu executo uma pesquisa neste registro atraves desta chave, neste momento eu passo a ter o codigo do auto incremente e posso associa-lo a outras tabelas relacionadas a este cadastro.
De qualquer forma a Solucao da Sandra tambem é bem legal.
Eu cheguei a esta solucao devido a outras necessidades que possuia no momento do desenvolvimento.
Mas espero ter esclarecido a logica do access para disponibilizar a chave de auto incremente apenas apos gravar o registro efetivamente.
Um grande abraco e boa sorte.
Ivan
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)