Renanbg 1 Denunciar post Postado Novembro 28, 2007 Olá pessoal Montei um relatorio de aniversariantes onde seleciono o mes em um combo e o sistema me traz os aniversariantes, mas me pediram para fazer tambem um relatorio que traz todos os aniversariantes e só estou com duvida em como organizar eles por mês uso esse codigo frmrelfuncionarios.Query2.Close; frmrelfuncionarios.Query2.SQL.Clear; frmrelfuncionarios.Query2.SQL.Add('select codigo, funcionario, endereco, telefone, funcao, dt_nascimento from tbfuncionarios'); frmrelfuncionarios.Query2.SQL.Add('where status = "ATIVO"'); frmrelfuncionarios.Query2.SQL.Add('order by funcionario'); frmrelfuncionarios.Query2.Open; como podem ver ali está ordenado por funcionario... como faço para ordenar pelo mes para que fique de janeiro a dezembro? Compartilhar este post Link para o post Compartilhar em outros sites
Tatiane.InterArt 0 Denunciar post Postado Novembro 29, 2007 Na verdade assim você ta ordenando por funcionário frmrelfuncionarios.Query2.Close; frmrelfuncionarios.Query2.SQL.Clear; frmrelfuncionarios.Query2.SQL.Add('select codigo, funcionario, endereco, telefone, funcao, dt_nascimento from tbfuncionarios'); frmrelfuncionarios.Query2.SQL.Add('where status = "ATIVO"'); * olha a linha de comando de ordenação aqui* frmrelfuncionarios.Query2.SQL.Add('order by funcionario'); frmrelfuncionarios.Query2.Open; você não precisa pensar no fator mês, pode ordenar pela dt_nascimento já vai ficar certinho por dia/mês/ano frmrelfuncionarios.Query2.SQL.Add('Order by dt_nascimento); assim se tiverem duas pessoas por exemplo q façam aniversário em janeiro, uma dia 10 e outra dia 12 ficarão também em ordem entendeu? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 29, 2007 E depois se desejar pode usar o OnCalcField da query que faz a busca e então tratar esta informação convertendo para o mês escrito por extenso, formatar da forma que desejar... Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Novembro 29, 2007 Na verdade assim você ta ordenando por funcionário frmrelfuncionarios.Query2.Close; frmrelfuncionarios.Query2.SQL.Clear; frmrelfuncionarios.Query2.SQL.Add('select codigo, funcionario, endereco, telefone, funcao, dt_nascimento from tbfuncionarios'); frmrelfuncionarios.Query2.SQL.Add('where status = "ATIVO"'); * olha a linha de comando de ordenação aqui* frmrelfuncionarios.Query2.SQL.Add('order by funcionario'); frmrelfuncionarios.Query2.Open; você não precisa pensar no fator mês, pode ordenar pela dt_nascimento já vai ficar certinho por dia/mês/ano frmrelfuncionarios.Query2.SQL.Add('Order by dt_nascimento); assim se tiverem duas pessoas por exemplo q façam aniversário em janeiro, uma dia 10 e outra dia 12 ficarão também em ordem entendeu? sim, sei q ta por funcionario Se ordenar por data de nascimento não fica legal pq ele vai levar o ano em consideração e não o mes olha como fica ordenado pela data de nascimento 06/10/1980 01/02/2006 02/02/2006 01/10/2007 Como pode ver os meses ficam bagunçados... Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 29, 2007 Qual o seu BD ? Dependendo do banco de dados, você consegue ordenar por partes da data, podendo ordenar primeiro pelo mês e depois pelo dia... Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Novembro 29, 2007 Paradox Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 29, 2007 Veja alguns exemplos: http://forum.imasters.com.br/index.php?showtopic=231170 http://forum.imasters.com.br/index.php?showtopic=247294 http://forum.imasters.com.br/index.php?showtopic=222501 http://forum.imasters.com.br/index.php?showtopic=224017 Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Novembro 29, 2007 O primeiro que você citou acima marcio é exatamente o que eu uso para selecionar por mes frmrelfuncionarios.Query2.Close; frmrelfuncionarios.Query2.SQL.Clear; frmrelfuncionarios.Query2.SQL.Add('select codigo, funcionario, endereco, telefone, funcao, dt_nascimento from tbfuncionarios'); frmrelfuncionarios.Query2.SQL.Add('where extract(month from Dt_nascimento) = :Mes'); frmrelfuncionarios.Query2.SQL.Add('order by funcionario'); frmrelfuncionarios.Query2.ParamByName('Mes').AsInteger := StrToInt(Edit1.Text); frmrelfuncionarios.Query2.Open; frmrelfuncionarios.QuickRep1.Preview; no outro link vi esse exemplo abaixo e acho que dá para adaptar no meu, mas n estou tendo sucesso SELECT extract(day FROM dtnasc) dia, extract(month FROM dtnasc) mes, dtnasc FROM teste T WHERE extract(month FROM dtnasc) = 8 AND extract(day FROM dtnasc) BETWEEN 1 AND 31 ORDER BY 1, 2 Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 29, 2007 Bom, basta trocar os campos, ficando: frmrelfuncionarios.Query2.Close; frmrelfuncionarios.Query2.SQL.Clear; frmrelfuncionarios.Query2.SQL.Add('select extract(day FROM dt_nascimento) dia, extract(month FROM dt_nascimento,) mes'); frmrelfuncionarios.Query2.SQL.Add('codigo, funcionario, endereco, telefone, funcao, dt_nascimento'); frmrelfuncionarios.Query2.SQL.Add('from tbfuncionarios'); frmrelfuncionarios.Query2.SQL.Add('where status = "ATIVO"'); frmrelfuncionarios.Query2.SQL.Add('order by 1, 2'); frmrelfuncionarios.Query2.Open; Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Novembro 29, 2007 Da esse erro marcio Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 29, 2007 Faltou a vírgula, e vírgula no local errado, conforme diz o erro: frmrelfuncionarios.Query2.Close; frmrelfuncionarios.Query2.SQL.Clear; frmrelfuncionarios.Query2.SQL.Add('select extract(day FROM dt_nascimento) dia, extract(month FROM dt_nascimento) mes,'); frmrelfuncionarios.Query2.SQL.Add('codigo, funcionario, endereco, telefone, funcao, dt_nascimento'); frmrelfuncionarios.Query2.SQL.Add('from tbfuncionarios'); frmrelfuncionarios.Query2.SQL.Add('where status = "ATIVO"'); frmrelfuncionarios.Query2.SQL.Add('order by 1, 2'); frmrelfuncionarios.Query2.Open; Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Novembro 29, 2007 Show marcio, como sempre consigo solucionar minhas dúvidas aqui no fórum Muito obrigado Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 29, 2007 beleza... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites