Fórum parametro not found #469533

10/02/2014

0

boa tarde pessoal
preciso da ajuda de voces
montei um sql que pesquisa entre duas datas usando o ado query e mysql. no entanto quando clico no botao, retorna a mensagem:" parametro ('dataINI') not found, ja cheguei a criar os parametros mas nao obtive o resultado desejado. por favor me ajudem !
abaixo segue o codigo:

    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
       ADOQuery1.SQL.Text := 'select * from reservas where dat between :dataINI and :dataFIM';
       ADOQuery1.Parameters.ParamByName('dataINI').Value:= (DateToStr(dpeInicio.Date));
    ADOQuery1.Parameters.ParamByName('dataFIM').Value:= (DateToStr(dpeFinal.Date));
    ADOQuery1.ExecSQL;
    ADOQuery1.Open;
Junior

Junior

Responder

Posts

10/02/2014

Marisiana Battistella

Boa tarde Junior!

Verifica no teu SQL:

'select * from reservas where dat between :dataINI and :dataFIM';

Está correto o nome do campo "dat" no SQL? Não seria "data"?
Responder

Gostei + 0

10/02/2014

Mr. White

Tenta trocar esse select com between pra isso:

'select * from reservas where dat >= :dataINI and dat <= :dataFIM '
Responder

Gostei + 0

11/02/2014

Junior

Boa tarde Junior!

Verifica no teu SQL:

'select * from reservas where dat between :dataINI and :dataFIM';

Está correto o nome do campo "dat" no SQL? Não seria "data"?


bom dia Marisiana
o campo e esse mesmo ja tentei trocar tud mas nao rolou
Responder

Gostei + 0

11/02/2014

Junior

ele cotinua a dar o mesmo erro e da erro nessa linha aqui
ADOQuery1.Parameters.ParamByName('dataINI').Value:= (01/01/2014);
Responder

Gostei + 0

11/02/2014

Alan Souza

tenta assim:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'select * from reservas where dat between :dataINI and :dataFIM';
ADOQuery1.Prepare;
ADOQuery1.Parameters.ParamByName('dataINI').DataType := ftString;
ADOQuery1.Parameters.ParamByName('dataFIM').DataType := ftString;
ADOQuery1.Parameters.ParamByName('dataINI').Value:= (DateToStr(dpeInicio.Date));
ADOQuery1.Parameters.ParamByName('dataFIM').Value:= (DateToStr(dpeFinal.Date));
ADOQuery1.Open;



Responder

Gostei + 0

11/02/2014

Luiz

Se não funcionar, tente isto:

  with ADOQuery1 do
  begin
    Close;
    Sql.Clear;
    Sql.Add('select * from reservas where dat between :dataini and :datafim ');
    Prepared := True;
    Parameters.ParseSQL(SQL.Text, True);
    Parameters.ParamByName('dataini').Value:= (DateToStr(dpeInicio.Date));
    Parameters.ParamByName('datafim').Value:= (DateToStr(dpeFinal.Date));
    Open;
  end;
Responder

Gostei + 0

11/02/2014

Junior

ainda nao consegui
Responder

Gostei + 0

11/02/2014

Marisiana Battistella

Talvez o teu problema não esteja ali no código, mas na Query...
Tenta verificar se vc configurou os parâmetros corretamente, se o SQL está correto e se os nomes estão idênticos...
Acho q essa pode ser uma possibilidade...
Responder

Gostei + 0

11/02/2014

Luiz

Continua o mesmo erro?

Tenta ir no componente ADOQuery1, va na propriedades Parameters, e tente adicionar manualmente estes 2 parâmetros (dataini, datafim).

Responder

Gostei + 0

11/02/2014

Marisiana Battistella

Conseguiu resolver, Junior?
Responder

Gostei + 0

11/02/2014

Junior

no caso esse parametros ja estao la, e ainda nao consegui resolver..
Responder

Gostei + 0

11/02/2014

Marcos Saffran

ele cotinua a dar o mesmo erro e da erro nessa linha aqui
ADOQuery1.Parameters.ParamByName('dataINI').Value:= (01/01/2014);


Você já tentou:
ADOQuery1.Parameters.ParamByName('dataINI').Value:= ('2014-01-01')
Responder

Gostei + 0

11/02/2014

Marisiana Battistella

Posta o SQL que vc tem na Query....
Responder

Gostei + 0

11/02/2014

William

Colega usando com DBExpress só passo o parâmetro da forma correta, apenas chamando 'AsDateTime', claro estou supondo que o seu campo dat seja do tipo DATE no banco de dados:

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'select * from reservas where dat between :dataINI and :dataFIM';
ADOQuery1.Parameters.ParamByName('dataINI').AsDateTime:= dpeInicio.Date;
ADOQuery1.Parameters.ParamByName('dataFIM').AsDateTime:= dpeFinal.Date;
ADOQuery1.ExecSQL;
ADOQuery1.Open;


Qualquer dúvida estou a disposição ....
Responder

Gostei + 0

12/02/2014

Junior

pessoal consegui
modifiquei um pouco o codigo do wilian e criei outro campo de data dentro do banco.
o codigo completo do botão ficou assim:

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'select * from reservas where dat2 between :dataINI and :dataFIM';
ADOQuery1.Parameters.ParamByName('dataINI').Value:= FormatDateTime('yyyy-mm-dd',dpeInicio.Date);
ADOQuery1.Parameters.ParamByName('dataFIM').Value:= FormatDateTime('yyyy-mm-dd',dpeFinal.Date);
ADOQuery1.ExecSQL;
ADOQuery1.Open;
if ADOQuery1.Eof then
begin
ShowMessage('Cadastro Não Localizado, será gerado o relatório Geral!');
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select* from reservas');
ADOQuery1.Open;
Edit2.Text:='';
Edit2.SetFocus;
end
else
ShowMessage('A consulta Foi realizada com sucesso!!');


vlw pela ajuda!
Responder

Gostei + 0

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

Aceitar