Duvida em aplicação desktop

8 respostas
Zeed01

Boa noite colegas !

Tenho uma tela de cadastro de equipamentos onde eu posso navegar pelos registros através de botões primeiro, proximo, anterior e último e posso cadastrar um novo equipamento, alterar ou excluir um existente.

Meu problema é o seguinte:
Quando eu crio um novo, após salvar, não sei como fazer para que o equipamento mostrado seja o que acabei de cadastrar…

Funciona mais ou menos assim:

Uma classe CadatroEquipamento - é a interface com o usuario, ela possui um objeto Equipamento, onde deve sempre estar carregado os dados do Equipamento que deve ser mostrado.

Uma classe EquipamentoControl - nessa classe existe um List com todos os Equipamentos cadastrados e métodos proximo, anterior, etc que mudam a posição dentro dessa lista e retorna para a View o Equipamento atual, que então é mostrado

Uma classe EquipamentoDAO - essa classe faz o acesso ao banco retornando para a Control os equipamentos cadastrados ou realizando açoes como gravar e apagar.

Quando eu solicito a criação de um Novo Equipamento e depois mando gravar no banco, eu recrio a List para que ela seja atualizada na ordem correta de apresentação.

Eu queria um jeito de localizar dentro da lista o Equipamento que foi criado e torná-lo como o atual a ser mostrado.

Já tenho um método para localizar equipamentos pelo ID nessa lista, o problema é que quando é um novo, quando eu mando gravar eu ainda não tenho esse ID para utilizar na localização, já que o campo ID no banco é do tipo auto-increment…

Alguém tem alguma sugestão ?

Obrigado.

Abraços a todos.

8 Respostas

Zakim

acredito que isso acontece pq vc ja esta conectado ao banco e o objeto que recebe os valores ja possui o ultimo valor atribuido para mostrar…
De acordo com o que vc disse. o banco responde de acordo com o seu comando certo…

quando vc clicar no botão savar faça uma consulta diferenciada a procura do seu utimo registro (na determinada tabela).

espero ter ajudado…
se nao for isso, pesso que demonstre mais a complexidade do seu problema…

valeu…:stuck_out_tongue:

Zeed01

Zakim:

Eu já faço essa busca quando estou salvando uma alteração em um registro que já existe, porque nesse caso eu tenho o ID para localizar qual registro, no caso qual Equipamento, deve aparecer na tela.

No entando, quando eu cadastro um novo, no momento em que clico no botão salvar, eu ainda não tenho esse ID, ja que ele vai ser gerado somente do momento em que os dados forem persistidos na tabela.

Como disse o campo ID é auto-increment.

Eu até poderia mover para o ultimo registro da lista, mas não posso garantir que esse vai ser o registro que acabei de incluir, pois pode ocorrer de dois usuários estarem inserindo informações ao mesmo tempo… entende ?

Obrigado.

Um abraço.

Zakim

é… hehehe

um tanto complicado pra quem ta d fora… hehehe

bom… que tal 2 objetos… um com o id atual que ja esta persistindo e o outro para armazenar o novo dado salvo…

vc faz um estado para os objetos…

todo o resultado de consulta fica no objteto 1
e todo resultado de alteração ou salvamento fica no objeto 2

dessa forma vc pode alternar para um ou outro objeto a ser mostrado…

…se nao for a solução…

posta de novo que a gent tenta outra… :stuck_out_tongue:

valeu

Zeed01

Hehehe… acho que eu não estou sabendo explicar o problema…

Isso é normal, sempre me enrola nas explicações… hehehe

Veja bem… eu não entendi como vou ter dois objetos… bom na verdade eu já tenho, um esta com o objeto atual que estava sendo mostrado na tela no momento em que cliquei em “Novo”… só que o segundo objeto que possui os dados que eu digitei e cliquei em salvar, ainda não possui o campo ID.
Esse campo vai ser criado pelo banco, no momento em que o dado é gravado na tabela…

Ou será que eu não entendi sua sugestão ?

Zakim

hehehe…

puts… verdade…
mas vc precisa necessariamente ter esse id para mostrar?

não tem como exibir esses dados utilizando o proprio objeto como fonte?
ai vc não mostraria o id… heheh… gambiarra :stuck_out_tongue:

vai postando ai… uma hora aparece uma ideia q da certo…

t+

Zeed01

Mesmo que eu não mostrasse o ID…

Veja a situação: nos botões primeiro, próximo, anterior e último eu ando na minha Lista.
Quando eu incluo um registro novo eu recarrego a lista.

Então vamos supor que na lista eu tenho:
1 - Caneta
2 - Lapis
3 - Borracha
Eu incluo o
4 - Caderno

A lista fica:
1 - Caneta
2 - Lapis
3 - Borracha
4 - Caderno

eu posso até mostrar os dados do Caderno, mas:
1 - se clicar em próximo vai mostrar o 2 - Lapis, porque a lista, na verdade esta posicionada no 1 - Caneta.

2 - se após salvar, a pessoa resolver alterar alguma coisa e daí só gravar a alteração eu não terei o ID que é o que tenho que usar pra fazer o update ou o delete…

Zakim

bom…

acredito que um padrão de projeto possa resolver isso…

:stuck_out_tongue:

da uma procurada sobre o padrão estado kra…

seus objetos mudarão de estado a cada interação…

por exemplo

if (estado = salvar){

lista1

else if(estado = outraoperação){

lista2

e por ai vai… o padrão estado é um tanto mais compleo q isso, mas creio q pode ajuda-lo

carrega as listas dinamicamente…

haaa. tem mais uma coisa…

esse negocio de proximo registro é meio complicado kra…(isso me lembra o excel e aqueles formularios prontos do delphi).

use JTable ou algum outro componente para apresentar seus dados e implemente alguma interação atraves do mouse… dessa forma o usuario vai direto no registro que ele quer e nao precisa ficar apertando proximo e talls…

:stuck_out_tongue:

Zeed01

Bom dia colega,

Zakim:

da uma procurada sobre o padrão estado kra…

Amigo… vc tem algum link ou dica sobre esse padrão ?
Eu não estou encontrando nada a respeito…

Não entendi como funcionaria essa verificação de estado… o que seria essa lista1 e lista2 ?

Tem algum exemplo ?

Um abraço.

Criado 6 de julho de 2007
Ultima resposta 10 de jul. de 2007
Respostas 8
Participantes 2