SUBTRAIR_VALOR_ITEM_LISTBOX

JONATHANSTECKER 16/06/2010 14:22:48
#345008
Cara, não podes subtrair um texto com um número.
Ex: ([Ô]Picanha Argentina R$23,40[Ô] - 100)

Eu uso no VB.NET uma função para separar os números.
Não tenho certeza se vai funcionar em VB6, e não tenho ele instalado aqui para testar... Mas tente ai. A lógica é a mesma.
Isso claro, se você quiser usar a listbosx dessa forma.

[ô][ô][ô] <summary>
[ô][ô][ô] Função que converte uma STRING com letras para INTEGER (Somente numeros)
[ô][ô][ô] </summary>
Function strPARAint(ByVal STR As String) As Integer

strPARAint = 0

For N As Integer = 1 To Len(STR)
If IsNumeric(Mid(STR, N, 1)) Then
strPARAint = strPARAint & Mid(STR, N, 1)
End If
Next

Return strPARAint

End Function

Private Sub lvBAlt_Click()
TxtTlMsa = Format(Val(TxtTlMsa) - strPARAint(Val(LstVdas.List(LstVdas.ListIndex))), [Ô]0.00[Ô])
End Sub

FERRAZ 16/06/2010 15:03:48
#345011
Citação:

Cara, como o teu listbox está guardando um texto, a função VAL vai retornar ZERO. Verifica isso.



ASHKATCHUP, acho que vou tentar de outra maneira, ja usei CDBL, CCur, alem do VAL.

Citação:

Cara, não podes subtrair um texto com um número.
Ex: ([Ô]Picanha Argentina R$23,40[Ô] - 100)



JONATHANSTECKER, Voce tem toda razao. Eu tentei usa sua funcao mais nao rola.

Function strPARAint(ByVal STR As String) As Integer

strPARAint = 0

For N As Integer = 1 To Len(STR) [ô] o vb6 nao entende toda esta linha aqui
If IsNumeric(Mid(STR, N, 1)) Then
strPARAint = strPARAint & Mid(STR, N, 1)
End If
Next

Return strPARAint [ô] e aqui tambem.

End Function

Bom eu nao vou mais tentar dessa forma, mais sempre tem outro jeito certo, vou estudar em casa com calma.

Agora se os amigos ainda tem algo na manga nesse segmento agradeco, valeu.
ASHKATCHUP 16/06/2010 15:13:32
#345014
Como você está adicionando os itens no listbox? Qual delimitador entre o nome ([Ô]Picanha[Ô]) e o valor?
Você pode usar o cifrão como delimitador. Exemplo:

Nota:
-A função [Ô]SPLIT[Ô] transforma um texto em um vetor, baseando-se em um limitador passado como parâmetro. Após isso, eu utilizei o código [Ô](1)[Ô], para pegar o valor que está armazenado na segunda posição do vetor, que inicia no índice 0.


Private Sub Form_Load()
Dim dValor As Double
Dim sTexto As String
[ô]
sTexto = [Ô]Picanha - R$ 30,40[Ô]
dValor = CDbl(Trim(Split(sTexto, [Ô]$[Ô])(1)))
[ô]
Stop
End Sub
FERRAZ 16/06/2010 22:18:28
#345061
ASHKATCHUP,

Estou adicionando assim os itens no listbox:

Private Sub CarList()
[ô]Aqui eu monto a sub para preencher o listbox
With LstVdas
.AddItem [Ô] [Ô] & (TxtItem) & vbTab & _
(TxtVlrItem)
End With

End Sub

Formato desta forma os TextBox:

TxtItem Format(FrmMsaMve.TxtVlrItem, [Ô]R$ 0.00[Ô])

Eu estou fazendo algumas tentativas usando sua dica, mais ainda nao tive sucesso:

Private Sub lvBCancel_Click()
Dim dValor As Double
Dim sTexto As String
[ô]
sTexto = LstVdas.ListIndex
dValor = CDbl(Trim(Split(sTexto, [Ô]R$[Ô])(1)))
[ô]
Stop
End Sub

[ô]subscript out of range

Valeu amigos.
JONATHANSTECKER 16/06/2010 22:38:37
#345062
Veja o que ocorre fazendo dessa forma...

Function RetirarNumero(Texto As String)
Dim Num as Integer
Dim X As Long
Dim Numero As String
For X = 1 To Len(Texto)
Numero = Mid(Texto, X, 1)
If IsNumeric(Numero) = True Then
Num = Num & Numero
End If
Numero = [Ô][Ô]
Next
Return Num
End Function

Private Sub lvBAlt_Click()
TxtTlMsa = Format(Val(TxtTlMsa) - RetirarNumero(Val(LstVdas.List(LstVdas.ListIndex))), [Ô]0.00[Ô])
End Sub
FERRAZ 16/06/2010 23:32:35
#345067
JONATHANSTECKER, ocorre um erro na linha abaixo veja:

Function RetirarNumero(Texto As String)
Dim Num As Integer
Dim X As Long
Dim Numero As String
For X = 1 To Len(Texto)
Numero = Mid(Texto, X, 1)
If IsNumeric(Numero) = True Then
Num = Num & Numero
End If
Numero = [Ô][Ô]
Next
Return Num [ô]Aqui o vb6 nao entende
End Function

Aqui ele retorna zero:

Private Sub lvBAlt_Click()
TxtTlMsa = Format(Val(TxtTlMsa) - RetirarNumero(Val(LstVdas.List(LstVdas.ListIndex))), [Ô]0.00[Ô])
End Sub

Valeu,
MARCELO.TREZE 17/06/2010 01:06:34
#345069
Resposta escolhida
vamos lá primeiro deve separar o produto do preço usando o split da forma abaixo


Private Sub lvBAlt_Click()
[ô]vc preenche o listbox colocando o nome do produto e o valor,
[ô]estes dois são separados por vbTAB
[ô]então criarei uma array com os dois separados e usarei apenas o valor

Dim Valor() As String

Valor = Split(lstVdas.List(lstVdas.ListIndex), vbTab)

[ô]acima criei uma array com o nome e o valor separado
[ô]exemplo: Valor(0) = [Ô]Picanha[Ô]
[ô] Valor(1) = [Ô]R$ 3,40[Ô]
[ô]Somente agora poderei fazer um calculo em cima de Valor(1)

txtTIMsa = CCur(txtTIMsa) - CCur(Valor(1))
txtTIMsa = Format(txtTIMsa, [Ô]currency[Ô])

With LstVdas
.RemoveItem (.ListIndex)
End With

End Sub


Bom o código acima é totalmente funcional e simples
ele parece complicado por causa dos comentários
mas se retira-los, só o código é minusculo.

Boa Sorte

FERRAZ 17/06/2010 11:04:37
#345092
Caros colegas e amigos, LLAIA, JONATHANSTERCKER, ASHKATCHUP, MARCELO-TREZE, fico muito grato pela forca
de voces, valeu.

ASHKATCHUP, era isso mesmo -A função [Ô]SPLIT[Ô] transforma um texto em um vetor. Fiquei muito tempo
tentando achar uma solucao e nao consegui nada, pois nao tenho muita habilidade usando esta funcao.

Agora tenho mais um estudo para mim usando o [Ô]SPLIT[Ô].

Marcelo amigo e posso dizer meu professor, pois cara, vc matou a charada, esta funcionando perfeitamente como eu esperava,
valeu, valeu VbMania.
Página 2 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas