Pesquisa com código SQL.
02/01/2006
0
procedure TFrm_ConsCliente.BtConsultarClick(Sender: TObject); begin With DMDados.IBQ_ConsCli do Begin Close; Sql.Clear; Sql.Add(´Select From Tab_Cliente ´); Sql.Add(´Where Nome_Cli :ParamNome´); ParamByname(´ParamNome´).Text:=(EditBusca.Text); Open; end; end.
Quero que o nome do cliente pesquisado apareça em um Label, só que esta me retornando este erro:
[color=red:4ed1ccc070][b:4ed1ccc070]Dynamic SQL erro ( Erro = 104)[/b:4ed1ccc070][/color:4ed1ccc070]
Será que alguém pode me ajudar?
Peninha.
Peninha
Posts
02/01/2006
Eixox
procedure TFrm_ConsCliente.BtConsultarClick(Sender: TObject);
begin
With DMDados.IBQ_ConsCli do
begin
Close;
Sql.Clear;
Sql.Add(´Select From Tab_Cliente ´);
[b:d581e05ae6][u:d581e05ae6]Sql.Add(´Where Nome_Cli = ´ + EditBusca.Text);[/u:d581e05ae6][/b:d581e05ae6]
Open;
end;
end;
Verifique que faltou o tipo de comparação que você gostaria da fazer (=) ou substitua pelo comando LIKE se achar melhor.
neste caso ficaria
SQL.Add(´Where Nome_Cli Like ´ + ´´´´´ + ´¬´ + EditBusca.Text + ´¬´ + ´´´´);
A última linha é desnecessária - parabyname....não tem necessidade já que você pode colocar o parâmetro diretamente do campo Edit.
02/01/2006
Peninha
Já tentei outras alternativas e até agora nada, vou continuar tentando acertar este código. Se alguém mas poder ajudar eu agradeço.
Peninha.
02/01/2006
Eixox
Tá faltando os campos retornos da sua consulta... Faltou quais os campos devem retornar - de uma olhada que agora tem que rodar obrigatoriamente.
With DMDados.IBQ_ConsCli do
begin
Close;
Sql.Clear;
Sql.Add(´Select From [color=red:94db0493a7][u:94db0493a7][i:94db0493a7][b:94db0493a7]*[/b:94db0493a7][/i:94db0493a7][/u:94db0493a7][/color:94db0493a7] Tab_Cliente ´);
Sql.Add(´Where Nome_Cli = ´ + EditBusca.Text);
Open;
end;
end;
03/01/2006
Thomaz_prg
With DMDados.IBQ_ConsCli do begin Close; Sql.Clear; Sql.Add(´Select From * Tab_Cliente ´); Sql.Add(´Where Nome_Cli = ´ + EditBusca.Text); Open; end;
Porém o Correto é:
With DMDados.IBQ_ConsCli do begin Close; Sql.Clear; Sql.Add(´Select [b]*[/b] From Tab_Cliente ´); Sql.Add(´Where Nome_Cli = :Nome´); ParamByName(´Nome´).AsString := EditBusca.Text; Open; end;
03/01/2006
Peninha
With DMDados.IBQ_ConsCli do begin Close; Sql.Clear; Sql.Add(´Select * From Tab_Cliente ´); Sql.Add(´Where Nome_Cli = :Nome´); ParamByName(´Nome´).AsString := EdtBusca.Text; Open; end; Label1.Caption:=DmDadoS.IBQ_ConsCliNOME_CLI.AsString;
Mas gostaria de adcionar um detalhe nesta pesquisa. Para pesquisar preciso digitar o nome do cliente exato, como faço para que ao digitar os parte do primeiro nome e já ir buscando este nome?
EX: Tenho um cliente chamado João mota marinho, no entanto tenho outros com o nome de João e sobrenome diferentes.
Sei que posso usar o (Like ¬), só que não sei como coloca-lo no código.
Peninha.
03/01/2006
Eixox
você pode executar isso:
no evento OnChange do Edit que será digitado o nome coloque o seguinte comando:
With DMDados.IBQ_ConsCli do
begin
Close;
Sql.Clear;
Sql.Add(´Select * From Tab_Cliente ´);
Sql.Add(´Where Nome_Cli LIKE ´ + ´´´´ + EdtBusca.Text + ´¬´ + ´´´´);
Open;
end;
Aquela parte onde você passa o parâmetro é desnecessária. Economiza o processamento do sistema.
03/01/2006
Peninha
ESte código faz a consulta exata do nome do cliente:
With DMDados.IBQ_ConsCli do begin Close; Sql.Clear; Sql.Add(´Select * From Tab_Cliente ´); Sql.Add(´Where Nome_Cli= :Nome´); ParamByName(´Nome´).AsString := EdtBusca.Text; Open; end;
Agora, como faço para consultar também pelo código do cliente?
Alguém pode me ajudar?
Erivan marinho.
03/01/2006
Paulo
Agora não sei se um OR dentro do WHERE, daria certo.
03/01/2006
Peninha
Sql.Add(´Where Nome_Cli like ´+ quotedStr(EdtBusca.Text);//>>>se quiser por partes
Não consegui identificar o erro.
Peninha.
03/01/2006
Martins
Sql.Add(´Where Nome_Cli like ´+ quotedStr(EdtBusca.Text);//>>>se quiser por partes
O q o colega Paulo sugeriu foi o seguinte, vc pode usar pelo nome exato assim:
With DMDados.IBQ_ConsCli do begin Close; Sql.Clear; Sql.Add(´Select * From Tab_Cliente ´); Sql.Add(´Where Nome_Cli like ´+quotedstr( EdtBusca.Text); Open; end;
ou por partes do nome:
With DMDados.IBQ_ConsCli do begin Close; Sql.Clear; Sql.Add(´Select * From Tab_Cliente ´); Sql.Add(´Where Nome_Cli like ´+QuotedStr( ´¬´+ EdtBusca.Text + ´¬´ ); Open; end;
Eu particularmente costuma trabalar com parametros e nunca tive dor de cabeça nem perda de performance.
Boa sorte!!
04/01/2006
Caninha51
With DMDados.IBQ_ConsCli do begin Close; Sql.Clear; Sql.Add(´Select * From Tab_Cliente ´); Sql.Add(´Where Nome_Cli like ´+QuotedStr( ´¬´+ EdtBusca.Text + ´¬´ )); Open; end;
Clique aqui para fazer login e interagir na Comunidade :)