Notifications
Clear all

Ref3=ListView

7 Posts
2 Usuários
0 Reactions
1,730 Visualizações
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Quero fazer uma referencia para que a TextBox de nome REF3 seja igual a Linha da ListView selecionada o comando abaixo poderiam me acertar ?

Ref3.Value = ListView2.SelectedItem.Index ' Se eu por isso entao REF3 vai ser igual a 1 ( desejo que seja igual a 345 ), caso eu selecione na ListView a linha 3.

sendo que :
1 linha da ListView coluna 0 = 213
2 Linha da ListView coluna 0 = 134
3 Linha da ListView coluna 0= 345

Linha Selecionada é a Terceira, desta forma quero que REF3= 345

Grato

Andre

 
Postado : 17/09/2017 8:34 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Achei um pouco confusa a explicação, mas se entendi corretamente você quer quer se a Linha 3 for a selecionada o TextBox "REF3" receba o número "345", se for isto, as instruções abaixo fazem a verificação.

        With ListView2
            
            For I = 1 To .ListItems.Count
                
                If .ListItems(I).Selected Then
                    
                    sLin = I
                    
                    If sLin = 3 Then REF3 = "345"
                
                End If
                
            Next
            
        End With

ou

With ListView2
            
    For I = 1 To .ListItems.Count
                
        If .ListItems(I).Index = 3 Then
                    
            REF3 = "345"
                
        End If
                
    Next
            
End With

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 18/09/2017 5:56 am
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Bom dia Mauro, seria mais ou menos isso sim.

Na Verdade o numero 345, poderia ser outro codigo de produto como 4, 214, etc

vou detalhar aqui: Tenho uma Consulta.Value que recebe o nome do Produto , dentro dessa Consulta_Change, foi colocada uma Macro que conforme for se digitando as inicias do Produto vai aparecendo na ListView2 todos os produtos do meu banco de dados que se iniciam com as letras ja digitadas. Pronto, agora escolho dentro da ListView 1 o produto e com um Duplo Click na ListView sobre a linha do Produto , este eu coloco na ListView1, para entao dai dar procegmento a outra rotina de meu projeto.

Porem se num próximo Duplo Click no mesmo Codigo, ao inves de criar outra linha em ListView1, ele soma + 1 ao item ja posto em ListView1.

Para isso estou enviando o codigo aqui, onde so preciso acertar este comando

' Se a Linha da ListView1 = a Linha da ListView2 Then
' Codigo = ListView2.ListItems.Item(x)
' End If

Acertando isso, entao nao terei duplicidade do mesmo produto em ListView1

Grato e espero agora que tenha entendido.

Andre

Private Sub ListView2_DblClick()

Ref3.Value = ListView2.SelectedItem.Selected

Dim x
x = ListView2.SelectedItem.Index

Dim Codigo

If ListView1.ListItems.Count <> 0 Then

           ' Se a Linha da ListView1 = a Linha da ListView2  Then                                                                           '             If ListView1.ListItems.Item(x) = 12 Then  'Ref3 Then
                  '   Codigo = ListView2.ListItems.Item(x)
                         '     End If

End If
'---------------------------------------------------------
Dim itmx As ListItem
Dim Oq_Procura As String

Oq_Procura = Codigo

With AOrcamento.ListView1

i = AOrcamento.ListView1.ListItems.Count + 1

Set itmx = .FindItem(Oq_Procura) ', , , lvwPartial)
         
If itmx Is Nothing Then
'---------------------------------------------------------

Set lista = ListView1.ListItems.Add(text:=ListView2.ListItems.Item(x))

'Ref3.Value = lista

lista.ListSubItems.Add text:=Me.ListView2.ListItems.Item(x).SubItems(1)
lista.ListSubItems.Add text:=Me.ListView2.ListItems.Item(x).SubItems(2)
lista.ListSubItems.Add text:=1   'Me.ListView2.ListItems.Item(x).SubItems(3)
lista.ListSubItems.Add text:=Me.ListView2.ListItems.Item(x).SubItems(4)
lista.ListSubItems.Add text:=Me.ListView2.ListItems.Item(x).SubItems(5)
lista.ListSubItems.Add text:=Me.ListView2.ListItems.Item(x).SubItems(6)
lista.ListSubItems.Add text:=Format(lista.ListSubItems(6) * lista.ListSubItems(3), "R$ #,##0.00") 'Total
lista.ListSubItems.Add text:=Me.ListView2.ListItems.Item(x).SubItems(8)
lista.ListSubItems.Add text:=Format(lista.ListSubItems(8) * lista.ListSubItems(3), "R$ #,##0.00") 'Total

Else

itmx.SubItems(3) = Val(.ListItems(i - 1).SubItems(3)) + 1
.ListItems(i - 1).SubItems(7) = Format(itmx.SubItems(3) * VBA.CDbl(AOrcamento.ListView1.ListItems(i - 1).SubItems(6)), "R$ #,##0.00")
.ListItems(i - 1).SubItems(9) = Format(itmx.SubItems(3) * VBA.CDbl(AOrcamento.ListView1.ListItems(i - 1).SubItems(8)), "R$ #,##0.00")

End If

End With

End Sub
 
Postado : 18/09/2017 7:00 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Andre, você já começou errando pelo Titulo do Tópico - "Ref3=ListView", tem de ser o mais especifico referente ao que pretende.
Não ia nem dar atenção devido a explicação confusa, mas acabei lendo e pelo que entendi por esta linha :
"REF3 vai ser igual a 1 ( desejo que seja igual a 345 ), caso eu selecione na ListView a linha 3"
Que se a linha selecionada for a 3, um textbox de nome REF3 deveria receber o numero "345", e você até colocou outras referentes as linhas 1 e 2.
Então, as instruções que passei, atendem ao solicitado.

Só que depois você coloca uma situação totalmente diferente.

Então, se a resposta referente ao que foi solicitado no inicio atendeu, feche o tópico e abra outro, e defina o Assunto o mais próximo do que precisa.

Aproveitando, depois transporto para o outro tópico, pelo que entendi, a situação seria a seguinte :

Você enviou para o LSTW1 o código 345 - valor 10,00,
depois enviou para o LSTW1 o código 211 - valor 20,00

o próximo a ser enviado seria o código 345 - valor 30,00, e como este código já foi enviado antes, você quer que no LSTW1 fique somente um código e o valor de 40,00, é isto ?

Se for, você tem de capturar o código e o valor clicado no LSTW2, armazena-los em Váriaveis, depois fazer uma verificação no LSTW1 se ja existe algum lançamento, se LSTW1 está em branco, somente lançar, se LSTW1 já tiver algum lançamento, verificar se coincide com o selecionado no LSTW2, se sim armazenar o valor, somar com o armazenado na Variável e alterar o do LSTW1

1 º) Ao clicar no LSTW2 Capturar o Código e o Valor e armazenar em Variaveis
2 º) Antes de lançar no LSTW1 verificar se o LSTW2 está vazio
se SIM - Lançar o código e o valor
se NÃO - Verificar antes de lançar se contem Código armazenado, se tiver, somar o Valor com o Valor armazenado anteriormente e atualizar a linha referente ao código.

É só utilizar a rotina que enviei antes para fazer a verificação e adicionar a linha de Somar e atualizar.

Se não conseguir, mais tarde anexo um exemplo básico.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 18/09/2017 12:35 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Grato Mauro COutinho, e isso ai mesmo quero que na ListView 1 nao entre codigo duplicado. Vou terminar aqui de fazer os lancamentos dos produtos que chegaram na loja, e mais tarde levo o note book pra casa e vejo se consigo fazer conforme explicado, se nao, te chamo aqui de novo ou tento enviar um basico, pois meu ssitema aqui tem mais de 20M rsrsrs.

Grato

Andre

 
Postado : 18/09/2017 1:51 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Veja se consegue adaptar ao seu projeto :

Transferir e Somar por códigos dois ListView

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 18/09/2017 7:06 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Grato deu uma luiz legal, e dei uma olhada, e ja tinha este mesmo codigo em outra parte do projeto. É que as vezes da ums brancos aqui.

Dim id

Index = (ListView2.SelectedItem.Index)

id = Me.ListView2.ListItems(Index)
Ref3 = id

E ficou assim o codigo

Private Sub ListView2_DblClick()
'----------------------------------------------

Dim id

Index = (ListView2.SelectedItem.Index)

id = Me.ListView2.ListItems(Index)
Ref3 = id


'----------------------------------------------
'Ref3.Value = ListView2.SelectedItem.Selected

Dim x
x = ListView2.SelectedItem.Index

Dim Codigo

If ListView1.ListItems.Count <> 0 Then

  If ListView2.ListItems.Item(x) = Ref3 Then
    Codigo = ListView2.ListItems.Item(x)
      End If
End If
'---------------------------------------------------------
Dim itmx As ListItem
Dim Oq_Procura As String

Oq_Procura = Codigo

With AOrcamento.ListView1

i = AOrcamento.ListView1.ListItems.Count + 1

Set itmx = .FindItem(Oq_Procura) ', , , lvwPartial)
         
If itmx Is Nothing Then
'---------------------------------------------------------

Set lista = ListView1.ListItems.Add(text:=ListView2.ListItems.Item(x))

'Ref3.Value = lista

lista.ListSubItems.Add text:=Me.ListView2.ListItems.Item(x).SubItems(1)
lista.ListSubItems.Add text:=Me.ListView2.ListItems.Item(x).SubItems(2)
lista.ListSubItems.Add text:=1   'Me.ListView2.ListItems.Item(x).SubItems(3)
lista.ListSubItems.Add text:=Me.ListView2.ListItems.Item(x).SubItems(4)
lista.ListSubItems.Add text:=Me.ListView2.ListItems.Item(x).SubItems(5)
lista.ListSubItems.Add text:=Me.ListView2.ListItems.Item(x).SubItems(6)
lista.ListSubItems.Add text:=Format(lista.ListSubItems(6) * lista.ListSubItems(3), "R$ #,##0.00") 'Total
lista.ListSubItems.Add text:=Me.ListView2.ListItems.Item(x).SubItems(8)
lista.ListSubItems.Add text:=Format(lista.ListSubItems(8) * lista.ListSubItems(3), "R$ #,##0.00") 'Total

Else

itmx.SubItems(3) = Val(.ListItems(i - 1).SubItems(3)) + 1
.ListItems(i - 1).SubItems(7) = Format(itmx.SubItems(3) * VBA.CDbl(AOrcamento.ListView1.ListItems(i - 1).SubItems(6)), "R$ #,##0.00")
.ListItems(i - 1).SubItems(9) = Format(itmx.SubItems(3) * VBA.CDbl(AOrcamento.ListView1.ListItems(i - 1).SubItems(8)), "R$ #,##0.00")

End If

End With

'Somar dentro da ListView1
Dim Soma As Double

For i = 1 To ListView1.ListItems.Count
Soma = Soma + ListView1.ListItems.Item(i).SubItems(7) 'coluna 7
Next i

Total2.Value = Soma
Total2 = Format(Total2, "R$ #,##0.00")

End Sub
 
Postado : 18/09/2017 7:22 pm