Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Evertooon

Listview - Problemas para gravar no BD

Recommended Posts

Gente,

 

vocês estão sendo minha última esperança.. hehe

 

É o seguinte: montei um formulário onde serão registradas as entradas dos produtos no estoque. No form, são digitados os dados referente a nota fiscal de compra dos produtos que serão movimentados.

Para isso, coloquei no fim do form um Listview, que armazena e exibe todos os registros (produtos) da nota fiscal antes que ela seja gravada por completo.

Esse listview é alimentado assim: o usuário digita no Form os dados do produto (qtdade, codigo, valor, etc), e clica no botão adicionar. Quando o primeiro item é adicionado, assume a sequência "001". Os outros itens assumem sequências crescentes (002; 003; 004 ... ).

 

Para gravar todos os itens, fiz da seguinte forma:

- Executei um WHILE que vai trabalhar até a listview ficar em branco:

 

While Not lstMovimentos.ListItems.Count = 0
Para isso, eu pego o primeiro item da listview, gravo no BD e elimino ele da listview, até que todos os itens sejam eliminados e o evento WHILE encerre.

Porém, quando eu elimino o primeiro registro (supondo que ele seja o "001"), o registro seguinte ("002") é renumerado e passa a ser o "001". Aí todos os registros são gravados na tabela com a sequencia 001.

Aí tentei fazer diferente: executei a gravação de baixo para cima, do último para o primeiro.

O processo de gravação funcionou, mas na tabela os registros ficam em ordem decrescente.

 

Outro problema que ocorre é este:

Quando um registro é eliminado da listview, a sequencia dele fica em branco. P. ex.: se eu tenho os registros 001, 002, 003, 004 e 005; aí elimino o registro 003 e 004; restarão para gravar os registros 001, 002 e 005. Mas quando eu executo o while, ele vai somando + 1 nos registros até acabar.

 

Ex.:

Dim Seq As IntegerWhile Not lstMovimentos.ListItems.Count = 0	 Seq = 1		 ' Executa o gravação da sequencia "Seq"		 ' Elimina o registro da sequencia "Seq	 Seq = Seq + 1 ' Alimenta a sequenciaWend

 

Se fica esse espaço em branco entre os registros, e o WHILE chega nessa sequencia que não existe, dá um erro.

 

 

Então eu preciso saber duas coisas:

 

* Como eu consigo fazer para gravar os registros em ordem crescente da listview? Existe um outro método para o WHILE, que não seja até a listview estar vazia?

 

* Como verificar se o registro (sequencia) exsite na listview para não ocorrer o erro durante a gravação?

 

Desde já agradeço se puder me ajudar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode fazer da seguinte forma, quando for inserir utilize a propriedade NewIndex, ou seja, quando os outro elementos da lista forem apagados os valores não serão alterados.OBS: Não precisa apagar os itens da lista, crie uma estrutura de repetição que percorra a quantidade de elementos da lista e quando finalizar limpe a mesma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.