SQL ou Locate para localizar pelo código
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
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
Curtidas 0
Respostas
Aldus
26/06/2004
Sobe
GOSTEI 0
Sandra
26/06/2004
aldus,
Para 1º caso, teste se assim funciona:
2º caso:
Boa sorte!
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