ClientDataSet auto incremento Key Violation

Delphi

01/03/2004

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

Curtidas 0

Respostas

Buosinet

Buosinet

01/03/2004

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.


GOSTEI 0
Emanoel

Emanoel

01/03/2004

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.


GOSTEI 0
Khundalini

Khundalini

01/03/2004

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


GOSTEI 0
Khundalini

Khundalini

01/03/2004

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


GOSTEI 0
POSTAR