Hola estoy haciendo un formulario de Cobros, y necesito ayuda con la programación de dicho formulario. El programa pide lo siguiente:
Se seleccionara un producto del ComboBox y se tecleara una cantidad. Al presionar el boton Agregar se agregara en la ListBox el nombre producto deseado. Una vez seleccionados todos los productos a comprar se tecleara el boton de Total el cual imprimira el total a pagar por todos los productos seleccionados, incluyendo el impuesto(en caso que el usuario marque la opcion). Todos los controles deberan desplegar una ToolTip con el nombre del control(si se coloca el cursor encima de la CombobOX, el ToolTip deberá desplegar el mensaje ComboBox).
Los productos(y sus precios unitarios) que deben ir en la ComboBox son:
a-Pasta Dental 20.5
b-Jabón 10.5
c-Tomates 3.0
d-Cebolla 5.0
(http://img18.imageshack.us/img18/3026/frmcobro.jpg)
******
Estoy trabajando con Visual Basic 2008, ya tengo los Items y todo cuando le doy clic en el boton agregar me lo pasa al otro listado, pero lo que no se es como hago para decirle al programa que si me elige elige la pasta dental me multiple la cantidad por 20.5, y si es jabon cantidad por 10.5 y asi sucesivamente y crear una variable que me valla conteniendo esas multiplaciones para cuando le de clic en total me imprima la lista de productos con los totales, y el total de compra, y si elige impuesto me lo agregue ahi, y si pues no(obviamente). Me gustaria que me ayudaran con esto :/ ignoren la TextBox que creé arriba del boton "Total" porque no debe ir el programa no me lo pide simplemente me salta de un solo a imprimir.[/b]
Está mal posteado, espero que no me digan nada por contestar porque va en .NET (lo dudo)
Por lo que entiendo, te digo:
Te recomiendo crear una función que requiera como único parámetro el nombre del producto, antes de "llamar" a la funcion declares una variable que te permita almacenar los valores;
Public Class Form1
Dim Valores(0 To 3) As Integer
Dim TotalValores As Long
Dim ValorTemp As Integer 'tiene los valores que iras sumando
Dim Cantidad As Integer 'manipula cantidad de productos
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
DetectaValor(Trim(TextBox1.Text))
'ya se obtuvo el valor en el procedimiento
'DetectaValor por lo que no es necesario especificarlo
End Sub
Private Sub DetectaValor(ByVal Producto As String)
Dim Multi As Integer 'Multiplicador
Dim ValorT As Integer 'para realizar la cuenta y obtener resultado
Select Case Producto
Case Is = "Jabon"
Multi = Valores(0)
ValorT = Cantidad * Multi
ValorTemp = ValorTemp + ValorT
Case Is = "Pasta"
Multi = Valores(1)
ValorT = Cantidad * Multi
ValorTemp = ValorTemp + ValorT
Case Is = "Otros"
Multi = Valores(2)
ValorT = Cantidad * Multi
ValorTemp = ValorTemp + ValorT
Case Is = "Perfume"
Multi = Valores(3)
ValorT = Cantidad * Multi
ValorTemp = ValorTemp + ValorT
End Select
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Valores(0) = 3 'pasta
Valores(1) = 5 'jabon
Valores(2) = 10 'etc
Valores(3) = 7 'etc
End Sub
End Class
A ver si entendí lo que necesitas y estamos bien encaminados.
Saludos.
Muchas gracias por responderme :D
1-Si trabajo en .NET :D pero a veces me entienden cuando digo 2008(?)
2-Adapte tu programación al formulario y pues no me tira error pero tampoco me da respuesta.
3-Mi duda principal es como le digo al programa que si en el usuario elige el primer Item ("Pasta Dental 20.5") de la ComboBox(CmbProducto) me multiple la cantidad de productos que lleva (TxtCan) por 20.5, y si es el segundo Item("Jabon 10.5") sea cantidad por 10.5, en tu programacion se que haces eso pero esta perfecto y todo es más trabajas con Case(algo que no había intentado solo 'If,Else, End If') pero...no estoy segura si el programa sabe a que Item me estoy refiriendo:
Select Case [b]Producto[/b]
Case Is = [b]"Jabon"[/b]
Multi = Valores(0)
ValorT = Cantidad * Multi
ValorTemp = ValorTemp + ValorT
me imagino que en vez de "Producto" debo poner el nombre del control (CmbProducto) Y que todo este código este en el botón Total.
Pero resulta que cuando lo cambio(Producto) por CmbProducto, me sale el resto del código como error, no todo solo los textos que esta entre comillas("Jabón").
1- Sé que trabajas en .NET, digo que está mal posteado, ya que esto es Visual Basic 6.
2- es un modo de ejemplo, no es una decisión final, por eso no funciona
3- Ahora vamos entendiendonos mejor, imagine que select case es mejor porque hay veces que muchos If marea, aunque se puede "comprimir" usando un ElseIf creí que sería mas productivo de esta forma.
Agrega esto a tu Form_Load;
ComboBox1.Items.Add("Pasta Dental")
ComboBox1.Items.Add("JAbon")
ComboBox1.Items.Add("Otro")
ComboBox1.Items.Add("otro mas xD")
Sencillamente es para agregar datos al combo por si quieres probarlo en un nuevo proyecto, sino ignoralo.
Hice algunos arreglos observa;
Dim TotalValores As Long 'variable para controlar el Valor TOTAL
Dim ValorTemp As Integer 'tiene los valores que iras sumando
Dim Porcentaje As Integer 'el porcentaje a multiplicar, 20.5 - 10.5 etc.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Trim(txtCan.Text) = "" Then MsgBox("ingrese cantidad de productos")
DetectaValor(Val(ComboBox1.SelectedIndex))
End Sub
Intentamos que el txtCan no este vacio es una manera vaga de trabajarlo pero eso es secundario y no es algo que tenga que ver ahora, la función para detectar valor se le "llama" de manera distinta, ya que vamos a trabajar sobre el Index del combo el cual es un valor entero.
El Index nos indica qué posición el usuario tiene seleccionado en un determinado objeto, en un combo sería de esta manera para saberlo;
Variable=ComboBox1.SelectedIndex
La Variable debería ser Integer ya que ese tipo de dato nos devuelve la instrucción.
Estos arreglos hice en la función;
Private Sub DetectaValor(ByVal Producto As Integer) 'modificamos el valor de la variable
Dim Multi As Integer 'cantidad de productos
Dim ValorT As Integer 'para realizar la cuenta y obtener resultado
Multi = Val(txtCan.Text) '
Select Case Producto 'pasa a ser el index del Combo
Case Is = 0
'sabemos que selecciono el primero en la lista
'por lo que es jabon y haremos la multiplicacion
'en base a la siguiente sintáxis
' cantidad * 20.5
ValorT = Multi * 20.5
ValorTemp = ValorTemp + ValorT
Case Is = 1
'si selecciona jabon (el segundo item del combo)
'recuerda que el combo comienza siempre con index 0
ValorT = Multi * 10.5
ValorTemp = ValorTemp + ValorT
Case Is = 2
ValorT = Multi * 15.5 'este ultimo es el que debes cambiar para modificar el porcentaje a multiplicar
ValorTemp = ValorTemp + ValorT
Case Is = 3
ValorT = Multi * 6.7
ValorTemp = ValorTemp + ValorT
End Select
End Sub
Creo que el código lo deja claro pero espero lo implementes a tu código.
Entiende que el valor del TxtCan, no es lo MISMO que el valor del Producto, ya que Producto se refiere hacia el index del combo, el cual tenemos seleccionado, y el valor de Txtcan es la cantidad de productos.
Cualquier duda nos comentas.