Consulta + subconsulta

2 respostas
R

Galera, esse é meu primeiro tópico.
E a dúvida que tenho é no código abaixo, onde:
con = minha conexão com Access

Erro:
Você tentou executar uma consulta que não inclui a expressão ‘NOME’ especificada como parte de uma função agregada.

O único campo não calculado utilizado na consulta é justamente o NOME e ele já está no GROUP BY, não sei mais o que pode ser.

con.conecta();
      con.executeSQL("" +
        "SELECT contas.nome, Sum(registros.entrada) AS SomaDeentrada, " +
        "(SELECT Sum(registros.saida) " +
        "FROM registros Where contas.nome = registros.sai) AS Somadesaida, IIf(IsNull([Somadeentrada]),0,[Somadeentrada]) AS Entradas, IIf(IsNull([Somadesaida]),0,[Somadesaida]) AS Saidas, [Entradas]-[Saidas] AS Total "+
        "FROM contas LEFT JOIN registros ON contas.nome = registros.entra "+
        "GROUP BY contas.nome");
      JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);
      JasperPrint jasperPrint = JasperFillManager.fillReport(
      "../RheL_Contabil/src/relatorios/classic2.jasper", new HashMap(), jrRS);
      JasperViewer.viewReport(jasperPrint, false);

OBS.: Essa consulta funiona perfeitamente tanto no Access quanto no Ireport, apenas quano a utilizo pela classe é que o problema aparece.

2 Respostas

R

Galera,

Identifiquei ontem mesmo o possível problema na classe responsável pela conexão com o Banco de Dados.
Ao criar o Statement eu utilizo dois parametros: ResultSet.TYPE_SCROLL_SENSITIVE e ResultSet.CONCUR_READ_ONLY, quando retiro esses parametros o relatório abre sem problemas, porém a navegação dos formulários deixa de funcionar.

Solução para cada relatório utilizo a conexão na própria classe que irá chamar o relatório.

Alguém saberia me explicar melhor o motivo disso acontecer?

W

Cara, gostaria muito de agradecer essa sua autoresposta.

Ajudou muito no meu projeto. :-o

Mudei para “TYPE_FORWARD_ONLY” no meu projeto e não tive mais problemas.

Vlw, mesmo. Abração!

Criado 10 de novembro de 2009
Ultima resposta 7 de nov. de 2012
Respostas 2
Participantes 2