Fórum ClientDataSet auto incremento Key Violation #217599

01/03/2004

0

Olá.

Como trabalhar com campos auto incremento no ClientDataSet ?

Sempre que eu adiciono um novo registro ocorre um ´Key Violation´ porque o registro anterior não foi enviado ao Banco de Dados.

Eu tenho sempre que dar um ApplyUpdates antes de adicionar um novo registro?

Obrigado.


Emanoel

Emanoel

Responder

Posts

01/03/2004

Buosinet

Seguinte, amigão:

A filosofia do ClientDataSet é não ficar acessando o banco a todo momento, voce deve fazer o cache em memória. O problema é que você também não pode controlar isso localmente, pois voce pode ter o problema de vários usuários estarem inserindo ao mesmo tempo, o que vai gerar problema na sua sequencia.

Assim, ou você aplica o cache a cada post, e calcula a chave no evento BeforeUpdateRecord do Provider, ou abandona a idéia da chave sequencial nos seus projetos. Eu, particularmente, adotei a segunda opção e tudo funciona muito bem.

Caso precise de mais ajuda, é só falar.

Buosi.


Responder

Gostei + 0

02/03/2004

Emanoel

Ok.

E quando você precisa gerar um código seqüencial, o que você faz? Por exemplo, em um cadastro de clientes para gerar o código, ou produtos, etc...

Como fazer isto em um programa de vendas? Onde cada venda possui vários produtos?

Obrigado.


Responder

Gostei + 0

02/03/2004

Khundalini

O estimado colega que não optou em usar TClientDataSet com campos autoincrementais está equivocado. No site codecentral.borland.com, existe uma dica muito boa de como lidar com campos autoincrementais.

Eu disponho tanto da materia como do código fonte ilustrando a técnica. Quem quiser, me peça em PVT. Não responderei a qualquer um que pedir esse material na lista.

[]s


Responder

Gostei + 0

02/03/2004

Khundalini

Melhor ainda! Achei o link com o artigo completo (em inglês) e nele, consta o link pra baixar o código ilustrando a técnica.

http://community.borland.com/article/0,1410,20847,00.html

Provavelmente, pode ser pedido para que você registre-se no site para poder acessar o conteúdo.


[]s
Rubem Rocha
Manaus, AM


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar