parametro not found

Delphi

10/02/2014

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

Curtidas 0

Mais Respostas

Marisiana Battistella

Marisiana Battistella

10/02/2014

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"?
GOSTEI 0
Mr. White

Mr. White

10/02/2014

Tenta trocar esse select com between pra isso:

'select * from reservas where dat >= :dataINI and dat <= :dataFIM '
GOSTEI 0
Junior

Junior

10/02/2014

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
GOSTEI 0
Junior

Junior

10/02/2014

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

Alan Souza

10/02/2014

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;



GOSTEI 0
Luiz

Luiz

10/02/2014

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;
GOSTEI 0
Junior

Junior

10/02/2014

ainda nao consegui
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

10/02/2014

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...
GOSTEI 0
Luiz

Luiz

10/02/2014

Continua o mesmo erro?

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

GOSTEI 0
Marisiana Battistella

Marisiana Battistella

10/02/2014

Conseguiu resolver, Junior?
GOSTEI 0
Junior

Junior

10/02/2014

no caso esse parametros ja estao la, e ainda nao consegui resolver..
GOSTEI 0
Marcos Saffran

Marcos Saffran

10/02/2014

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')
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

10/02/2014

Posta o SQL que vc tem na Query....
GOSTEI 0
William

William

10/02/2014

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 ....
GOSTEI 0
Junior

Junior

10/02/2014

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!
GOSTEI 0
Nelson Santos

Nelson Santos

10/02/2014

Desenvolva softwares 3D em Delphi 7
www.3dsistemas.com.br
GOSTEI 0
POSTAR