ClientDataSet auto incremento Key Violation
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.
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
Curtidas 0
Respostas
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.
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
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.
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
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
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
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
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