Fórum Erro na clausula from. O que esta errado? #228491

28/04/2004

0

Bom dia.
Estou tentando fazer uma consulta que apos eu digitar qualquer letra em um edit ele me retorne num dbgrid todos os registros de minha tabela que comecem com a letras digitadas no edit. Eu utilizo bd access, paleta ado, um edit e um dbgrid. O código do evento OnKeyDow é o seguinte:

If Edit1.Text <>´´ then
Begin
QForneced.Close;
QForneced.SQL.Add(´Select * from Fornecedores where RazaoSocial like :p1´);
QForneced.Parameters.ParamByName(´p1´).Value := ´´+Edit1.Text+´¬´;
QForneced.Open;
end;

O erro que esta dando é na clausula from, mais nao sei o que pode estar errado. Fornecedores é o nome da tabela e razaoSocial o nome do campo a ser pesquisado. Se puderem me ajudar ficarei muito grata.


Flavia_mococa

Flavia_mococa

Responder

Posts

28/04/2004

Wolverine

Select * from Fornecedores where RazaoSocial >=:p1


Responder

Gostei + 0

28/04/2004

Emerson Nascimento

If Edit1.Text <>´´ then
Begin
    QForneced.Close;
    QForneced.SQL.Add(´Select * from Fornecedores where RazaoSocial like :p1´);
    QForneced.Parameters.ParamByName(´p1´).AsString := Edit1.Text+´¬´;
    QForneced.Prepare;
    QForneced.Open;
end;


Responder

Gostei + 0

28/04/2004

Fer_nanda

If Edit1.Text <>´´ then Begin QForneced.Close; QForneced.SQL.Add(´Select * from Fornecedores where RazaoSocial like :p1´); QForneced.Parameters.ParamByName(´p1´).Value := ´´+Edit1.Text+´¬´; QForneced.Open; end;

já q está passando o parametro no mesmo momento q adciona a clausula pra qry pq naum tenta desta maneira:
    QForneced.SQL.Text := ´Select * from Fornecedores where RazaoSocial like ´ + QuotedStr(Edit1.Text+ ´¬´);



Responder

Gostei + 0

28/04/2004

Pabhen

Bom dia. Estou tentando fazer uma consulta que apos eu digitar qualquer letra em um edit ele me retorne num dbgrid todos os registros de minha tabela que comecem com a letras digitadas no edit. Eu utilizo bd access, paleta ado, um edit e um dbgrid. O código do evento OnKeyDow é o seguinte: If Edit1.Text <>´´ then Begin QForneced.Close; QForneced.SQL.Add(´Select * from Fornecedores where RazaoSocial like :p1´); QForneced.Parameters.ParamByName(´p1´).Value := ´´+Edit1.Text+´¬´; QForneced.Open; end; O erro que esta dando é na clausula from, mais nao sei o que pode estar errado. Fornecedores é o nome da tabela e razaoSocial o nome do campo a ser pesquisado. Se puderem me ajudar ficarei muito grata.


Naum precisa das aspas e do sinal de + no começo do edit, e tb O q está faltando é o SQL.clear. Do jeito q está aí vc vai ficar sempre adcionando o comando SQL. Faça assim:

If Edit1.Text <>´´ then
Begin
QForneced.Close;
QForneced.Clear; // aqui vc resolve seu problema :)
QForneced.SQL.Add(´Select * from Fornecedores where RazaoSocial like :p1´);
QForneced.Parameters.ParamByName(´p1´).Value := Edit1.Text+´¬´;// aqui tb estava errado
QForneced.Open;
end;

qualquer coisa tamos aeh


Responder

Gostei + 0

28/04/2004

Flavia_mococa

Oi gente, não deu certo, será que estou programando no evento errado...


Responder

Gostei + 0

28/04/2004

Fer_nanda

Oi gente, não deu certo, será que estou programando no evento errado...


verdade... tenta no onexit


Responder

Gostei + 0

28/04/2004

Marco Salles

O erro que esta dando é na clausula from, mais nao sei o que pode estar errado.

Eu não entendi se o erro que voce se refere e de sintase ou e um erro de lógica

Estou tentando fazer uma consulta que apos eu digitar qualquer letra em um edit ele me retorne num dbgrid todos os registros de minha tabela que comecem com a letras digitadas no edit.


eu olhei rapidamente o seu código e acho que mesmo que ele esteja certo, o retorno do sql, sera não so os registros que comecão coma letra digitada mas também todos os outros que estão após...Por exemplo se digitar a [b:6d684c00fe]letra A[/b:6d684c00fe] , Irá aparecer todos os registros...Porque :?: :?: Porque voce so fez um [b:6d684c00fe]limitador de maior [/b:6d684c00fe]e Não [b:6d684c00fe]Um Limitador de Menor [/b:6d684c00fe]Código:
query1.sql.Clear; 
Query1.SQL.add(´Select * From Fornecedores´); 
Query1.Sql.Add(´Where RazaoSocial>=:inicio´); 
Query1.ParamByName(´inicio´).AsString:=Edit1.Text; 
Query1.Sql.Add(´and RazaoSocial<=:final´); 
Query1.ParamByName(´final´).AsString:=Edit1.Text+´zzzzzz´; 
Query1.SQL.add(´Order RazaoSocial´); 
Query1.Prepare; 
query1.open; 


Oi gente, não deu certo, será que estou programando no evento errado...


Quanto ao evento eu acho que pode ser no onkeyPress, ou mesmo no onKeyDown

[b:6d684c00fe]qualquer duvida poste a gente...[/b:6d684c00fe]


Responder

Gostei + 0

28/04/2004

Marco Salles

Desculpe, a ultima instr~ção do cóbigo esta incorreta:
Código:
query1.sql.Clear; 
Query1.SQL.add(´Select * From Fornecedores´); 
Query1.Sql.Add(´Where RazaoSocial>=:inicio´); 
Query1.ParamByName(´inicio´).AsString:=Edit1.Text; 
Query1.Sql.Add(´and RazaoSocial<=:final´); 
Query1.ParamByName(´final´).AsString:=Edit1.Text+´zzzzzz´; 
Query1.SQL.add(´Order RazaoSocial´); //errado*******
Query1.Prepare; 
query1.open;  


o Certo é:
Código:
query1.sql.Clear; 
Query1.SQL.add(´Select * From Fornecedores´); 
Query1.Sql.Add(´Where RazaoSocial>=:inicio´); 
Query1.ParamByName(´inicio´).AsString:=Edit1.Text; 
Query1.Sql.Add(´and RazaoSocial<=:final´); 
Query1.ParamByName(´final´).AsString:=Edit1.Text+´zzzzzz´; 
Query1.SQL.add(´Order By RazaoSocial´); 
Query1.Prepare; 
query1.open;  



Responder

Gostei + 0

28/04/2004

Flavia_mococa

Quando eu rodo o programa ele compile, ate ai tudo bem.
Quando eu abro o form tambem nao tem erro nenhum, mais quando eu digito qualquer coisa acontece o seguinte:
Digito a primeira letra = nao acontece nada
Digito a segunda letra = mensagem de erro na clausula from e o programa trava...


Responder

Gostei + 0

28/04/2004

Flavia_mococa

galera, muito obrigada mesmo.
Eu mudei um pouquinho o código me baseando nas respostas que voces postaram e meu codigo ficou assim:

procedure TFrmCaixa.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If Edit1.Text <>´´ then
Begin
QForneced.Close;
QForneced.SQL.Clear;
QForneced.SQL.Add(´Select * from Fornecedores´);
QForneced.SQL.Add(´where RazaoSocial like ´´´+edit1.text+´¬´´ ´);
QForneced.Open;
end;
end;

Desta forma ele funcionou da forma que eu queria, ficou um pouquinho lento já que a tabela tem muitos registros, mais funcionou bem.
Obrigada mesmo.
Bjos.


Responder

Gostei + 0

28/04/2004

Dankada

uma outra forma de fazer isso seria assim...


no evento onKeyUp

var
  tam:integer;
begin

if edit1 <>´´ then
 begin
  QForneced.Close;
  tam := length(edit1.text);
  QForneced.SQL.Text:=´Select * from Fornecedores WHERE mid(RazaoSocial,1,´+IntToStr(tam)+´) = ´´´+edit1.text+´´´  ´;
  QForneced.Open;
 end;
end;


dessa forma so iria aparecer no Grid os Nomes que comecem com a sequencia que vc digitou, com o LIKE ele pega qualquer subString da palavra (se eu tiver errado me corrigam).


Responder

Gostei + 0

02/05/2004

Flavia_mococa

Obrigada pelos toques galera, deu tudo certo.
Bjos


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar