EXTRACT() do firebird no delphi

23/03/2016

4

Tenho a query:

select IDDESPESA,
DESCRICAO,
VALOR,
DATA_VENCIMENTO,
PAGO,
extract(DAY from DATA_VENCIMENTO) AS DIA,
extract(MONTH from DATA_VENCIMENTO) AS MES,
extract(YEAR from DATA_VENCIMENTO) AS ANO
from TBDESPESAS
where 1 = 1
order by ANO, MES, DIA

meu problema é que quando coloco qryRelDespesas.FieldByName('DIA').AsInteger o delphi informa que esta coluna não existe? O que está errado?
Responder

Post mais votado

23/03/2016

Depende do método para que o campo seja reconhecido:

[b]1º Metodo[/b]: Colocando o código SQL no seu código fonte:

with qryRelDespesas do
  begin
    Close;
    SQL.Clear;
    SQL.Text := 'select IDDESPESA, DESCRICAO, VALOR, DATA_VENCIMENTO, PAGO, ' +
      ' extract(DAY from DATA_VENCIMENTO) AS DIA, extract(MONTH from DATA_VENCIMENTO) AS MES, ' +
      ' extract(YEAR from DATA_VENCIMENTO) AS ANO from TBDESPESAS where 1 = 1 order by ANO, MES, DIA';
    Open;
  end;

  ShowMessage(IBQuery1.FieldByName('DIA').AsString);


[b]2º Método[/b]: Você digita o código SQL diretamente propriedade SQL da query em tempo de projeto.

Neste caso para que funcione, dê duplo clique na Query, botão direito e adicione todos os fields na query.
Responder

Mais Posts

23/03/2016

Isaac Jose

boa tarde não conheço esse banco porem o problema deve estar no order by ... ele não deve reconhecer o campo dia pelo fato de ser um apelido.
Responder

23/03/2016

Emir Neto

O order by funcionou 100%, meu problema foi no TIBQuery, que não reconheceu o field
Responder

23/03/2016

Emir Neto

botão direito e adicione todos os fields na query
, esse foi meu erro primário. Já havia feito isso antes de colocar dia, mes e ano, aí não tinha como aparecer. Valeu pela dica.
Responder