Ir para conteúdo
Fórum Script Brasil
  • 0

Actualizar O Total


Guest Rui Gomes

Pergunta

Guest Rui Gomes

Viva ppl !!!

O problema é o seguinte:

eu tenho uma listview onde se registou os produtos e os seus respectivos preços que foram seleccionados na listview1, e o q tou a tentar fazer agora é ah medida q vai ser removida a linha da listview(Linha com Produto e Preço), seja então actualizado o total q esta na listview depois da eliminação,

ou seja qd carrego no botao eliminar produto, ele elimina uma linha, mas depois deve actualizar o total q ficara depois na listview.

já consigo eliminar, o problema é mesmo actualizar o total da compra...

If ListView2.ListItems.Count <> 0 Then

ListView2.ListItems.Remove ListView2.SelectedItem.Index

End If

If ListView2.SelectedItem.SubItems(1) = 20 Then

total = total - 20

saldo = saldo +20

Else

total = total - 40

saldo = saldo + 40

End If

Como so tenho dois preços, pensei q poderia fazer assim...

ele assim ate faz a subtracção do preço quando retiro um produto, mas qd a listview tem um unico produto, da erro

porque q da erro ??

ajudem-me

cumps

Link para o comentário
Compartilhar em outros sites

21 respostass a esta questão

Posts Recomendados

  • 0
ele assim ate faz a subtracção do preço quando retiro um produto, mas qd a listview tem um unico produto, da erro

porque q da erro ??

Note que se não existir nenhum item na listview, então consequentemente você não terá um item selecionado (neste caso, SelectedItem é nulo). Por isso você está recebendo um erro ao tentar utilizá-lo (naquele segundo If).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
mas como posso resolver o problema do IF para n dar nenhum erro ??

Lendo a minha resposta com atenção você vai ver que eu *já* dei a solução. Se SelectedItem vai ser nulo quando não houver itens, basta você verificar se ele não é nulo, ou seja, se existe realmente um item selecionado:

If ListView2.ListItems.Count <> 0 Then
  ListView2.ListItems.Remove ListView2.SelectedItem.Index
End If
if not ListView2.SelectedItem is nothing then
  If ListView2.SelectedItem.SubItems(1) = 20 Then
    total = total - 20
    saldo = saldo +20
  Else
    total = total - 40
    saldo = saldo + 40
  End If
endif

Sacou? wink.gif

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Rui Gomes

obrigado pela dica wink.gif

esse problema ta resolvido...

agora gostaria de saber como faço para q n seja possivel adicionar mais do q um produto do mesmo tipo da listview1 para a listview2.

ou seja ele na listview1 clica num produto e esse produto so pode aparecer uma vez na listview 2.

como faço isto ??

obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

obrigado pela dica  wink.gif

esse problema ta resolvido...

smile.gif

agora gostaria de saber como faço para q n seja possivel adicionar mais do q um produto do mesmo tipo da listview1 para a listview2.

ou seja ele na listview1 clica num produto e esse produto so pode aparecer uma vez na listview 2.

como faço isto ??

Quando você for adicionar um item à ListView2 percorra primeiro todos os que estão lá, verificando se o item a ser adicionado já existe nela; se existir, você não adiciona novamente; caso contrário, você adiciona normalmente.

Ah, e se cadastra aí no fórum para poder aproveitar todos os recursos e ainda ajudar a nossa comunidade a crescer, beleza? wink.gif

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
sera q me podia arranjar um exemplo de como fazer isso ??

é q tenho algumas dificuldades...

qt a registar no forum, vou registar prometo wink.gif

Ok, aí vai um exemplo simples:

    Dim elemento As ListItem
    
    achou = False
    For Each elemento In ListView2.ListItems
        If elemento.Text = para_adicionar Then
            achou = True
            Exit For
        End If
    Next elemento
    
    If Not achou Then
        ListView2.ListItems.Add , , para_adicionar
    End If

Tenha em mente que para_adicionar é uma variável com o texto do item selecionado na ListView1 (suponho que você saiba obter o texto do item selecionado). Aquele For Each serve para percorrer todos os itens da ListView (que estão na coleção ListItems) e cada iteração (volta do loop) olha-se se o texto do elemento atual (da iteração) é igual ao que vai ser adicionado; caso seja, define-se que achou é igual a verdadeiro (antes disso definiu-se que era falso). Dessa maneira, somente se o item for igual é que o If dentro do For Each será executado e somente nesse caso é que achou será verdadeiro.

Após o término do loop verifica-se a situação de achou e adiciona-se o item se a condição for verdadeira.

Sacou? wink.gif

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Rui Gomes

sim percebi a sua ideia,

agora penso q ah ainda um problema, é q na listview1 vao ser carregados textos a partir da base de dados, por isso vai ser mais complicado comparar o texto q vem da listview1 ?

como estou a usar dados q vem da bd como ficara o exemplo então ?

cumps wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

sim percebi a sua ideia,

agora penso q ah ainda um problema, é q na listview1 vao ser carregados textos a partir da base de dados, por isso vai ser mais complicado comparar o texto q vem da listview1 ?

Não, vai dar no mesmo; uma vez os dados estando na ListView1 eles serão parte dela, sem associações com o banco de dados.

como estou a usar dados q vem da bd como ficara o exemplo então ?

A idéia não é pegar os dados do banco de dados e jogar para a ListView1 e depois a partir desta preencher a ListView2? Ou seja, a ListView1 terá uma cópia exata dos dados da tabela do banco de dados e a ListView2 é onde o usuário escolherá quais os itens da ListView1 ele quer? Ele vai manipular a ListView1 também?

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Rui Gomes

A idéia não é pegar os dados do banco de dados e jogar para a ListView1 e depois a partir desta preencher a ListView2?

sim a ideia é mesmo essa...

eu vou experimentar o seu codigo e depois digo alguma coisa

obrigado wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Rui Gomes

algo estara errado...

eu coloquei conforme voce disse para seleccionar o texto da listview1, e mesmo assim n esta a fazer com q seja adiconado ah listview2 so uma vez o mesmo produto.

  Dim elemento As ListItem

 

  achou = False

  x = listview1.selecteditem

  For Each elemento In ListView2.ListItems

      If elemento.Text = x Then

          achou = True

          Exit For

      End If

  Next elemento

 

  If Not achou Then

      ListView2.ListItems.Add , , t

  End If

o q esta errado ??

cumps wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Rui Gomes

 

Dim elemento As ListItem

  achou = False

  x = listview1.selecteditem

  For Each elemento In ListView2.ListItems

      If elemento.Text = x Then

          achou = True

          Exit For

      End If

  Next elemento

  If Not achou Then

      ListView2.ListItems.Add , , x

  End If

substitui o x pelo t, porque me tinha enganado....

mas mesmo assim n esta ai o problema

cumps wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Você não está pegando o texto, e sim um objeto do tipo ListItem. Assim é o certo:

x = listview1.selecteditem.text

Além disso, seria ideal verificar se existe realmente um item selecionado para só então executar o restante do código (aquele mesmo caso do seu primeiro post).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Rui Gomes

Private Sub Combo_Click()

    Combo.Enabled = False

    t = listview1.SelectedItem

    Dim elemento As ListItem

    achou = False

    If Not ListView2.SelectedItem Is Nothing Then

    For Each elemento In ListView2.ListItems

        If elemento.Text = t Then

            achou = True

            Exit For

        End If

    Next elemento

    End If

   

    If Not achou Then

        ListView2.ListItems.Add , , t

    End If

End Sub

eu queria era q quando selecciona-se o tipo de pagamento na combo,

depois o utilizador n podesse seleccionar mais do q um elemento da listview1 para a listview2...

eu fiz o q voce disse...

mas n esta dando resultado sad.gifsad.gif

q pode estar errado ??

Link para o comentário
Compartilhar em outros sites

  • 0

Private Sub Combo_Click()

    Combo.Enabled = False

    t = listview1.SelectedItem

    Dim elemento As ListItem

    achou = False

    If Not ListView2.SelectedItem Is Nothing Then

    For Each elemento In ListView2.ListItems

        If elemento.Text = t Then

            achou = True

            Exit For

        End If

    Next elemento

    End If

   

    If Not achou Then

        ListView2.ListItems.Add , , t

    End If

End Sub

eu queria era q quando selecciona-se o tipo de pagamento na combo,

depois o utilizador n podesse seleccionar mais do q um elemento da listview1 para a listview2...

eu fiz o q voce disse...

mas n esta dando resultado sad.gifsad.gif

q pode estar errado ??

Agora complicou... você quer que ele (o usuário) selecione *apenas um* elemento para ser copiado da ListView1 para a ListView2 ou você quer que ele não possa colocar elementos repetidos na ListView2 (sendo os elementos provenientes da ListView1)?

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Rui Gomes

Agora complicou... você quer que ele (o usuário) selecione *apenas um* elemento para ser copiado da ListView1 para a ListView2 ou você quer que ele não possa colocar elementos repetidos na ListView2 (sendo os elementos provenientes da ListView1)?

quero q o usuario apenas possa seleccionar um elemento do mesmo tipo para a listview2, e assim a listview2 n tenha produtos repetidos...

ou seja

ListView1

----------------

Keyboard

Mouse

Estes dados são carregados directamente da bd, por isso n ah problema

agora o q quero é q n apareca dois teclados nem dois mouses na listview2

entende a ideia ???

obrigado wink.gif

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...