Problema com RMS

Bom dia a todos

Tenho o seguinte código que busca dados em um RMS e depois atualiza os valores:

rs = RecordStore.openRecordStore(this.RMS_DADOS,true);
Filters.FilterBooleanData datafilter = new Filters.FilterBooleanData(Filters.FilterBooleanData.isNotFinished);
renum = rs.enumerateRecords(datafilter,null,true);
if(renum.hasNextElement())
{   
       dados = new Detalhe();
       currentOpId = renum.nextRecordId();
       record = new byte[rs.getRecordSize(currentOpId)];
       binstream = new ByteArrayInputStream(record);
       dinstream = new DataInputStream(binstream);
       rs.getRecord(currentOpId,record,0);
       dados.setSentInitialOperation(dinstream.readBoolean());
       dados.setSentFinalOperation(dinstream.readBoolean());
       dados.setFinished(dinstream.readBoolean());
       dados.setIdCabecalho(dinstream.readInt());
       dados.setCabdataini(dinstream.readUTF());
       dados.setCabmaquina(dinstream.readUTF());
       dados.setCaboperador(dinstream.readUTF());
       dados.setBloco(dinstream.readUTF());
       dados.setTarefa(dinstream.readUTF());
       dados.setTar_mot(dinstream.readUTF());
       dados.setHora_inicial(dinstream.readUTF());
       dados.setMinuto_ini(dinstream.readUTF());
       dados.setHora_fim(dinstream.readUTF());
       dados.setMinuto_fim(dinstream.readUTF());
       dados.setHorimetro_inicial(dinstream.readUTF());
       dados.setHorimetro_final(dinstream.readUTF());
       binstream.close();
       dinstream.close();
       record = null;
       
       // alterando dados

       dados.setHora_fim(get_strdatahora().getText().substring(11,13));
       dados.setMinuto_fim(get_strdatahora().getText().substring(14,16));
       dados.setHorimetro_final(get_txthori_inioper().getString().trim());                         
       dados.setFinished(true);

        bos = new ByteArrayOutputStream();
        dos = new DataOutputStream(bos);
        dos.writeBoolean(dados.isSentInitialOperation());
        dos.writeBoolean(dados.isSentFinalOperation());
        dos.writeBoolean(dados.isFinished());
        dos.writeInt(dados.getIdCabecalho());
        dos.writeUTF(dados.getCabdataini());
        dos.writeUTF(dados.getCabmaquina());
        dos.writeUTF(dados.getCaboperador());
        dos.writeUTF(dados.getBloco());
        dos.writeUTF(dados.getTarefa());
        dos.writeUTF(dados.getTar_mot());
        dos.writeUTF(dados.getHora_inicial());
        dos.writeUTF(dados.getMinuto_ini());
        dos.writeUTF(dados.getHora_fim());
        dos.writeUTF(dados.getMinuto_fim());
        dos.writeUTF(dados.getHorimetro_inicial());
        dos.writeUTF(dados.getHorimetro_final());
        dos.flush();
        record = bos.toByteArray();
        rs.setRecord(currentOpId,record,0,record.length);
        bos.close();
        dos.close();
        record = null
}

Depois disso inicio uma Thread que vai fazer a transmissão via HttpConnection para um servidor. Tudo funciona perfeito no emulador do Netbeans, o problema ocorre quando tento fazer a transmissão via GPRS com o sistema já rodando no celular. Quando mando inserir o registro, vai sem problemas, mas quando mando atualizar, que é o código acima, ocorre o erro InvalidRecordIdException. Como não tem como depurar pelo celular, acredito que o erro seja na linha:

rs.setRecord(currentOpId,record,0,record.length);

Alguem já passou por isto antes ou tem alguma idéia do que pode ser? Não entendo o porque ocorre este Exception se estou validando com um RecordFilter antes.

Agradeço qualquer ajuda.

Paulo Sampaio

Paulo,

Você já tentou capturar o stacktrace da exception e mostrar numa tela?? Ou antes de executar o setRecord mostrar o ID sendo modificado??

Também já pensou em usar o Floggy para persistência??

Um abraço!

Cara, usa o Floggy que você não vai mais ter problemas …