Erro ao criar relatorio de aniver...
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:
Utilizei este codigo SQL:
Não sei porque da este erro ja testei no IBExpert e o codigo funcionou não sei o que é preciso de ajuda!
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."
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 :IDIAFINALNão sei porque da este erro ja testei no IBExpert e o codigo funcionou não sei o que é preciso de ajuda!
Jonathan Romeiro
Curtidas 0
Respostas
Leandro Carvalho
15/08/2012
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 + ')';
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 + ')';
GOSTEI 0
Deivison Melo
15/08/2012
Seria interessante ver como está na unit...
Esse sql é exatamente o q foi colocado no sistema e apresentou os problemas?
Esse sql é exatamente o q foi colocado no sistema e apresentou os problemas?
GOSTEI 0
Jonathan Romeiro
15/08/2012
Seria interessante ver como está na unit...
Esse sql é exatamente o q foi colocado no sistema e apresentou os problemas?
Esse sql é exatamente o q foi colocado no sistema e apresentou os problemas?
Sim
GOSTEI 0
Jonathan Romeiro
15/08/2012
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;
GOSTEI 0
Romulo Contro
15/08/2012
da um showmessage(SQL.Text) antes do Open ali, pra ver como que tá indo o sql pro banco...
GOSTEI 0
Romulo Contro
15/08/2012
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');
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');
GOSTEI 0
Jonathan Romeiro
15/08/2012
Rômulo , era isso mesmo , problema resolvido , muito obrigado , menos um problema para a cabeça!
GOSTEI 0