Consulta query

Delphi

11/04/2004

PRECISO DE AJUDA -> CONSULTA QUERY

Sou iniciante.
Uso o Delphi 6 e as vezes o Delphi 7 -> DBD32

Quero fazer um consulta.

tenho: Query1, DBGrid1 e Edit1

1 - Quando entro no Edit1 se digitar numero a Query1
será:
(coloquei no evento onchange do Edit1)
QryCampos.Close;
QryCampos.Sql.Clear;
QryCampos.Sql.Add(´Select * From Campos´);
QryCampos.Sql.Add(´Where Codigo>= ´´´+Edit1.Text+´´´´);
QryCampos.Sql.Add(´ORDER BY Codigo´);
QryCampos.Open;
QryCampos.FindFirst;

2 - Quando entro no Edit1 se digitar letra a Query1
será:
(coloquei no evento onchange do Edit1)
QryCampos.Close;
QryCampos.Sql.Clear;
QryCampos.Sql.Add(´Select * From Campos´);
QryCampos.Sql.Add(´Where Nome Like ´+´´´´+´¬´+ Edit1.Text + ´¬´+´´´´);
QryCampos.Sql.Add(´ORDER BY Nome´);
QryCampos.Open;
QryCampos.FindFirst;

3 - Quando entro no Edit1 com um caracter diferente de numero ou letra
deverá não fazer nada ou ´mensagem registro não encontrado´ .

Não sei fazer.

4 - Isoladamente a 1 e a 2 funcionam queria validar o Edit1 para qualquer das
opções 1, 2 ou 3.


Paulo Drozinski

Paulo Drozinski

Curtidas 0

Respostas

Fabio.hc

Fabio.hc

11/04/2004

Tente assim:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
   if (Key in [´0´..´9´]) then
      begin
      pesquisa:=pesquisa+key;
      QryCampos.Close;
      QryCampos.Sql.Text(´Select * From Campos Where Codigo >= :codigo ORDER BY Codigo´);
      QryCampos.ParamByName(´codigo´).AsInteger:=StrToInt(pesquisa);
      QryCampos.Open;
      QryCampos.FindFirst;
      end
   else if (Key in [´A´..´Z´]) then
      begin
      pesquisa:=pesquisa+key;
      QryCampos.Close;
      QryCampos.SQL.Text:=´Select * From Campos where Where Nome Like :nome´;
      QryCampos.ParamByName(´nome´).Value:=pesquisa+´¬´;
      QryCampos.Open;
      end
   else if (Key = 8) then
      pesquisa:=copy(pesquisa,1,length(pesquisa)-1)
   else if (Key <> 13) then
      ShowMessage(´Caracter invalido!´);
end;



GOSTEI 0
Paulo Drozinski

Paulo Drozinski

11/04/2004

CARO Fabio.HC

MUITO OBRIGADO VALEU
QUALQUER COISA ESTOU AS ORDENS
SAUDAÇÕES
DROZINSKI :D


GOSTEI 0
Paulo Drozinski

Paulo Drozinski

11/04/2004

:cry:
Caro Amigo fábio HC

deu uma zebra.
QryCampos.Sql.Text(´Select * From Campos Where Codigo >= :codigo ORDER BY Codigo´); - > trava a compilação neste local -> ´ missing opertor or semicolon´ não deu para testar o resto ?

preciso declarar uma variável ´var pesquisa: String; ??

ou pesquisa substitui o edit1?

sou obrigado a usar no evento onkeypress ?
não posso usar no evento onchange e criar a var key : Tchar

se puderes me dá mais um toque.
grato
drozinski


GOSTEI 0
Fabio.hc

Fabio.hc

11/04/2004

[b:1edbd7f4bd]QryCampos.Sql.Text(´Select * From Campos Where Codigo >= :codigo ORDER BY Codigo´); - > trava a compilação neste local -> ´ missing opertor or semicolon´ não deu para testar o resto ? [/b:1edbd7f4bd]

A sintaxe certa é:
QryCampos.Sql.Text:=´Select * From Campos Where Codigo >= :codigo ORDER BY Codigo´;

[b:1edbd7f4bd]preciso declarar uma variável ´var pesquisa: String; ??[/b:1edbd7f4bd]

Precisa.
var
Form1: TForm1;
pesquisa:string;


[b:1edbd7f4bd]ou pesquisa substitui o edit1? [/b:1edbd7f4bd]
Substitui


[b:1edbd7f4bd]sou obrigado a usar no evento onkeypress ?
não posso usar no evento onchange e criar a var key : Tchar [/b:1edbd7f4bd]

Não, vc coloca o codigo no onchange e testa se é letra ou número q foi pressionado para rodar a query correspondente.


GOSTEI 0
Paulo Drozinski

Paulo Drozinski

11/04/2004

:D VALEU AMIGO Fabio.HC


SAUDAÇÕES
DROZINSKI


GOSTEI 0
Paulo Drozinski

Paulo Drozinski

11/04/2004

:) :D :lol: VALEU AMIGO Fabio.HC

FUNCIONOU QUE É UMA MARAVILHA

NOTA 10 PARA TI.

ESTA ROTINA DICA DÁ PARA MANDARES PARA O REPOSITÓRIO DO CLUBE É MUITO ÚTIL PARA TODOS.

JÁ VI QUE ENTENDES DO RISCADO.

TENHO UMA PERGUNTA PEPINÃO, UM VERDADIRO DESAFIO PARA OS ´EXPERTS´ ATÉ AGORA NÃO CONSEGUI UMA RESPOSTA.
ESTA PERGUNTA SÓ PODE SER FEITA COM ILUSTRAÇÔES DE BMP´S
POIS TEM MUITAS REFERENCIAS E INDICAÇÕES DIFÍCEIS DE EXPLICAR.
CASO POSSA FAZER O FAVOR DE TENTAR :roll: TE MANDO UM EMAIL.
MEU ENDEREÇO É empretec.eng@terra.com.br

saudações

DROZINSKI


GOSTEI 0
POSTAR