Setar registro para edição através de consulta

Delphi

13/08/2004

Saudações,
tenho um aplicativo de cadastro que terá em breve cerca de 32.000 registros. No form de cadastro, caso alguém queira fazer alguma alteração ou exclusão - e não use o dbnavigator, lógico - eu coloquei um edit e um speedbutton com uma query em que o usuário digita o código desejado e o form exibe o resultado, eis algumas linhas do onclick do speedbutton:
with query1 do
   begin
     close;
     parambyname(´cad´).asinteger := strtoint(edcod.text);
     open;
     if recordcount = 0 then
       showmessage(´Nenhum Registro Selecionado!´);
   end;
   dbficha.text := inttostr(query1.fieldbyname(´ficha´).asinteger);
   dbcadastro.text := inttostr(query1.fieldbyname(´cad_aluno´).asinteger);
(lembrando que o parâmetro cad é o número da ficha). Até aí tud bem, o problema é que quando eu tento alterar ou excluir a tabela seta para o primeiro registro, ou seja, mesmo com esta consulta é como se a tabela continuasse setada no primeiro registro. gostaria de saber como faço para setar o registro selecionado para editar ou excluir. Muito obrigado.


Elias Jr

Elias Jr

Curtidas 0

Respostas

Lucas Silva

Lucas Silva

13/08/2004

Elias,
 with query1 do 
   begin 
     close; 
     parambyname(´cad´).asinteger := strtoint(edcod.text); 
     open; 
     if IsEmpty then  // Assim Fica bem + rapido;
        showmessage(´Nenhum Registro Selecionado!´)
      else
         Delete; // Isso deleta o registro que está apontado na query
   end; 
   dbficha.text := inttostr(query1.fieldbyname(´ficha´).asinteger); 
   dbcadastro.text := inttostr(query1.fieldbyname(´cad_aluno´).asinteger);



GOSTEI 0
Elias Jr

Elias Jr

13/08/2004

Saudações Lucas,
utilizei a sua dica e ela funciona quando quero excluir mas quando tento alterar acontece o mesmo em cada dbedit que eu clico (ou seja, se eu quero alterar o nome, quando clico no edit o nome volta para o do primeiro registro). Vou continuar tentando resolver isso. Mesmo assim obrigado por mostrar o caminho.


GOSTEI 0
Lucas Silva

Lucas Silva

13/08/2004

 
     if not IsEmpty then 
       Edit; 

Depois disto é só atribuir os valores aos campos, e salvar as alterações...
  FieldByName(´campo´).asString := Edit1.text;
  post; // para salvar;


seria isto?


GOSTEI 0
POSTAR