Série da semana: Primeiros passos no React

Veja mais

Erro de sintaxe ORA 00936 - ReportBuilder

14/01/2016

1

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.
Responder

Post mais votado

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.
Responder

Mais Posts

14/01/2016

Eduardo Lima

Acabei de tentar aqui, a primeira continuou retornando o mesmo erro, a segunda não reconheceu o QuotedStr...
Responder

14/01/2016

Ronaldo Filho

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

14/01/2016

P2

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.
Responder

14/01/2016

Eduardo Lima

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

14/01/2016

P2

Me manda a estrutura da sua tabela, vou criar um espelho e fazer o teste e respondo agora
Responder

14/01/2016

P2

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

Segue meu skype raimundo.ti
Responder

14/01/2016

Ronaldo Filho

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

14/01/2016

Eduardo Lima

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..
Responder

14/01/2016

Ronaldo Filho

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.
Responder

14/01/2016

P2

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

Showmessage (inttostr(dm.sua_tabela.recordcount);
Responder

14/01/2016

Eduardo Lima

Ronaldo,

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

14/01/2016

Eduardo Lima

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;
Responder

14/01/2016

Ronaldo Filho

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.
Responder

14/01/2016

Eduardo Lima

Muito obrigado pela ajuda, pessoal! :D
Responder