Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Lista de alunos que fazem anos num mês, ordenada


Mario Lopes

Pergunta

Viva

Necessito de extrair de uma base de dados todos os alunos que fazem anos num determinado mês. O meu problema está na ordenação por dia dessa lista. Alguém ajuda?

Eis o meu código:

queryaniversarioexterno.SQL.Clear;

Queryaniversarioexterno.SQL.Add('SELECT *');

Queryaniversarioexterno.SQL.Add('FROM festaaniversario');

Queryaniversarioexterno.SQL.Add('WHERE extract(month from DATA_aniversario) = :mes');

queryaniversarioexterno.SQL.Add('order by data_aniversario');

Queryaniversarioexterno.ParamByName('mes').AsInteger := m1;

Queryaniversarioexterno.Open;

Só que o order by data_aniversario não funciona. Como fazer?

Obrigado

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0
Necessito de extrair de uma base de dados todos os alunos que fazem anos num determinado mês. O meu problema está na ordenação por dia dessa lista. Alguém ajuda?

Fiz um teste e funciona sem problemas

procedure TForm1.Button1Click(Sender: TObject);
begin
   query1.SQL.Clear;
   Query1.SQL.Add('SELECT *');
   Query1.SQL.Add('FROM TABELA');
   Query1.SQL.Add('WHERE extract(month from DATA_NASC) = :mes');
   query1.SQL.Add('ORDER BY DATA_NASC');
   Query1.ParamByName('mes').AsInteger := 1;
   Query1.Open;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Necessito de extrair de uma base de dados todos os alunos que fazem anos num determinado mês. O meu problema está na ordenação por dia dessa lista. Alguém ajuda?

Fiz um teste e funciona sem problemas

procedure TForm1.Button1Click(Sender: TObject);
begin
   query1.SQL.Clear;
   Query1.SQL.Add('SELECT *');
   Query1.SQL.Add('FROM TABELA');
   Query1.SQL.Add('WHERE extract(month from DATA_NASC) = :mes');
   query1.SQL.Add('ORDER BY DATA_NASC');
   Query1.ParamByName('mes').AsInteger := 1;
   Query1.Open;
end;

abraço

Você está (mais uma vez) totalmente certo Jonas. Eu enganei-me, porque o que necessitava realmente era da ordenação por dia e não por data. Bem mais dificil, não?

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Tente assim:

procedure TForm1.Button1Click(Sender: TObject);
begin
   query1.SQL.Clear;
   Query1.SQL.Add('SELECT *');
   Query1.SQL.Add('FROM TABELA');
   Query1.SQL.Add('WHERE extract(month from DATA_NASC) = :mes');
   query1.SQL.Add('ORDER BY EXTRACT(DAY FROM DATA_NASC)');
   Query1.ParamByName('mes').AsInteger := 1;
   Query1.Open;
end;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Tente assim:

procedure TForm1.Button1Click(Sender: TObject);
begin
   query1.SQL.Clear;
   Query1.SQL.Add('SELECT *');
   Query1.SQL.Add('FROM TABELA');
   Query1.SQL.Add('WHERE extract(month from DATA_NASC) = :mes');
   query1.SQL.Add('ORDER BY EXTRACT(DAY FROM DATA_NASC)');
   Query1.ParamByName('mes').AsInteger := 1;
   Query1.Open;
end;

Abraços

Hum...

Obtenho um erro Invalid use of keyword Token Extract (DAY

Link para o comentário
Compartilhar em outros sites

  • 0
Tente assim:

procedure TForm1.Button1Click(Sender: TObject);
begin
   query1.SQL.Clear;
   Query1.SQL.Add('SELECT *');
   Query1.SQL.Add('FROM TABELA');
   Query1.SQL.Add('WHERE extract(month from DATA_NASC) = :mes');
   query1.SQL.Add('ORDER BY EXTRACT(DAY FROM DATA_NASC)');
   Query1.ParamByName('mes').AsInteger := 1;
   Query1.Open;
end;
Abraços
Hum... Obtenho um erro Invalid use of keyword Token Extract (DAY
Testei aqui e a query é exatamente essa:
select * from tabela
where extract(month from data_nasc) = :mes
order by extract(day from data_nasc)

Dá uma olhada no código e vê se você escreveu corretamente...

Outra coisa, se tiver o IBExpert aí teste essa query nele!

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Tente assim:

procedure TForm1.Button1Click(Sender: TObject);
begin
   query1.SQL.Clear;
   Query1.SQL.Add('SELECT *');
   Query1.SQL.Add('FROM TABELA');
   Query1.SQL.Add('WHERE extract(month from DATA_NASC) = :mes');
   query1.SQL.Add('ORDER BY EXTRACT(DAY FROM DATA_NASC)');
   Query1.ParamByName('mes').AsInteger := 1;
   Query1.Open;
end;
Abraços
Hum... Obtenho um erro Invalid use of keyword Token Extract (DAY
Testei aqui e a query é exatamente essa:
select * from tabela
where extract(month from data_nasc) = :mes
order by extract(day from data_nasc)

Dá uma olhada no código e vê se você escreveu corretamente...

Outra coisa, se tiver o IBExpert aí teste essa query nele!

Abraços

Ok Douglas

Obrigado pela sua paciência mas algo de errado está a acontecer. Esta query dá erro

queryanosmes.sql.add('select * from criancas where extract (month from data_nascimento)=:mes order by extract (day from data_nascimento)');

esta query não dá erro:

queryanosmes.sql.add('select * from criancas where extract (month from data_nascimento)=:mes and extract (day from data_nascimento)=:dia');

Estou a usar o Delphi 7 e não entendo porquê. Está o evento form create

Editado por Mario Lopes
Link para o comentário
Compartilhar em outros sites

  • 0
Eu testei a SQL no IBExpert e também no Delphi... e funcionou normal...

o parâmetro mes está como integer?

Sim, está como integer. Agora:

Algo está errado porque se eu criar um projecto novo, colocar uma query e escrever o seguinte código no sql

select * from criancas WHERE extract(month from DATA_NASCimento) = :mes order by EXTRACT(DAY FROM DATA_NASCimento)
Obtenho o erro
Invalid use of keyword Token (DAY
Line number: 1

Acho estranho como é que você não obtém este erro.

Editado por Mario Lopes
Link para o comentário
Compartilhar em outros sites

  • 0

Testa com o IBExpert essa query, segue o link da versão de 2004 que aparentemente é free!

http://www.4shared.com/file/MBoOgdPT/ibep_...12141_full.html

Registra seu banco de dados e conecta, em seguida vá em Ferramentas > Editor SQL, cola sua query lá e executa no botãozinho play(verde)

Se não trazer resultados você avisa...

P.S: vou viajar hoje depois do almoço e só volto segunda-feira que vem, se não resolvermos isso agora cedo creio que o Jhonas te ajuda beleza? :rolleyes:

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Testa com o IBExpert essa query, segue o link da versão de 2004 que aparentemente é free!

http://www.4shared.com/file/MBoOgdPT/ibep_...12141_full.html

Registra seu banco de dados e conecta, em seguida vá em Ferramentas > Editor SQL, cola sua query lá e executa no botãozinho play(verde)

Se não trazer resultados você avisa...

P.S: vou viajar hoje depois do almoço e só volto segunda-feira que vem, se não resolvermos isso agora cedo creio que o Jhonas te ajuda beleza? :rolleyes:

Abraços

Olá

Eu estou a usar BDE, o link que me dá não é para Interbase. É que existem diferenças entre sql de banco de dados para banco de dados. Será esse o problema?

Cumprimentos e boa viagem

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...