Array
(
)

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

Elias Jr
   - 13 ago 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:
#Código

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.


Lucas Silva
   - 13 ago 2004

Elias,
#Código

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



Elias Jr
   - 13 ago 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.


Lucas Silva
   - 13 ago 2004

#Código


if not IsEmpty then
Edit;

Depois disto é só atribuir os valores aos campos, e salvar as alterações...
#Código

FieldByName(´campo´).asString := Edit1.text;
post; // para salvar;


seria isto?