Erro de sintaxe ORA 00936 - ReportBuilder

Oracle

Delphi

14/01/2016

Amigos, estou montando um relatório no ReportBuilder que usa uma Query em uma das variáveis. a variável compila normalmente mas na hora da impressão o relatório retorna o erro ORA 00936 - Missing expression. Segue o código abaixo.

var
Sql:String;   
begin     
Sql := 'SELECT AVG((DTVENC - DTLANC)) FROM PCLANC WHERE NUMNOTA = ' + DBText8.Text + 'AND DTVENC LIKE '' + DBText69.Text + ''';
Variable1.Value := ConsultaSql(sql);
end;
end;


Já tentei rodar isso de várias formas, em navegadores sql query roda normalmente, não sei onde estou errando.
Eduardo Lima

Eduardo Lima

Curtidas 0

Melhor post

Ronaldo Filho

Ronaldo Filho

14/01/2016

Boa tarde Grande.

Pelo que percebi pode ser um erro na escrita do Select

O seu tá assim
'SELECT AVG((DTVENC - DTLANC)) FROM PCLANC WHERE NUMNOTA = ' + DBText8.Text + 'AND DTVENC LIKE '' + DBText69.Text + '''


Acredito que deviria estar assim
'SELECT AVG((DTVENC - DTLANC)) FROM PCLANC WHERE NUMNOTA = ' + DBText8.Text + ' AND DTVENC LIKE ' +'''+ DBText69.Text +''' 


ou
'SELECT AVG((DTVENC - DTLANC)) FROM PCLANC WHERE NUMNOTA = ' + DBText8.Text + ' AND DTVENC LIKE ' + QuotedStr(DBText69.Text) 


Espero ter ajudado, qualquer coisa responde se deu ou não certo.
GOSTEI 1

Mais Respostas

Eduardo Lima

Eduardo Lima

14/01/2016

Acabei de tentar aqui, a primeira continuou retornando o mesmo erro, a segunda não reconheceu o QuotedStr...
GOSTEI 0
Ronaldo Filho

Ronaldo Filho

14/01/2016

Grande tenta com a QuotedStr, mas adiciona nas dependências (uses) a SysUtils, a função QuotedStr pertence a ela.
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

14/01/2016

Boa tarde, tente assim

var
Sql:String;
begin
Sql := 'SELECT AVG((DTVENC - DTLANC)) FROM PCLANC WHERE NUMNOTA = ' + DBText8.Text + 'AND DTVENC LIKE ''+QuotedStr('%'+DBText69.Text+'%');
Variable1.Value := ConsultaSql(sql);
end;
end;

Só uma observação, como você está usando campos DBEDITs, verifique se os datas sets estão ativos,
Eu geralmente uso edits simples, coletando e repassando informações para as tabelas nos momentos necessários.
GOSTEI 0
Eduardo Lima

Eduardo Lima

14/01/2016

Amigo, acabei de tentar aqui e retornou de novo o 00936. Também tentei usar Chr(39) :'(
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

14/01/2016

Me manda a estrutura da sua tabela, vou criar um espelho e fazer o teste e respondo agora
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

14/01/2016

Preciso dos dados que estão dentro dos
+ DBText8.Text + ' AND DTVENC LIKE ' +'''+ DBText69.Text +'

Segue meu skype raimundo.ti
GOSTEI 0
Ronaldo Filho

Ronaldo Filho

14/01/2016

Eduardo Lima, faz um teste também para ver o que os DBText8.Text e DBText69.Text, estão retornando.
GOSTEI 0
Eduardo Lima

Eduardo Lima

14/01/2016

Cara, dentro do DBText8, vem um número de nota, ex: 386
e no DBText69 vem uma data, ex: 14/01/2015.

Continuo recebendo o mesmo retorno só na hora de exibir o relatório, esse select que fiz funciona normalmente, só dentro do relatório que não..
GOSTEI 0
Ronaldo Filho

Ronaldo Filho

14/01/2016

Nesse caso precisaríamos do código para analisar melhor. Se você puder disponibilizar parte dele, poderemos ajudar mais. Enquanto isso da uma olhada no formato da data passada pelo campo DBText69, por que quando você faz o teste do Select na mão, você pode estar passando a data formatada corretamente, porém, o DBText69 pode estar passando a data formatada errada.
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

14/01/2016

Antes de imprimir o relatório
Retorne a quantidade de registro.

Showmessage (inttostr(dm.sua_tabela.recordcount);
GOSTEI 0
Eduardo Lima

Eduardo Lima

14/01/2016

Ronaldo,

Mas se a data tivesse vindo no formato incorreto, acho que não retornaria esse erro específico, não?
GOSTEI 0
Eduardo Lima

Eduardo Lima

14/01/2016

Consegui exibir, puxando os dados de outra forma, segue o código:

var
Sql:String; 
begin 
Sql := 'SELECT AVG((DTVENC - DTLANC)) FROM PCLANC WHERE NUMNOTA = ' + PCMov_Ent['NUMNOTA'] + 'AND DTVENC LIKE '+Chr(39)+ PCMov_Ent['DTMOV']+Chr(39);
Variable1.Value := ConsultaSql(sql);
end;
end;
GOSTEI 1
Ronaldo Filho

Ronaldo Filho

14/01/2016

Hoo cara, foi show essa ai viu, mas qualquer coisa pode contar com a gente aqui. Dessa vez não ajudamos muito mas, quem sabe da próxima kkkkkkk.
GOSTEI 1
Eduardo Lima

Eduardo Lima

14/01/2016

Muito obrigado pela ajuda, pessoal! :D
GOSTEI 0
POSTAR