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

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

Respostas

13/08/2004

Lucas Silva

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);



Responder Citar

13/08/2004

Elias Jr

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.


Responder Citar

13/08/2004

Lucas Silva

 
     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?


Responder Citar