Posicionar o cursor depois do insert

SQL

Delphi

12/11/2024

Pessoal,

Tenho um Insert que copia os dados do registro selecionado no DbGrid e insere na mesma tabela.
Uso esse comando para duplicar um registro na mesma tabela.

Após inserir, aplico um update para alterar um campo especifico deste novo registro. Para isso busco o ultimo código em meu generator
Em seguida fecho e abro a tabela para listar o novo registro e os demais que já estavam no filtro

Tudo funcionando bem, porém gostaria de posicionar o cursor no registro recém inserido, para mostrar ao usuário.

Não gostaria de usar um select, porque preciso manter os registros já listados no dbgrid
Renan

Renan

Curtidas 0

Melhor post

Arthur Heinrich

Arthur Heinrich

19/11/2024

Quando se utiliza um banco de dados relacional, não se pode esperar que uma ordem específica seja respeitada, a menos que se utilize um order by pelas colunas desejadas.

No seu caso, entendo que possui uma PK numérica, gerada de forma sequencial. Você pode utilizar a query com order by nesta coluna e executar o método dataset.last, que posiciona o cursor no último registro.

No entanto, vale lembrar que, em um ambiente multi-usuários, isto vai posicionar o cursor no último registro da tabela, não necessariamente o inserido por você.

Deixando o problema de lado, embora o Delphi possua o componente DBGrid, retornar dados não relacionados ou com base em filtros do usuário, pode levar a problemas, já que, dependendo da base, pode significar a leitura de bilhões de linhas e consumo excessivo de recursos.
GOSTEI 1

Mais Respostas

Renan

Renan

12/11/2024

Olá, Arthur.

Acabei armazenando a chave primária numa variável, logo após o post e em seguida um locate.

A princípio tudo funcionou
GOSTEI 0
POSTAR