Fórum Problemas com o ParmByName #475436
07/04/2014
0
Estou com um problema. Estou usando o Delphi XE5 e estou tentando fazer uma pesquisa na minha tabela, base de dados.
No entanto o "ParamByName" não está sendo aceite pelo programa.
procedure TFormPesquisarRelatorioTurno.Panel2Click(Sender: TObject);
begin
banco2.table2.close;
banco2.table2.ParamByName('NOME_CHEFE').Asstring:=EditPesquisa.Text;
banco2.table2.open;
end;
Dá o erro:
[dcc32 Error] PesquisarRelatoriosTurno.pas(56): E2003 Undeclared identifier: 'ParamByName'
[dcc32 Error] PesquisarRelatoriosTurno.pas(56): E2066 Missing operator or semicolon
[dcc32 Fatal Error] F2063 Could not compile used unit 'PesquisarRelatoriosTurno.pas'
Alguem me consegue ajudar? o que é que se passa?
Daniel Jordão
Curtir tópico
+ 0Posts
07/04/2014
Paulo Rodrigues
procedure TFormPesquisarRelatorioTurno.Panel2Click(Sender: TObject);
begin
banco2.table2.open;
banco2.table2.Insert;
banco2.table2.FieldByName('NOME_CHEFE').text := EditPesquisa.Text;
banco2.table2.post;
banco2.table2.close;
end;Espero ter ajudado
Gostei + 0
07/04/2014
Valquiria Silva
banco2.table2.close;
banco2.table2.Params.ParamByName('NOME_CHEFE').Asstring:=EditPesquisa.Text;
banco2.table2.open;
Gostei + 0
07/04/2014
Daniel Jordão
isso tudo esta funcionando através do fieldbyname.
O que eu queri fazer agora era uma pesquisa na tabela, ou seja, após ter inserido uns "10 mil registos" eu posso querer ver um deles especificamente como tal queria que quando carrega no botão (imagem) pesquisar, tudo desaparece-se e ficasse apenas o registo que eu escrevi na minha EditPesquisa, na tabela.
Gostei + 0
07/04/2014
Ricardo
isso tudo esta funcionando através do fieldbyname.
O que eu queri fazer agora era uma pesquisa na tabela, ou seja, após ter inserido uns "10 mil registos" eu posso querer ver um deles especificamente como tal queria que quando carrega no botão (imagem) pesquisar, tudo desaparece-se e ficasse apenas o registo que eu escrevi na minha EditPesquisa, na tabela.
Detalhes:
1. ParamByName não vai funcionar com um componente Table.
2. Falta o código SQL.
3. Você não esta passando nenhum parâmetro.
Exemplo usando Query.
With query do
begin
close;
sql.clear;
sql.add('select * from tabela where campo_da_tabela = :Pnome_do_chefe');
parameters.parambyname('Pnome_do_chefe').value := nome_do_chefe;
open;
end;
Gostei + 0
08/04/2014
Daniel Jordão
Então e há alguma maneira de fazer isto sem usar o código SQL?
Gostei + 0
08/04/2014
Alan Souza
Gostei + 0
08/04/2014
Paulo Rodrigues
a maneira mais simples é essa, inclusive o like às vezes é melhor do que o ParamByName, e pode ser combinado os dois.
-conecta um adoconection no banco de dados
-conecta um adoquery no adoconection
-seta strings do adoquery com ‘select * from tabela’
-seta o data source no adoquery
-seta o dbgrid no datasouce
-coloca este código em um botão ou no evento on change do edit2
adoquery.close;
adoquery.SQL.Clear;
adoquery.SQL.Add('select * from tabela');
adoquery.SQL.Add('and tabela.campo = :PARAM1');
adoquery.Parameters.ParamByName('PARAM1').Value := edit1.text;
adoquery.SQL.Add('and tabela.campo2 like' + quotedstr(EDIT2.Text));
adoquery.SQL.Add('order by tabela.campox');
adoquery.OPEN;
Gostei + 0
27/05/2014
Nelson Santos
www.3dsistemas.com.br
Gostei + 0