Problemas com result set

Pessoal, bom dia,

Estou tendo um problema num result set, onde eu tenho que percorrer o mes, e retornar os dias em que tenho ocorrencia no banco, e nos que estiverem nulo
setar a ocorrencia do dia anterior preenchido…
Segue o código que estou usando, mas esta dando erro dizendo: ResultSet não esta posicionado corretamente, Talvez voce precise chamar next.


while(dataDeE.before(dataAteE) || dataDeE.equals(dataAteE)){
                if (rs.next()) {
                    itensEnd = new ItensEnderecamento();

itensEnd.getItemEntrada().getMovimentacao().setEmissaoEm(data);
itensEnd.setQuantidadeEntrada(rs.getDouble("quantidade"));
                    itensEnd.setQuantidade(rs.getDouble("atual"));

                    lista.add(itensEnd);

                    dataDeE.add(Calendar.DAY_OF_MONTH, 1);
                }else if(rs.wasNull()){
                  //  itensEnd = new ItensEnderecamento();

itensEnd.getItemEntrada().getMovimentacao().setEmissaoEm(dataDeE.getTime());
itensEnd.setQuantidadeEntrada(rs.getDouble("quantidade"));
                    itensEnd.setQuantidade(rs.getDouble("atual"));

                    lista.add(itensEnd);

                    dataDeE.add(Calendar.DAY_OF_MONTH, 1);
                }
            }

Cara, num ficou muito claro… tu precisa mostrar todos os registros (data 17/02/86, 14/05/2000, 01/01/01) ou a soma (3 datas no total)?

Achei estranho tu usar a o getDouble() pra data… da uma olhada na documentação e ve se o metodo getDate() pode ajudá-lo melhor!
http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html

Espero ter ajudado :wink:

eu preciso pegar todos os preenchidos, tipo: 13/04, 14/04, 30/04. e nos outros que não tem nada prencheer com o anterior… tipo, no 15/04 colocar os dados de 14/04, no 16/04 colocar os do dia 15/04… e assim vai …

 if (rs.next()) {...

Nessa parte você já identificou que seu rs está vazio e ainda assim você tentou buscar dados nele

}else if(rs.wasNull()){... setQuantidadeEntrada(rs.getDouble("quantidade")); itensEnd.setQuantidade(rs.getDouble("atual"));

Acho que seu problema está aí, verifica isso direito, blz?

Espero ter ajudado.

Então, o wasNull retorna o valor do último que não foi null.

que é isso que eu preciso tbm .

Qual BD vc está usando?

Nem todos os JDBCs dão suporte a todos os métodos do ResultSet, talvez esse seja o seu problema, tenta guardar em algum lugar o último não vazio e pega-lo dessa forma.

Tenta aí, e vai postando que a gente tenta te ajudar.

Vlw pela atenção, consegui resolver aqui, na verdade outra pessoa fez hehehe

Colocando a sql dentro do while e outras coisas que eu me perdi :confused:

Muito obg

Cara, é sempre legal tentar ajudar quem está com alguma dificuldade, quem ajuda também aprende.

Mas posta o código funcionando aí, sempre pode servir para outras pessoas que enfrentem a mesma dificuldade.

A estrutura ficou assim:


lista = new ArrayList<ItensEnderecamento>();

            while(dataDeE.before(dataAteE) || dataDeE.equals(dataAteE)){


            prepSt = con.prepareStatement(sql);

            prepSt.setInt(1, idCliente);
            prepSt.setDate(2, Apoio.getFormatSqlData(dataDeE.getTime()));

            ResultSet rs = prepSt.executeQuery();
            rs = prepSt.executeQuery();

            ItensEnderecamento itensEnd = null;


                while (rs.next()) {
                    itensEnd = new ItensEnderecamento();

itensEnd.getItemEntrada().getMovimentacao().setEmissaoEm(dataDeE.getTime());
itensEnd.setQuantidadeEntrada(rs.getDouble("quantidade"));
                 //   itensEnd.setQuantidade(rs.getDouble("atual"));

                    lista.add(itensEnd);


                }
                dataDeE.add(Calendar.DAY_OF_MONTH, 1);
            }



            return lista;