Bueno es el primer tema que abra aca en esta pagina muy interesante. y decirles que ya llevo como 3 semanas leyendo este foro :)
Yo estudio Ingenieria de Sistemas y estoy en II ciclo y estan enseñando a usar VB6,
el cual me gusta :D pero tengo problemas con el aprendizaje. Quiero aprender y se que aqui en este foro lo lograre, CLARO! con la ayuda de ustedes ;D
Mi problema es SELECT CASE nose muy bien como aplicarlo. En la Univ. me han dado un ejercicio que dice asi
"Supongamos que al efectuar la compra en un almacen, si adquirimos mas de 100 unidades de un mismo articulo, nos hacen un descuento del 30%, entre el 25 y 100 un 20% ; y entre 10 y 24 un 10% Y no hay descuento para una adquisicion de menos de 10 unidades. Diseñar un formulario donde se incluya los datos importantes y calcular el importe a pagar. Use Select Case."
Y ya avanze algo pero me sale error :huh: a ver si alguien me ayuda
------------------------------------------------------------------------------------
Dim valor As Double
Dim descuento As Double
Private Sub cmdLimpiar_Click()
txtCantidad.Text = ""
txtSinDes.Text = ""
txtTotal.Text = ""
End Sub
Private Sub cmdResultado_Click()
Select Case Pelotas
Case Val(txtCantidad.Text) > 100
lblDescuento.Caption = "Descuento de 30%"
valor = Val(txtCantidad.Text) * 8
txtSinDes.Text = valor
descuento = valor * 30 / 100
txtTotal.Text = valor - descuento
Case 100 > Val(txtCantidad.Text) >= 25
lblDescuento.Caption = "Descuento de 20%"
valor = Val(txtCantidad.Text) * 8
txtSinDes.Text = valor
txtTotal.Text = valor * 20 / 100
txtTotal.Text = valor - descuento
Case 25 > Val(txtCantidad.Text) >= 10
lblDescuento.Caption = "Descuento de 10%"
valor = Val(txtCantidad.Text) * 8
txtSinDes.Text = valor
txtTotal.Text = valor * 10 / 100
txtTotal.Text = valor - descuento
Case Val(txtCantidad.Text) < 10
lblDescuento.Caption = "No hay Descuento"
valor = Val(txtCantidad.Text) * 8
txtSinDes.Text = valor
txtTotal.Text = valor
txtTotal.Text = valor - descuento
End Select
End Sub
Private Sub cmdSalir_Click()
Beep
End
End Sub
----------------------------------------------------------------------------------------------
Pues la mayor duda que tengo es que cuanto coloco 9 unidades de Pelotas me sigue saliendo con descuento de 30% pero esta mal. No deberia a ver descuento.
Para mi la falla esta aca:
"Case 25 > Val(txtCantidad.Text) >= 10"
"100 > Val(txtCantidad.Text) >= 25"
"Case Val(txtCantidad.Text) < 10"
Para mi esa son las fallas, pero como solucionarlo :huh:
GRACIAS por leer este tema :)
Y espero su ayuda.
Saludos!
Es que eso no se hace así amigo. Lo primero que veo es que la variable que usas en el case es una variable "pelotas" que en el código que has puesto yo no veo por ninguna parte. No sé si es que se te ha pasado ponerlo. Otra cosa es que aquí las comparaciones no se hacen exactamente igual que en matemáticas que es lo que veo que estás intentando xD.
Hay muchas formas de hacer esto, yo lo he hecho por ejemplo así:
Option Explicit
Dim valor As Double
Dim descuento As Double
Dim pelotas As Integer
Private Sub cmdLimpiar_Click()
txtCantidad.Text = ""
txtSinDes.Text = ""
txtTotal.Text = ""
End Sub
Private Sub cmdResultado_Click()
pelotas = Val(txtCantidad.Text)
Select Case pelotas
Case Is > 100
lblDescuento.Caption = "Descuento de 30%"
valor = Val(txtCantidad.Text) * 8
txtSinDes.Text = valor
descuento = valor * 30 / 100
txtTotal.Text = valor - descuento
Case Is < 100 And pelotas >= 25
lblDescuento.Caption = "Descuento de 20%"
valor = Val(txtCantidad.Text) * 8
txtSinDes.Text = valor
txtTotal.Text = valor * 20 / 100
txtTotal.Text = valor - descuento
Case Is < 25 And pelotas >= 10
lblDescuento.Caption = "Descuento de 10%"
valor = Val(txtCantidad.Text) * 8
txtSinDes.Text = valor
txtTotal.Text = valor * 10 / 100
txtTotal.Text = valor - descuento
Case Is < 10
lblDescuento.Caption = "No hay Descuento"
valor = Val(txtCantidad.Text) * 8
txtSinDes.Text = valor
txtTotal.Text = valor
txtTotal.Text = valor - descuento
End Select
End Sub
Consejo: Intenta indentar bien el código, te ayudará mucho cuando hagas códigos largos y necesites buscar cosas y hacer pequeños cambios.
siii tienes razon :D pero Spider - Net mira lo que hice yo :D MUY RARO ! pero salio :o
MIRA :)
-------------------------------------------------------------------------------------------------
Dim valor As Double
Dim descuento As Double
Private Sub cmdLimpiar_Click()
txtCantidad.Text = ""
txtSinDes.Text = ""
txtTotal.Text = ""
lblDescuento.Caption = ""
End Sub
Private Sub cmdResultado_Click()
Select Case Pelotas
Case Val(txtCantidad.Text) < 101
lblDescuento.Caption = "Descuento de 30%"
valor = Val(txtCantidad.Text) * 8
txtSinDes.Text = valor
descuento = valor * 30 / 100
txtTotal.Text = valor - descuento
Case 100 > Val(txtCantidad.Text), 25 > Val(txtCantidad.Text)
lblDescuento.Caption = "Descuento de 20%"
valor = Val(txtCantidad.Text) * 8
txtSinDes.Text = valor
descuento = valor * 20 / 100
txtTotal.Text = valor - descuento
Case 25 > Val(txtCantidad.Text), 10 > Val(txtCantidad.Text)
lblDescuento.Caption = "Descuento de 10%"
valor = Val(txtCantidad.Text) * 8
txtSinDes.Text = valor
descuento = valor * 10 / 100
txtTotal.Text = valor - descuento
Case Val(txtCantidad.Text) > 10
lblDescuento.Caption = "No hay Descuento"
valor = Val(txtCantidad.Text) * 8
txtSinDes.Text = valor
txtTotal.Text = valor
End Select
End Sub
Private Sub cmdSalir_Click()
Beep
End
End Sub
-------------------------------------------------------------------------------------------------
Me confunde los ">" "<" ">=" "<=" es raro :S
Claro!, me alegro de que te saliese al final. Ya te dije que eso se puede hacer de muchas maneras distitnas, aunque sigo sin saber de donde sacas la variable pelotas. Yo en mi código la he tenido que declarar.
No es que el vb se haga un lío con los símbolos < > <= >=, es que tu sintaxis no era correcta. No puedes hacer esto: 25 >= Val(loquesea.text) < 100
Eso es incorrecto, algo correcto podría ser:
Val(loquesea.text)>=25 And Val(loquesea.text) < 100
Es sólo un ejemplo para que entiendas como funcionan las comparaciones. Te recomiendo leerte un buen manual de VB para que tengas bien claro ese tipo de cosas.
Saludos!
Siii ;D Gracias Spider-Net :)
Pero a ver si tienes tiempo con un ultimo ejercicio, y dice asi:
Ejercicio 6
Contraseña
Dim i As Integer
Private Sub Command1_Click()
End
End Sub
Private Sub COmmand2_Click()
'trabajando con if y select case
If Text1.Text = "mar1" And Text".Text="mar1"Then
MsgBox "Bienvenido a mi sistema"
Else
i=i-1
Select Case i
Case 0
vez="ninguna"
Case 1
vez="una primera"
Case 1
vez = "una segunda"
End Select
Pues eso es todo! :o y no tengo idea que me pide :huh: a ver si me ayuda
como ultima vez Spider-Net u otro :rolleyes:
Saludos.
no hay ninguna consigna? entonces tendras que arreglar los errores?
yo encontre alguno, pero es tu tarea :rolleyes:
lo que no entiendo es para que se usa la variable Vez
Bueno es mi tarea y la estoy tratando de hacer son 6 ejercicios y me falta este ultimo :D
Pero el text1.text= "mar1" y el text2.text= "mar1" son el ID y la Contraseña para ingresar al sistema ya estoy arreglando eso. Pero el problema es la variable " vez "
esa cosa tengo que remplazarlo... Pero por que :huh:
No creo que tengas que reemplazarlo por nada, la variable vez es el número de intentos que te queda para meter la contraseña correcta.. Al menos eso creo yo. Y creo que pretenden que te deje intentar 3 veces la contraseña.
pues SI tienes mucha razon Spider - Net. Aun sigo intentado pero no sale.
GRACIAS POR SU AYUDA Spider-Net y s E t H :)
Que es lo que no sale.. cual es el problema? Error?
Vistazo de 5 segundos.. :P
CitarText".Text="mar1"Then
Y esto otro...
CitarCase 1
vez="una primera"
Case 1
vez = "una segunda"
End Select
También el i no comienza con valor alguno... así que si a 0 le restas uno, va quedando negativo.. nunca va a valera 2 o 1 o 0
:rolleyes:
Ups !! errores de ESCRITURA ;D pues va asi
Dim i As Integer
Private Sub Command1_Click()
End
End Sub
Private Sub Command2_Click()
If Text1.Text = "mar1" And Text2.Text = "mar1" Then
MsgBox "Bienvenido a mi sistema"
Else
i = i - 1
Select Case i
Case 0
vez = "ninguna"
Case 1
vez = "una primera"
Case 2
vez = "una segunda"
End Select
End If
End Sub
Pues le doy el comand1 pero con el text1.text= "mar1" y igual con el text2 y me sale el mensaje de bienvenido al sistema y si en el text1 y text2 coloco otro palabras, no sale nada :rolleyes:. Pues creo que ya esta. Pero mi duda es para que esto?
i = i - 1
Select Case i
Case 0
vez = "ninguna"
Case 1
vez = "una primera"
Case 2
vez = "una segunda"
:huh: :huh: :huh: :huh: :huh: :huh:
Supongo que para mostrar a alguien la cantidad de intentos que le quedan... pero en el code no se implementa en ningún lado :-X
Saludos
Pues sii creo que si ;D
Bueno Gracias todos aqui se cierra este tema ;)
Saludos! ::)
PD: Quiza al rato abra otro Tema para mas dudas :P:laugh:
stork32 ese programa no está acabado tio.
Yo creo que sería algo así:
Dim i As Integer
Private Sub Command1_Click()
End
End Sub
Private Sub Command2_Click()
If Text1.Text = "mar1" And Text2.Text = "mar1" And i < 3 Then
MsgBox "Bienvenido a mi sistema"
Else
i = i + 1
Select Case i
Case 1
vez = "una primera"
Case 2
vez = "una segunda"
Case 3
vez = "una tercera"
Case Else
vez = "No quedan intentos"
End Select
MsgBox vez
End If
End Sub
Se puede hacer de otras maneras, pero esa sería una correcta.