Problemas con SELECT CASE

Iniciado por stork32, 11 Octubre 2008, 20:29 PM

0 Miembros y 1 Visitante están viendo este tema.

stork32

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!
Aprendiz (:

Spider-Net

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í:

Código (vb) [Seleccionar]
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.

stork32

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
Aprendiz (:

Spider-Net

#3
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!


stork32

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.
Aprendiz (:

s E t H

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

stork32

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:

Aprendiz (:

Spider-Net

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.

stork32

pues SI tienes mucha razon Spider - Net.  Aun sigo intentado pero no sale.
GRACIAS POR SU AYUDA Spider-Net y s E t H  :)
Aprendiz (:

Novlucker

#9
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:
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein