Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: stork32 en 11 Octubre 2008, 20:29 pm



Título: Problemas con SELECT CASE
Publicado por: stork32 en 11 Octubre 2008, 20:29 pm
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!


Título: Re: Problemas con SELECT CASE
Publicado por: Spider-Net en 11 Octubre 2008, 21:25 pm
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
  1. Option Explicit
  2. Dim valor As Double
  3. Dim descuento As Double
  4. Dim pelotas As Integer
  5.  
  6. Private Sub cmdLimpiar_Click()
  7. txtCantidad.Text = ""
  8. txtSinDes.Text = ""
  9. txtTotal.Text = ""
  10. End Sub
  11.  
  12. Private Sub cmdResultado_Click()
  13. pelotas = Val(txtCantidad.Text)
  14. Select Case pelotas
  15.    Case Is > 100
  16.        lblDescuento.Caption = "Descuento de 30%"
  17.        valor = Val(txtCantidad.Text) * 8
  18.        txtSinDes.Text = valor
  19.        descuento = valor * 30 / 100
  20.        txtTotal.Text = valor - descuento
  21.  
  22.    Case Is < 100 And pelotas >= 25
  23.        lblDescuento.Caption = "Descuento de 20%"
  24.        valor = Val(txtCantidad.Text) * 8
  25.        txtSinDes.Text = valor
  26.        txtTotal.Text = valor * 20 / 100
  27.        txtTotal.Text = valor - descuento
  28.  
  29.    Case Is < 25 And pelotas >= 10
  30.        lblDescuento.Caption = "Descuento de 10%"
  31.        valor = Val(txtCantidad.Text) * 8
  32.        txtSinDes.Text = valor
  33.        txtTotal.Text = valor * 10 / 100
  34.        txtTotal.Text = valor - descuento
  35.  
  36.    Case Is < 10
  37.        lblDescuento.Caption = "No hay Descuento"
  38.        valor = Val(txtCantidad.Text) * 8
  39.        txtSinDes.Text = valor
  40.        txtTotal.Text = valor
  41.        txtTotal.Text = valor - descuento
  42. End Select
  43. 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.


Título: Re: Problemas con SELECT CASE
Publicado por: stork32 en 11 Octubre 2008, 21:35 pm
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


Título: Re: Problemas con SELECT CASE
Publicado por: Spider-Net en 11 Octubre 2008, 21:48 pm
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!



Título: Re: Problemas con SELECT CASE
Publicado por: stork32 en 11 Octubre 2008, 22:01 pm
Siii  ;D Gracias  Spider-Net  :)

Pero a ver si tienes tiempo con un ultimo ejercicio, y dice asi:

Ejercicio 6

Contraseña

Código:

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.


Título: Re: Problemas con SELECT CASE
Publicado por: s E t H en 11 Octubre 2008, 22:12 pm
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


Título: Re: Problemas con SELECT CASE
Publicado por: stork32 en 11 Octubre 2008, 22:19 pm
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:



Título: Re: Problemas con SELECT CASE
Publicado por: Spider-Net en 11 Octubre 2008, 22:40 pm
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.


Título: Re: Problemas con SELECT CASE
Publicado por: stork32 en 11 Octubre 2008, 23:28 pm
pues SI tienes mucha razon Spider - Net.  Aun sigo intentado pero no sale.
GRACIAS POR SU AYUDA Spider-Net y s E t H  :)


Título: Re: Problemas con SELECT CASE
Publicado por: Novlucker en 11 Octubre 2008, 23:38 pm
Que es lo que no sale.. cual es el problema? Error?
Vistazo de 5 segundos..  :P

Citar
Text".Text="mar1"Then

Y esto otro...

Citar
Case 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:


Título: Re: Problemas con SELECT CASE
Publicado por: stork32 en 11 Octubre 2008, 23:51 pm
Ups !! errores de ESCRITURA  ;D pues va asi

Código:

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?

Código:
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:


Título: Re: Problemas con SELECT CASE
Publicado por: Novlucker en 12 Octubre 2008, 00:01 am
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


Título: Re: Problemas con SELECT CASE
Publicado por: stork32 en 12 Octubre 2008, 00:09 am
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:


Título: Re: Problemas con SELECT CASE
Publicado por: Spider-Net en 12 Octubre 2008, 13:17 pm
stork32 ese programa no está acabado tio.

Yo creo que sería algo así:

Código
  1. Dim i As Integer
  2.  
  3. Private Sub Command1_Click()
  4. End
  5. End Sub
  6.  
  7. Private Sub Command2_Click()
  8. If Text1.Text = "mar1" And Text2.Text = "mar1" And i < 3 Then
  9.    MsgBox "Bienvenido a mi sistema"
  10. Else
  11. i = i + 1
  12. Select Case i
  13.    Case 1
  14.        vez = "una primera"
  15.    Case 2
  16.        vez = "una segunda"
  17.    Case 3
  18.        vez = "una tercera"
  19.    Case Else
  20.        vez = "No quedan intentos"
  21.    End Select
  22.  
  23.    MsgBox vez
  24. End If
  25. End Sub

Se puede hacer de otras maneras, pero esa sería una correcta.