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