Duvidas facil SQL

Delphi

18/07/2003

ola estou passando o seguinte para um query

query1.add.close;
query1.add.clear;
query1.add.sql(´select codigo, aluno, ativo´);
query1.add.sql(´from tbalunos´);
query1.add.sql(´where ativo=´Sim´´);
query1.open;

dai estes alunos aparecem em uma grid, quero que ao clicar em um botao por exemplo ´desativar´ o registro selecionado ex. aluno ´marcelo´ que esta ativo=Sim passe para ativo=Não...

obrigado aguardo resposta....


Zacca

Zacca

Curtidas 0

Respostas

Datorre

Datorre

18/07/2003

Olá...

Use outra query, nela, vc faz um update, se for um registro só é fácil pegar o registro q vc quer alterar, tipo Query1.Fields[0].asstring pegará o promeiro campo da tabela seleciona.
Caso seja mais de um registro, faça um loop até terminar as alterações...


GOSTEI 0
Jairroberto

Jairroberto

18/07/2003

Olá, Zacca!

Veja um exemplo:

Defina a propriedade SQL de um componente TQuery da seguinte forma:
Query2.SQL.Text := ´UPDATE tbalunos SET ativo = "Não" WHERE codigo = :codigo´;


No evento OnClick do botão desativar escreva o seguinte código:
Query2.ParamByName(´codigo´).AsInteger := Query1.FieldByName(´codigo´).AsInteger;
Query2.ExecSQL;

Query1.Close;
Query1.Open;



Um abraço,
Jair


GOSTEI 0
Zacca

Zacca

18/07/2003

irei testar este procedimento que me passaram mas aindao tenho outra dubvvida... gostaria de localizar um registro pelo campo nome neste query que esta filtrado por ativos=sim digitando em um campo e depois clicando em um botao...

tipo se fosse uma tabeela normau eu faria um findnerest mas no query nao aceita...

obrigado...


GOSTEI 0
Jairroberto

Jairroberto

18/07/2003

Olá, Zacca!

Use o método Locate:

function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; virtual;

type
TLocateOption = (loCaseInsensitive, loPartialKey);
TLocateOptions = setof TLocateOption;


Veja um exelplo:

Query1.Locate(´nome´, Edit1.Text, [loCaseInsensitive, loPartialKey]);


Veja o help do Delphi para entender melhor o funcionamento do método Locate.


Um abraço,
Jair


GOSTEI 0
POSTAR