Mario Lopes Postado Abril 15, 2010 Denunciar Share Postado Abril 15, 2010 VivaNecessito 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 15, 2010 Denunciar Share Postado Abril 15, 2010 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 problemasprocedure 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mario Lopes Postado Abril 16, 2010 Autor Denunciar Share Postado Abril 16, 2010 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 problemasprocedure 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çoVocê 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Abril 16, 2010 Denunciar Share Postado Abril 16, 2010 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mario Lopes Postado Abril 19, 2010 Autor Denunciar Share Postado Abril 19, 2010 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çosHum...Obtenho um erro Invalid use of keyword Token Extract (DAY Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Abril 19, 2010 Denunciar Share Postado Abril 19, 2010 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mario Lopes Postado Abril 19, 2010 Autor Denunciar Share Postado Abril 19, 2010 (editado) 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çosOk DouglasObrigado pela sua paciência mas algo de errado está a acontecer. Esta query dá erroqueryanosmes.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 Abril 19, 2010 por Mario Lopes Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Abril 19, 2010 Denunciar Share Postado Abril 19, 2010 Eu testei a SQL no IBExpert e também no Delphi... e funcionou normal...o parâmetro mes está como integer? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mario Lopes Postado Abril 20, 2010 Autor Denunciar Share Postado Abril 20, 2010 (editado) 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 sqlselect * 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: 1Acho estranho como é que você não obtém este erro. Editado Abril 20, 2010 por Mario Lopes Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Abril 20, 2010 Denunciar Share Postado Abril 20, 2010 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.htmlRegistra 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mario Lopes Postado Abril 20, 2010 Autor Denunciar Share Postado Abril 20, 2010 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.htmlRegistra 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çosOlá 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Abril 20, 2010 Denunciar Share Postado Abril 20, 2010 Puxa cara me desculpa, eu tava com a cabeça no Firebird, eu mecho com isso o dia todo aqui, huahushusaDesculpa aí não poder ajudar agora, pelo menos é uma informação a mais que sabemos ehehehAbraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mario Lopes Postado Abril 21, 2010 Autor Denunciar Share Postado Abril 21, 2010 Viva. A solução é a seguinte:queryanosmes.sql.add('select Nome, data_nascimento, telemovel_pai,telemovel_mae,emailpai,emailmae, extract (day from data_nascimento) as dia from criancas where extract (month from data_nascimento) =:mes order by dia'); Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Mario Lopes
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
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.