SQL ou Locate para localizar pelo código

Delphi

26/06/2004

Bom dia amigos, estou engatinhando em Delphi e no meu cadastro de bairros, quero que o usuário ao digitar o código de um bairro já existente apareça nos campos o conteúdo encontrado.

Qual evento uso? KeyDown? Quero analisar assim que o usuário digitar o código desejado e pressionar enter.

Minha função é essa e está dando erro, o campo codbai é integer mas uso Edit.

************

procedure TfCadBai.cCodBaiKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
vvCodBai: integer;
begin
inherited;

DM.SQLDataSet_Bairros.Close ;
DM.SQLDataSet_Bairros.CommandText := ´SELECT * FROM Bairros WHERE codbai = :vvCodbai´;
vvcodbai := StrToInt(cCodBai.Text);
DM.SQLDataSet_Bairros.ParamByName(´vcodbai´).AsInteger := vvcodbai;
DM.SQLDataSet_Bairros.ExecSQL;

if DM.SQLDataSet_Bairros.RecordCount > 0 then
begin
cCodBai.Text := DM.SQLDataSet_Bairros.Fieldbyname(´CODBAI´).asstring;
cNomBai.Text := DM.SQLDataSet_Bairros.Fieldbyname(´NOMBAI´).asstring;
end;

end;

*****************

Outra questão é quanto a localização de registros no dbgrid, tenho um dbgrid e 1 edit, uso a seguinte função no evento Change do edit, só que não filtra os registros desejados.

procedure TConsultaBairros.Edit1Change(Sender: TObject);
begin
DM.SQLDataSet_Bairros.Close ;
DM.SQLDataSet_Bairros.CommandText := ´SELECT * FROM bairros where nombai LIKE ´+QuotedStr(´¬´+CampoProcura.Text)+´ ORDER BY nombai´;
DM.SQLDataSet_Bairros.Open ;
inherited; (No formulário pai eu desativo e ativo o dbgrid para atualizá-lo)
end;


Espero que possam me auxiliar.

Um abraço

Mario


Aldus

Aldus

Curtidas 0

Respostas

Aldus

Aldus

26/06/2004

Sobe


GOSTEI 0
Sandra

Sandra

26/06/2004

aldus,

Para 1º caso, teste se assim funciona:
procedure TfCadBai.cCodBaiKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); 
begin 
  if Key = VK_RETURN then 
    begin
      DM.SQLDataSet_Bairros.Close ; 
      DM.SQLDataSet_Bairros.CommandText := ´SELECT * FROM Bairros WHERE codbai = :vCodbai ORDER BY codbai´; 
      DM.SQLDataSet_Bairros.ParamByName(´vCodbai´).AsInteger := StrToInt(cCodBai.Text);
      DM.SQLDataSet_Bairros.Open; 

      if DM.SQLDataSet_Bairros.RecordCount > 0 then 
        begin 
          cCodBai.Text := IntToStr(DM.SQLDataSet_Bairros.Fieldbyname(´CODBAI´).asInteger);
          cNomBai.Text := DM.SQLDataSet_Bairros.Fieldbyname(´NOMBAI´).asstring;
        end 
      else 
        begin
          ShowMessage(´Código não encontrado´);
          cCodBai.SetFocus;
        end;
    end; 
end; 


2º caso:
procedure TConsultaBairros.Edit1Change(Sender: TObject); 
begin 
  DM.SQLDataSet_Bairros.Close ; 
  DM.SQLDataSet_Bairros.CommandText := ´SELECT * FROM bairros where nombai LIKE ´ + QuotedStr(CampoProcura.Text+´¬´) + ´ ORDER BY nombai´; 
  DM.SQLDataSet_Bairros.Open ; 
end; 


Boa sorte!


GOSTEI 0
POSTAR