
Extraer un numero indeterminado en una cadena de texto
Publicado por Emanuel (25 intervenciones) el 08/10/2015 21:33:41
---SE APLICA A VB 2010---
Hola gente!! Como andan? Tengo un programa en VB.NET y quisiera saber esto. Espero explicarme bien, sino preguntenme qué no entendieron y lo vemos juntos:
Tengo un ListBox (LstDescripcion), un Button (BtnAgregar), y un Label (LblDescuento). Bien, hasta ahora facil; al apretar el BtnAgregar, me tiene que enviar a la LstDescripcion una cadena de texto que tiene los siguientes "campos" INCLUIDO LOS "-" (son varios TextBox): Codigo de Cliente - Producto - Precio - Cantidad - Subtotal*. Entonces, lo que hago es, en el evento Click del BtnAgregar agregar esto:
LstDescripcion.Items.Add(TxtCodCliente.Text & " - " & CmbProducto.Text & " - " & TxtPrecio.Text & " - " & TxtCantidad.Text & " - Subtotal: " & LblSubtotal.Text). (POR EJEMPLO: 1234 - CocaCola - 10 - 350 - 3500) Todo genial.
El problema empieza cuando en un punto de un ejercicio me pide:
1) Descuento de 5% del valor total (SUBTOTAL), para valores entre $3000 y $4000. Este no es el problema, ya que en el evento SelectedIndexChanged de la LstDescripcion hago un Select Case de la siguiente manera:
Select Case Val(Microsoft.VisualBasic.Right(LstDescripcion.SelectedItem, 4))
Case 3000 To 4000
LblDesc.Text = Val(Microsoft.VisualBasic.Right(LstDescripcion.SelectedItem, 4)) * 5 / 100
End Select
AHORA VIENE EL PROBLEMA, ya que el punto anterior dice "Entre $3000 y $4000", por lo tanto son 4 cifras, y no hay problema. Pero este punto dice:
2) 10% del total, para compras mayores a $4000.
¿Me explican como tengo que hacer para realizar un descuento SI TENGO MAS DE 4 CIFRAS? ¿Por que? Porque es la funcion Right la que me cuenta 4 caracteres de derecha a izquiera, pero aca puede VARIABLE; pueden ser mas de 4.
Ese es el problema; sin embargo, con un VECTOR se podria resolver, pero el tema es que NO HAY QUE USARLO. Ademas, no puedo usar el LblSubtotal porque, si ingrese 8 registros y apreto el Nº4 de la LstDescripcion, me va a aparecer el ultimo ingresado, el 8.
*Subtotal = Precio * Cantidad
Desde ya, muchas gracias!!
Hola gente!! Como andan? Tengo un programa en VB.NET y quisiera saber esto. Espero explicarme bien, sino preguntenme qué no entendieron y lo vemos juntos:
Tengo un ListBox (LstDescripcion), un Button (BtnAgregar), y un Label (LblDescuento). Bien, hasta ahora facil; al apretar el BtnAgregar, me tiene que enviar a la LstDescripcion una cadena de texto que tiene los siguientes "campos" INCLUIDO LOS "-" (son varios TextBox): Codigo de Cliente - Producto - Precio - Cantidad - Subtotal*. Entonces, lo que hago es, en el evento Click del BtnAgregar agregar esto:
LstDescripcion.Items.Add(TxtCodCliente.Text & " - " & CmbProducto.Text & " - " & TxtPrecio.Text & " - " & TxtCantidad.Text & " - Subtotal: " & LblSubtotal.Text). (POR EJEMPLO: 1234 - CocaCola - 10 - 350 - 3500) Todo genial.
El problema empieza cuando en un punto de un ejercicio me pide:
1) Descuento de 5% del valor total (SUBTOTAL), para valores entre $3000 y $4000. Este no es el problema, ya que en el evento SelectedIndexChanged de la LstDescripcion hago un Select Case de la siguiente manera:
Select Case Val(Microsoft.VisualBasic.Right(LstDescripcion.SelectedItem, 4))
Case 3000 To 4000
LblDesc.Text = Val(Microsoft.VisualBasic.Right(LstDescripcion.SelectedItem, 4)) * 5 / 100
End Select
AHORA VIENE EL PROBLEMA, ya que el punto anterior dice "Entre $3000 y $4000", por lo tanto son 4 cifras, y no hay problema. Pero este punto dice:
2) 10% del total, para compras mayores a $4000.
¿Me explican como tengo que hacer para realizar un descuento SI TENGO MAS DE 4 CIFRAS? ¿Por que? Porque es la funcion Right la que me cuenta 4 caracteres de derecha a izquiera, pero aca puede VARIABLE; pueden ser mas de 4.
Ese es el problema; sin embargo, con un VECTOR se podria resolver, pero el tema es que NO HAY QUE USARLO. Ademas, no puedo usar el LblSubtotal porque, si ingrese 8 registros y apreto el Nº4 de la LstDescripcion, me va a aparecer el ultimo ingresado, el 8.
*Subtotal = Precio * Cantidad
Desde ya, muchas gracias!!
Valora esta pregunta


0