pdb 0 Denunciar post Postado Dezembro 9, 2007 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
rvlira 0 Denunciar post Postado Dezembro 10, 2007 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
pdb 0 Denunciar post Postado Dezembro 10, 2007 Opa... Valeu Mesmo... Agora funciono tudo certo ak... Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites