Ola galera
to na parte final de um sistema
na parte de relatorios
porem to criando todos relatorios a mao mesm
e faço os selects que precisa e tals
dai
em nenhum momento eu fecho a coneçao ou o result set
mas o netbeans dah esse erro
java.sql.SQLException: Operation not allowed after ResultSet closed
já aconteceu para algum de voces?
abraços!
agradeço desde já a ajuda…
Em algum momento ele está sendo fechado sim, se vc colocar o código fica amis fácil de ajudar.
janjan
publicvoidrelatorioDevedores(){try{PdfWriter.getInstance(documento,newFileOutputStream("Relatório_devedores.pdf"));documento.open();Strings="select * from contrato where contratoId not in (select idContrato from cadLancamentos where data>='"+data.datai()+"' and data<='"+data.dataf()+"' ) ";System.out.println("sql do relatorio "+s);rs=st.executeQuery(s);rs.last();intnumLinhas=rs.getRow()+1;rs.beforeFirst();documento.add(newParagraph("Condominio do edificio João Alberto Schmitt"));documento.add(newParagraph("Relatorio dos Devedores do Mes de "+getData(cal)+""));Tabletabela=newTable(6,numLinhas);tabela.setAutoFillEmptyCells(true);tabela.addCell("Nome");tabela.addCell("Id. Condo.");tabela.addCell("Andar");tabela.addCell("Numero");tabela.addCell("Tamanho");tabela.addCell("vlr.por cub.");intx=0;/*o erro aponta aqui*/while(rs.next()){x=Integer.parseInt(rs.getString("contratoId"));System.out.println("x vale ->"+x);tabela.addCell(" "+rs.getString("pessoaId"));tabela.addCell(" "+rs.getString("condominioId"));tabela.addCell(" "+rs.getString("andar"));tabela.addCell(" "+rs.getString("numero"));tabela.addCell(" "+rs.getString("tamanho"));tabela.addCell(" "+calculaCub(x));}tabela.addCell("");tabela.addCell("");tabela.addCell(" DATA");tabela.addCell(" "+getData(cal));tabela.addCell(" ");tabela.addCell(" ");documento.add(tabela);}catch(Exceptione){e.printStackTrace();}documento.close();}publicfloatcalculaCub(intcodContrato){floatresultado=0;try{//tamanho contrato//String s = "select tamanho from contrato where contratoId=" + codContrato + " and contratoId not in (select idContrato from cadLancamentos where data>='" + data.datai() + "' and data<='" + data.dataf() + "' ) ";Strings="select tamanho from contrato where contratoId="+codContrato+"";System.out.println(""+s);ResultSetrs4=st.executeQuery(s);rs4.next();floattamContrato=Float.parseFloat(rs4.getString("tamanho"));System.out.println(""+tamContrato);resultado=(totcondo(codContrato)/somaC())*tamContrato;System.out.println("return resultado aqui "+resultado);}catch(Exceptione){e.printStackTrace();}returnresultado;}privatefloatsomaC(){floatsomaContratoT=0;try{Stringt="select sum(tamanho) as soma from contrato where ativo='t' ";System.out.println(""+t);ResultSetrs2=st.executeQuery(t);rs2.next();somaContratoT=Float.parseFloat(rs2.getString("soma"));System.out.println(""+somaContratoT);}catch(Exceptione){e.printStackTrace();}returnsomaContratoT;}privatefloattotcondo(intc){System.out.println("id contrato no metodo totcondo "+c);floattotalCondo=0;try{Stringy="SELECT A.tamanhoTotal,A.condominioId FROM condominio A, contrato B WHERE A.condominioId =B.condominioId and B.contratoId="+c+" limit 1";System.out.println(""+y);ResultSetrs3=st.executeQuery(y);rs3.next();totalCondo=Float.parseFloat(rs3.getString("tamanhoTotal"));System.out.println(""+totalCondo);}catch(Exceptione){e.printStackTrace();}returntotalCondo;}
mas nao sei onde tofechando
a logica eh isso ai
to criando o pdf na mao como disse
e o erro aponta pro while que tem no metodo reletoriodevedores
nao sei por que
janjan
esqueci de fala ele percorre o while 1 vez executa o metodo
calculaCub
e faz oque tem que fazer ali
quando volta pra fazer o while de novo ele da o erro
mduques
Testa ai o seguinte, no calculaCub usa outro PreparedStatement pra gerar o ResultSet
o velhinho oque faz o st1.setInt(1,s);
o s tem que ser um int que no meu caso ai ele eh o sql!!!
nao intendi?
soh pra tira uma duvida!!
flw
mduques
ops… foi mal
st1.setInt(1, codContrato);
janjan
agora coloquei tudo como voce falou e
dah esse erro justo nessa linha do st1.setInt
mas ele pelo menos percorre todo while
mas nao calcula nada por causa desse erro
No parameters defined during prepareCall()
cara soh te pesso isso por que nunca trabalhei com preparedstatement nao faço nem ideia do que pode tah acontecendo
flw
janjan
alguem sab por que eu tenho que colocar o setInt depois de criar o prepared statement?
flw
intendi!!
o sql eh o mesmo!
tah dando outros erros aqui vo tentar colocar todas as consultas envolvidas nesse metodo com o preparedstatement
talvez de certo
vlw a ajuda cara