Problemas com o ParmByName
Boas pessoal,
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?
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
Curtidas 0
Respostas
Paulo Rodrigues
07/04/2014
Você deveria abrir a tabela, inserir registro, atribuir o valor ao registro, gravar e depois fechar, e não o contrário. Eu sempre usei o Parambyname na query, no table eu sempre usei fieldbyname.
Espero ter ajudado
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
Valquiria Silva
07/04/2014
Não sei que componente de acesso você está usando, mas parece ser falta do "Params"
banco2.table2.close;
banco2.table2.Params.ParamByName('NOME_CHEFE').Asstring:=EditPesquisa.Text;
banco2.table2.open;
GOSTEI 0
Daniel Jordão
07/04/2014
O problema não está em gravar os dados ou editar o que foi gravado, ou eliminar, etc.
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.
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
Ricardo
07/04/2014
O problema não está em gravar os dados ou editar o que foi gravado, ou eliminar, etc.
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.
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
Daniel Jordão
07/04/2014
Ok.
Então e há alguma maneira de fazer isto sem usar o código SQL?
Então e há alguma maneira de fazer isto sem usar o código SQL?
GOSTEI 0
Alan Souza
07/04/2014
dá, com Filter / Filtered
GOSTEI 0
Paulo Rodrigues
07/04/2014
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
Nelson Santos
07/04/2014
Desenvolva softwares 3D em Delphi 7
www.3dsistemas.com.br
www.3dsistemas.com.br
GOSTEI 0