Fórum Erro ao criar relatorio de aniver... #421675

15/08/2012

0

Olá , gostaria de ajuda para resolver um problema que está me encomodando no delphi , quando eu vou clicar para gerar o Relatório de aniversariantes da este erro:
ISC ERROR CODE:335544569

ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -104
Token unknown - line 1,column 92
WHERE

STATEMENT:
TIBOInternalDataset:
"<TApplication>frmLogin.frmPrincipal.frmGeraRelAniv.Query_Aniv.IBOqrQuery_Aniv."

Utilizei este codigo SQL:
SELECT CADASTRO.NOME,CADASTRO.DATA_NASCIMENTO,CADASTRO.EMAIL,CADASTRO.CONTATO
      FROM CADASTRO WHERE EXTRACT(MONTH FROM CADASTRO.DATA_NASCIMENTO) BETWEEN :IMESINICIAL
      AND :IMESFINAL AND EXTRACT(DAY FROM CADASTRO.DATA_NASCIMENTO)
      BETWEEN :IDIAINICIAL AND :IDIAFINAL


Não sei porque da este erro ja testei no IBExpert e o codigo funcionou não sei o que é preciso de ajuda!
Jonathan Romeiro

Jonathan Romeiro

Responder

Posts

15/08/2012

Leandro Carvalho

Talvez seja algum problema com o componente de acesso, ou até mesmo os parâmetros não estão sendo passados.
Tente mandar o código sql via comando junto com os parâmetros.
Ex:

Conponente.SQL.Text := 'SELECT CADASTRO.NOME,CADASTRO.DATA_NASCIMENTO,CADASTRO.EMAIL,CADASTRO.CONTATO' +
'FROM CADASTRO WHERE (EXTRACT(MONTH FROM CADASTRO.DATA_NASCIMENTO) BETWEEN ' + IMESINICIAL +
' AND ' + IMESFINAL + ') AND (EXTRACT(DAY FROM CADASTRO.DATA_NASCIMENTO) BETWEEN ' + IDIAINICIAL + ' AND ' + IDIAFINAL + ')';
Responder

Gostei + 0

15/08/2012

Deivison Melo

Seria interessante ver como está na unit...

Esse sql é exatamente o q foi colocado no sistema e apresentou os problemas?
Responder

Gostei + 0

17/08/2012

Jonathan Romeiro

Seria interessante ver como está na unit...

Esse sql é exatamente o q foi colocado no sistema e apresentou os problemas?


Sim
Responder

Gostei + 0

17/08/2012

Jonathan Romeiro

Está assim na Unit:
with Query_Aniv do
    begin
      Close;
      Sql.Clear;
      SQL.Add('SELECT CADASTRO.NOME,CADASTRO.DATA_NASCIMENTO,CADASTRO.EMAIL,CADASTRO.CONTATO'+
      'FROM CADASTRO WHERE EXTRACT(MONTH FROM CADASTRO.DATA_NASCIMENTO) BETWEEN :IMESINICIAL'+
      'AND :IMESFINAL AND EXTRACT(DAY FROM CADASTRO.DATA_NASCIMENTO)'+
      'BETWEEN :IDIAINICIAL AND :IDIAFINAL');
      ParamByName('IMESINICIAL').AsString := edtMesInicial.Text;
      ParamByName('IMESFINAL').AsString := edtMesFinal.Text;
      ParamByName('IDIAINICIAL').AsString := edtDiaInicial.Text;
      ParamByName('IDIAFINAL').AsString := edtDiaFinal.Text;
      Open;
    end;

    if not(Query_Aniv.RecordCount = 0) then
      begin
        frmRelAniversariantes := TfrmRelAniversariantes.Create(Self);
        frmRelAniversariantes.QuickRep1.Preview;
        frmRelAniversariantes.QuickRep1.Free;
     end
    else
      begin
        ShowMessage('Nenhum registro encontrado !');
        Query_Aniv.Close;
        Query_Aniv.SQL.Clear;
      end;

Responder

Gostei + 0

17/08/2012

Romulo Contro

da um showmessage(SQL.Text) antes do Open ali, pra ver como que tá indo o sql pro banco...
Responder

Gostei + 0

17/08/2012

Romulo Contro

ah, acho que já sei...

não tem espaço no '+ entao ele tá juntando direto com a linha de baixo...

tenta colocar um espaço antes do '+ igual aí em baixo:

SQL.Add('SELECT CADASTRO.NOME,CADASTRO.DATA_NASCIMENTO,CADASTRO.EMAIL,CADASTRO.CONTATO '+
'FROM CADASTRO WHERE EXTRACT(MONTH FROM CADASTRO.DATA_NASCIMENTO) BETWEEN :IMESINICIAL '+
'AND :IMESFINAL AND EXTRACT(DAY FROM CADASTRO.DATA_NASCIMENTO) '+
'BETWEEN :IDIAINICIAL AND :IDIAFINAL');
Responder

Gostei + 0

17/08/2012

Jonathan Romeiro

Rômulo , era isso mesmo , problema resolvido , muito obrigado , menos um problema para a cabeça!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar