Fórum Erro no formulário com MySQL #585775

12/09/2017

0

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

Responder

Post mais votado

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

Daniel Araújo

Daniel Araújo
Responder

Gostei + 1

Mais Posts

12/09/2017

Francisco Ribeiro

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.
Responder

Gostei + 0

12/09/2017

Francisco Ribeiro

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;

Responder

Gostei + 0

12/09/2017

Francisco Ribeiro

Muito obrigado pela sua ajuda...
Responder

Gostei + 0

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

Aceitar