Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

pdb

[Resolvido] Criando botão de pesquisa

Recommended Posts

Ola eu peguei o codigo postado para outro membro mas o mesmo esta apresentando um problema. Preciso fazer uma pesquisa entre 2 datas.

"Project Project1.exe raised exception class EDBEngineError with message "Field in order by must be result set.'. Process stopped. Use Step or Run to continue."

 

Não sei se algo esta errado no codigo ou no meu programa mas se alguem puder me ajudar,

 

Obrigado!!

 

 

 

If DateTimePicker2.Date < DateTimePicker1.Date Then

begin

ShowMessage('Intervalo de datas inválido, a data inicial é maior que a data final!');

DateTimePicker2.Date := DateTimePicker1.Date;

end

Else

begin

edit1.text:= DateToStr(DateTimePicker1.Date);

edit2.Text:= DateToStr(DateTimePicker2.Date);

Query1.Close;

Query1.SQL.Clear;

Query1.SQL.Add('SELECT Data, Nome, End');

Query1.SQL.Add('FROM table1');

Query1.SQL.Add('WHERE Data between ''' + DateToStr(DateTimePicker1.Date) + ''' and ''' + DateToStr(DateTimePicker1.Date) + '''');

Query1.SQL.Add('ORDER BY Data');

Query1.Open;

DBGrid1.SetFocus

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa mensagem de erro está dizendo que o campo que está na cláusula ORDER BY deve estar entre os campos selecionados. É estranho porque pelo que estou vendo o campo Data está sendo selecionando e mesmo assim, acho que era para deixar ordenar mesmo que o campo não esteja dentro dos campos selecionados no select.

 

Minha sugestão é que mude o seu código para o seguinte:

 

If DateTimePicker2.Date < DateTimePicker1.Date Then
   begin
	  ShowMessage('Intervalo de datas inválido, a data inicial é maior que a data final!');
	  DateTimePicker2.Date := DateTimePicker1.Date;
   end
   else
   begin
	  Edit1.Text := DateToStr(DateTimePicker1.Date);
	  Edit2.Text := DateToStr(DateTimePicker2.Date);
	  Query1.Close;
	  Query1.SQL.Clear;
	  Query1.SQL.Add('SELECT DATA, NOME, END FROM TABLE1');
	  Query1.SQL.Add('WHERE DATA BETWEEN :DAT1 AND :DAT2');
	  Query1.SQL.Add('ORDER BY DATA');
	  Query1.ParamByName('DAT1').AsDate := DateTimePicker1.Date;
	  Query1.ParamByName('DAT2').AsDate := DateTimePicker2.Date;
	  //>>Na duas linhas de comando acima, dependendo do componente você terá
	  //>>que utilizar ParamByName('XXX').AsDateTime
	  Query1.Open;
	  DBGrid1.SetFocus
   end;

Uma outra coisa... não sei que banco de dados você está utilizando mas

ele também pode estar se confundindo com o nome do campo "end".

Sugiro que modifique o nome desse campo para "endereco" para não

evitar um possível problema agora ou mais adiante.

 

Espero ter ajudado.

 

t+!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.