Apagar um registro

Pessoal,

Estou com um problema um tanto quanto tosco aqui que está me dando nos nervos rsrsrsrs

É o seguinte estou deletando um record "rs.deleteRecord(1);" e a ação está sendo concluída com sucesso, o problema é a posição 1 fica vazia…

exemplo:

posição      descrição
    0           Maria
    1           José
    2           Marcio
    3           Pedro
    4           João
    5           Lucas

nessa ocasião o rs.getNumRecords() é igual a 6

se eu deletar o item 1 por exemplo e mandar listar os registros

                for (int i=1;i<=rs.getNumRecords(); i++) {
                    listaUsuarios.append(dao.getRecord(rs, i), null);
                }

o resultado seria esse:

Maria

Marcio
Pedro
Joao

nessa ocasião o rs.getNumRecords() é igual a 5

como fazer para que quando eu deletar um registro a posição que ele estava realmente deixa de existir???

Cara,

Tenho pouca experiência nisso mas, parece a classe RecordStore cria uma valor único para cada registro, quando você apaga os valores não são reorganizado.

Tenta usar a classe RecordEnumeration.

Opa cara obrigado pela iniciativa, mas infelizmente acho que não posso usar o RecordEnumeration porque gravo meus dados da seguinte forma no recordStore

posição    valor
    1         Maria José
    2         Rua das palmeiras, 110
    3         Jd Horizonte
    4         Augusto César
    5         Avenida das Torres, 450
    6         Jd Planalto
    7         Mário Filho
    8         Rua das aroeiras, 050
    9         Jd Floresta

    perceba que a cada 3 posições eu tenho um registro completo com (nome, endereço e bairro) se eu usar o RecordEnumeration ele vai organizar meus dados de forma que eu não vou conseguir recuperar meus registros de forma correta.

Tem alguma solução para meu problema???

Só vejo duas possibilidades:

  1. Antes da função listaUsuarios.append(X) você deve testar o resultado de X e só inserir valores validos;

  2. Você utiliza algo semelhante a função split() e insere os registros: nome|endereco|cidade. Depois é só usar o split e já dá para usar o RecordEnumeration.

valew evandro pela força,

Em conversa com um colega de trabalho descobri que não tem como apagar um registro como estava querendo fazer, por isso tive que usar do velho artificio da serialização e criei um método split para poder recuperar os valores.

segue o método caso alguém precise usá-lo no futuro.

	public static String[] split(String texto, String separador){
	        Vector lista = new Vector();
	        String aux;
	        
	        while(texto.indexOf(separador) > -1){
	               aux = texto.substring(0,texto.indexOf(separador));
	               texto = texto.substring(texto.indexOf(separador)+1);
                       lista.add(aux);
                       if(texto.indexOf(separador) == -1)
            	              lista.add(texto);
               }	

	       String[] retorno = new String[lista.size()];
	       lista.copyInto(retorno);
	       return retorno;
	}