Duvida Basica

Delphi

05/10/2005

Olá pessoal. queria um help de voces pra um caso bem basico, mas que estou procurando uma melhor solução na performance.

tenho uma tabela com trigger auto incremento.
quando salvo esta tabela eu preciso posicionar o ponteiro no ultimo registro que acabou de ser salvo. e para gerar o codigo eu preciso dar um refresh ou close/open na tabela . no inicio funcionou tudo beleza, so que a tabela agora tem mais de 15.000 registros e demora uns 30 segundos para fazer esse processo. alguem tem uma sugestao nesse modelo com triger que tenha uma melhor performance? agradeco a todos.


Nanfilho

Nanfilho

Curtidas 0

Respostas

Tnaires

Tnaires

05/10/2005

Olá
Não entendo duas coisas:
1 - Qdo vc grava um novo registro, o DataSet não fica posicionado no registro inserido não?
2 - Pq vc precisa dar Close/Open pra gerar o código?
E qual banco vc tá usando? Se vc estiver usando Interbase / Firebird, tente usar um objeto Generator pra fazer a auto-numeração, ao invés de um trigger.
Abraços


GOSTEI 0
Adriano Santos

Adriano Santos

05/10/2005

Olá Não entendo duas coisas: 1 - Qdo vc grava um novo registro, o DataSet não fica posicionado no registro inserido não? 2 - Pq vc precisa dar Close/Open pra gerar o código? E qual banco vc tá usando? Se vc estiver usando Interbase / Firebird, tente usar um objeto Generator pra fazer a auto-numeração, ao invés de um trigger. Abraços


O [b:b540a4cab8]tnaires[/b:b540a4cab8] tem razão, que banco usa? Posta pra gente, se for Interbase / FireBird rapidinho a gente resolve.


GOSTEI 0
Nanfilho

Nanfilho

05/10/2005

foi mal, deixa eu esclarecer melhor
o banco é interbase mesmo
tem generator tambem, e no before insert eu criei uma trigger que alimenta o codigo que é chave primaria ok?
entao tipo, quando dou o post la no delphi ele nao gera o novo codigo, eu preciso dar um refresh na query pra ela trazer o registro com o codigo criado, e quando vc faz isso o ponteiro vai para o primeiro registro, e eu preciso posicioná-lo no ultimo, ai dou um last, e esse processo ta meio lento. espero que tenham entendido, valeu


GOSTEI 0
Adriano Santos

Adriano Santos

05/10/2005

foi mal, deixa eu esclarecer melhor o banco é interbase mesmo tem generator tambem, e no before insert eu criei uma trigger que alimenta o codigo que é chave primaria ok? entao tipo, quando dou o post la no delphi ele nao gera o novo codigo, eu preciso dar um refresh na query pra ela trazer o registro com o codigo criado, e quando vc faz isso o ponteiro vai para o primeiro registro, e eu preciso posicioná-lo no ultimo, ai dou um last, e esse processo ta meio lento. espero que tenham entendido, valeu


O que você precisa é mostra o código que foi ou será gerado certo?
Então você pode fazer um esquema de retornar o código que o auto incremento vai gerar. Isso você consegue com uma Select no Generator:

   SELECT GEN_ID(NOME_DO_GENERATOR, 0) AS CODIGO FROM RDB$DATABASE


Ai no resultado você pode acrescentar 1 para saber qual o proximo numero e etc.


GOSTEI 0
POSTAR