[quote=Rafael Oliveira da Silva]Ola, sera que alguem pode por favor me explicar por que q para deletar um registro do RecorStore eu tenho que fazer assim :
int indice = lstNomes.getSelectedIndex();
rsNomes.deleteRecord(Integer.parseInt(vetIds.elementAt(indice).toString()));
porque nao pode ser assim ?
int indice = lstNomes.getSelectedIndex();
rsNomes.deleteRecord(indice)
por que tem que utilizar o vetor vetIds ?[/quote]
Pelo seu comentário nota-se que o código não foi feito por você.
A resposta da tua pergunta está ou com o programador que fez, e ele pode te explicar, ou com você, ao estudar melhor a aplicação e ver daonde é criado o vetor. De qualquer forma isto é algo particular a sua aplicação.
Não há problema nenhum de se fazer de ambos os modos. Prefiro o segundo por ser mais limpo e inclusive permitir que em modo de teste, eu uso o System.out.println para exibir o valor da variável, antes da chamada do método.
É um erro comum isso, e a resposta é simples: Pq vc não pode garantir que o índice do ítem selecionado na lista é o mesmo recordId do registro no RecordStore.
Os id’s do RecordStore são incrementais e imutáveis. Uma vez atribuido um id a um registro, não há como vc alterá-lo.
Ex: Você inseriu 3 registros no seu recordStore.
[1] = a
[2] = b <--- removeu
[3] = c
Você removeu o registro 2.
Você carregou os registros na lista novamente, e sua lista ficou assim:
[quote=chicobento]É um erro comum isso, e a resposta é simples: Pq vc não pode garantir que o índice do ítem selecionado na lista é o mesmo recordId do registro no RecordStore.
Os id’s do RecordStore são incrementais e imutáveis. Uma vez atribuido um id a um registro, não há como vc alterá-lo.
Ex: Você inseriu 3 registros no seu recordStore.
[1] = a
[2] = b <--- removeu
[3] = c
Você removeu o registro 2.
Você carregou os registros na lista novamente, e sua lista ficou assim:
[quote=Rafael Oliveira da Silva][quote=chicobento]É um erro comum isso, e a resposta é simples: Pq vc não pode garantir que o índice do ítem selecionado na lista é o mesmo recordId do registro no RecordStore.
Os id’s do RecordStore são incrementais e imutáveis. Uma vez atribuido um id a um registro, não há como vc alterá-lo.
Ex: Você inseriu 3 registros no seu recordStore.
[1] = a
[2] = b <--- removeu
[3] = c
Você removeu o registro 2.
Você carregou os registros na lista novamente, e sua lista ficou assim:
Ele recebe só o id. Para recuperar o registro, utilize o método getRecord
Não entendi o pq de concatenar “” com o id. Ao invés de utilizar vector, vc pode utilizar um vetor de int simples, ou então adicionar o recordId como um inteiro mesmo.
Ex:
id = reNomes.nextRecordId();
vetIds.addElement(new Integer(id));
byte[] registro = reNomes.getRecord(id);
[quote=boone][quote=Rafael Oliveira da Silva]
quando eu fasso isso abaixo utilizando um while o vetor vetIds recebe apenas os id ? ou ele recebe os id e os registros tb ?
id = reNomes.nextRecordId();
vetIds.addElement(""+id);
[/quote]
Cara, vc não tá lendo a documentação. Lá diz que é só os IDs…
Pô, esta dúvida aqui bastava vc ter consultado o javadoc da classe RecordStore e olhar o método nextRecordId… :? [/quote]
eu li a documentação sim
mais minha duvida nao é sobre a varivel id, pois isso está claro que a a varia id recebe apenas os ids
a duvida e sobre o vetor vetIds.addElement pois é passado dois parametros para ele "" e o id porisso surgiu a duvida
c vc diz que é soh os id pois entao c o vetIds.addElement recebe apenas os id por que disso —> b[/b] porque nao seria apenas assim —>b[/b] ???
[quote=chicobento][quote=Rafael Oliveira da Silva]
soh mais uma duvida
quando eu fasso isso abaixo utilizando um while o vetor vetIds recebe apenas os id ? ou ele recebe os id e os registros tb ?
id = reNomes.nextRecordId();
vetIds.addElement(""+id);
[/quote]
Ele recebe só o id. Para recuperar o registro, utilize o método getRecord
Não entendi o pq de concatenar “” com o id. Ao invés de utilizar vector, vc pode utilizar um vetor de int simples, ou então adicionar o recordId como um inteiro mesmo.
Ex:
id = reNomes.nextRecordId();
vetIds.addElement(new Integer(id));
byte[] registro = reNomes.getRecord(id);