Erro no formulário com MySQL

Delphi

12/09/2017

Olá, tudo Bem?!
Eu estou com um problema que não estou conseguindo resolver. Criei um formula rio de pesquisa genérica para minha aplicação, só que quando eu vou executar esse formulário, dá uma mensagem de erro no MySQL e com isso o form não e aberto.
Detalhe é uma aplicação simples sem o uso do DataSnap, eu estou precisando muito da ajuda de vcs....
O erro está nessa parte do Código:

procedure TfrmPesquisar.ConfigurarForm(Tabela,CampoID,CampoNome: string);
var
cds: TClientDataSet;
begin
  cds:= dspesquisar.DataSet as TClientDataSet;
  cds.Close();
  cds.CommandText:= Format('select %s,%s from %s where %s like :id', [CampoID,CampoNome,Tabela,CampoNome]);
  cds.Open();end;


Um detalhe: quando eu tiro o parâmetro, o form abre com todos os registros só que eu não quero que ele abra assim, mas quero que ele venha sem nenhum registro
Quero que só exiba os registros quando o mesmo for pesquisado.
Obrigado pela ajuda.


Essa dúvida foi gerada a partir de um comentário na aula Formulário Genérico de Pesquisas - Curso de Multicamadas com Delphi e DataSnap - 67
Francisco Ribeiro

Francisco Ribeiro

Curtidas 0

Melhor post

Daniel Araújo

Daniel Araújo

12/09/2017

Boa noite Francisco! Você tem que passar algum valor para o parâmetro id. Tipo assim:
cds.Params.ParamByName('id').Value := 0;


https://twitter.com/danieldaterral
GOSTEI 1

Mais Respostas

Francisco Ribeiro

Francisco Ribeiro

12/09/2017

Olá Boa Noite me esqueci de informar a mensagem do erro que aparece.
Está abaixo a mensagem do erro.

[FireDAC][Phys][MSSQL]-335. Parameter data type is unknown.
Hint: specify TADParam.DataType or assign TADParam value before Prepare/Execute call.
GOSTEI 0
Francisco Ribeiro

Francisco Ribeiro

12/09/2017

Já resolvi....era só colocar um valor para o parametro. no Firebird ele pega o parametro de forma automatica, já no mysql precisa ser atribuido um valor pro parametro como não tinha colocado por isso que dava o erro.
o código ficou assim:


procedure TfrmPesquisar.ConfigurarForm(Tabela,CampoID,CampoNome: string);
var
cds: TClientDataSet;
begin
  cds:= dspesquisar.DataSet as TClientDataSet;
  cds.Close();
  cds.CommandText:= Format('select %s,%s from %s where %s like :id', [CampoID,CampoNome,Tabela,CampoNome]);
  cds.params.parambyname('id').asinteger:= 0;
cds.Open();
end;

GOSTEI 0
Francisco Ribeiro

Francisco Ribeiro

12/09/2017

Muito obrigado pela sua ajuda...
GOSTEI 0
POSTAR