Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Duda con if anidados

Estas en el tema de Duda con if anidados en el foro de Visual Basic clásico en Foros del Web. Hola! tengo una duda con lo siguiente: tengo un combo1. el cual puede tener maternal, preescolar o primaria, un combo3. el cual puede ser quincenal ...
  #1 (permalink)  
Antiguo 14/06/2011, 12:37
Avatar de Shizuka  
Fecha de Ingreso: marzo-2011
Mensajes: 106
Antigüedad: 13 años, 1 mes
Puntos: 4
Duda con if anidados

Hola! tengo una duda con lo siguiente: tengo un combo1. el cual puede tener maternal, preescolar o primaria, un combo3. el cual puede ser quincenal o mensual y un combo5. el cual puede tener 25% o 50% de descuento y trato de hacerlo asì:


Código:
Private Sub Text7_Click()
Dim num1 As Double
Dim porcentaje As Double
If Combo1.Text = "Maternal" Then
    num1 = "1250"
    If Combo3.Text = "Quincenal" Then
            num1 = num1 / 2
            Text7 = num1
                If Combo5.Text = "25%" Then
                porcentaje = num1 * 0.25
                num1 = num1 - porcentaje
                Text7 = num1
                Else: Combo5.Text = "50%"
                porcentaje = num1 * 0.5
                num1 = num1 - porcentaje
                Text7 = num1
                End If
    Else: Combo3.Text = "Mensual"
            num1 = num1
            Text7 = num1
                If Combo5.Text = "25%" Then
                porcentaje = num1 * 0.25
                num1 = num1 - porcentaje
                Text7 = num1
                Else: Combo5.Text = "50%"
                porcentaje = num1 * 0.5
                num1 = num1 - porcentaje
                Text7 = num1
                End If
End If
End If
End Sub
Hasta ahi me evalua lo de maternal, y todo bien, hace los descuentos y todo, pero cuando quiero agregar el if para evaluar lo de primaria uso esto:

Código:
Private Sub Text7_Click()
Dim num1 As Double
Dim porcentaje As Double
If Combo1.Text = "Maternal" Then
    num1 = "1250"
    If Combo3.Text = "Quincenal" Then
            num1 = num1 / 2
            Text7 = num1
                If Combo5.Text = "25%" Then
                porcentaje = num1 * 0.25
                num1 = num1 - porcentaje
                Text7 = num1
                Else: Combo5.Text = "50%"
                porcentaje = num1 * 0.5
                num1 = num1 - porcentaje
                Text7 = num1
                End If
    Else: Combo3.Text = "Mensual"
            num1 = num1
            Text7 = num1
                If Combo5.Text = "25%" Then
                porcentaje = num1 * 0.25
                num1 = num1 - porcentaje
                Text7 = num1
                Else: Combo5.Text = "50%"
                porcentaje = num1 * 0.5
                num1 = num1 - porcentaje
                Text7 = num1
                End If
Else: Combo1.Text = "Preescolar"
    num1 = "1350"
    If Combo3.Text = "Quincenal" Then
            num1 = num1 / 2
            Text7 = num1
                If Combo5.Text = "25%" Then
                porcentaje = num1 * 0.25
                num1 = num1 - porcentaje
                Text7 = num1
                Else: Combo5.Text = "50%"
                porcentaje = num1 * 0.5
                num1 = num1 - porcentaje
                Text7 = num1
                End If
    Else: Combo3.Text = "Mensual"
            num1 = num1
            Text7 = num1
                If Combo5.Text = "25%" Then
                porcentaje = num1 * 0.25
                num1 = num1 - porcentaje
                Text7 = num1
                Else: Combo5.Text = "50%"
                porcentaje = num1 * 0.5
                num1 = num1 - porcentaje
                Text7 = num1
                End If
End If
End If
End If
End Sub

y ahì me sale un error de end sin if , me podrian revisar el còdigo por favor? gracias de antemano.
__________________
Will you please tell me the way to the sky?
  #2 (permalink)  
Antiguo 14/06/2011, 12:42
 
Fecha de Ingreso: febrero-2011
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: Duda con if anidados

Estimado :

Segun veo, todo depende del valor de combo3.text. Por lo que te recomiendo dejarlo todo dentro de un select case:

ej:

select case combo3.text
case "Quincenal"
case "Preescolar"
end select
  #3 (permalink)  
Antiguo 14/06/2011, 12:45
Avatar de Shizuka  
Fecha de Ingreso: marzo-2011
Mensajes: 106
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: Duda con if anidados

Muchas gracias por la respuesta, si habìa pensado en eso, pero es posible agregar estructuras if dentro de un select case?

es que lo hago asì: y me sale error de que case sin select case

Código vb:
Ver original
  1. Private Sub Text7_Click()
  2. Dim num1 As Double
  3. Dim porcentaje As Double
  4. Select Case Combo3.Text
  5. Case "Quincenal"
  6.  
  7.     If Combo3.Text = "Quincenal" Then
  8.             num1 = "1250"
  9.             num1 = num1 / 2
  10.             Text7 = num1
  11.                 If Combo5.Text = "25%" Then
  12.                 porcentaje = num1 * 0.25
  13.                 num1 = num1 - porcentaje
  14.                 Text7 = num1
  15.                 Else: Combo5.Text = "50%"
  16.                 porcentaje = num1 * 0.5
  17.                 num1 = num1 - porcentaje
  18.                 Text7 = num1
  19.                 End If
  20.     Else: Combo3.Text = "Mensual"
  21.             num1 = "1250"
  22.             num1 = num1
  23.             Text7 = num1
  24.                 If Combo5.Text = "25%" Then
  25.                 porcentaje = num1 * 0.25
  26.                 num1 = num1 - porcentaje
  27.                 Text7 = num1
  28.                 Else: Combo5.Text = "50%"
  29.                 porcentaje = num1 * 0.5
  30.                 num1 = num1 - porcentaje
  31.                 Text7 = num1
  32.                 End If
  33. Case "Preescolar"
  34.  If Combo3.Text = "Quincenal" Then
  35.             num1 = "1350"
  36.             num1 = num1 / 2
  37.             Text7 = num1
  38.                 If Combo5.Text = "25%" Then
  39.                 porcentaje = num1 * 0.25
  40.                 num1 = num1 - porcentaje
  41.                 Text7 = num1
  42.                 Else: Combo5.Text = "50%"
  43.                 porcentaje = num1 * 0.5
  44.                 num1 = num1 - porcentaje
  45.                 Text7 = num1
  46.                 End If
  47.     Else: Combo3.Text = "Mensual"
  48.             num1 = "1350"
  49.             num1 = num1
  50.             Text7 = num1
  51.                 If Combo5.Text = "25%" Then
  52.                 porcentaje = num1 * 0.25
  53.                 num1 = num1 - porcentaje
  54.                 Text7 = num1
  55.                 Else: Combo5.Text = "50%"
  56.                 porcentaje = num1 * 0.5
  57.                 num1 = num1 - porcentaje
  58.                 Text7 = num1
  59.                 End If
  60. End Select
  61. End Sub
__________________
Will you please tell me the way to the sky?
  #4 (permalink)  
Antiguo 14/06/2011, 12:49
 
Fecha de Ingreso: febrero-2011
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: Duda con if anidados

estimado :

¿por que los else estan con ":" al final?

Saludos.
  #5 (permalink)  
Antiguo 14/06/2011, 12:51
Avatar de Shizuka  
Fecha de Ingreso: marzo-2011
Mensajes: 106
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: Duda con if anidados

No sè,esta raro por que le quite el

else
if

y use solo el else y el programa pone los : automaticamente

Y ahi en el ultimo mensaje tuve un errorcito en el case es

Código vb:
Ver original
  1. Select Case Combo1.Text

Pero lo cambio y sale el mismo error, " case sin select case" y me manda a la linea

Código vb:
Ver original
  1. Case "Preescolar"

gracias por las respuestas :)
__________________
Will you please tell me the way to the sky?
  #6 (permalink)  
Antiguo 14/06/2011, 19:14
Avatar de Shizuka  
Fecha de Ingreso: marzo-2011
Mensajes: 106
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: Duda con if anidados

Gracias por las respuestas :) ya lo pude resolver con tu ayuda y viendo otras cosas en internet y quedó así:

Código vb:
Ver original
  1. Private Sub Text7_Click()
  2. Select Case Combo1.Text
  3. Case "Maternal"
  4. 'MsgBox "Maternal"
  5.            num1 = "1250"
  6.     If Combo3.Text = "Quincenal" Then
  7.                 num1 = num1 / 2
  8.                 If Combo5.Text = "25%" Then
  9.                     porcentaje = num1 * 0.25
  10.                     num1 = num1 - porcentaje
  11.                     Text7 = num1
  12.                 Else
  13.                 If Combo5.Text = "50%" Then
  14.                     porcentaje = num1 * 0.5
  15.                     num1 = num1 - porcentaje
  16.                     Text7 = num1
  17.                 End If
  18.                 End If
  19.     Else
  20.     If Combo3.Text = "Mensual" Then
  21.                 num1 = "1250"
  22.                 num1 = num1
  23.                 Text7 = num1
  24.                 If Combo5.Text = "25%" Then
  25.                     porcentaje = num1 * 0.25
  26.                     num1 = num1 - porcentaje
  27.                     Text7 = num1
  28.                 Else
  29.                 If Combo5.Text = "50%" Then
  30.                     porcentaje = num1 * 0.5
  31.                     num1 = num1 - porcentaje
  32.                     Text7 = num1
  33.                 End If
  34.                 End If
  35.     End If
  36.     End If
  37. Case "Preescolar"
  38. 'MsgBox "Preescolar"
  39.    num1 = "1350"
  40.     If Combo3.Text = "Quincenal" Then
  41.                 num1 = num1 / 2
  42.                 If Combo5.Text = "25%" Then
  43.                     porcentaje = num1 * 0.25
  44.                     num1 = num1 - porcentaje
  45.                     Text7 = num1
  46.                 Else
  47.                 If Combo5.Text = "50%" Then
  48.                     porcentaje = num1 * 0.5
  49.                     num1 = num1 - porcentaje
  50.                     Text7 = num1
  51.                 End If
  52.                 End If
  53.     Else
  54.     If Combo3.Text = "Mensual" Then
  55.                 num1 = "1350"
  56.                 num1 = num1
  57.                 Text7 = num1
  58.                 If Combo5.Text = "25%" Then
  59.                     porcentaje = num1 * 0.25
  60.                     num1 = num1 - porcentaje
  61.                     Text7 = num1
  62.                 Else
  63.                 If Combo5.Text = "50%" Then
  64.                     porcentaje = num1 * 0.5
  65.                     num1 = num1 - porcentaje
  66.                     Text7 = num1
  67.                 End If
  68.                 End If
  69.     End If
  70.     End If
  71. Case Else
  72. 'MsgBox "Primaria"
  73. num1 = "1350"
  74.     If Combo3.Text = "Quincenal" Then
  75.                 num1 = num1 / 2
  76.                 If Combo5.Text = "25%" Then
  77.                     porcentaje = num1 * 0.25
  78.                     num1 = num1 - porcentaje
  79.                     Text7 = num1
  80.                 Else
  81.                 If Combo5.Text = "50%" Then
  82.                     porcentaje = num1 * 0.5
  83.                     num1 = num1 - porcentaje
  84.                     Text7 = num1
  85.                 End If
  86.                 End If
  87.     Else
  88.     If Combo3.Text = "Mensual" Then
  89.                 num1 = "1350"
  90.                 num1 = num1
  91.                 Text7 = num1
  92.                 If Combo5.Text = "25%" Then
  93.                     porcentaje = num1 * 0.25
  94.                     num1 = num1 - porcentaje
  95.                     Text7 = num1
  96.                 Else
  97.                 If Combo5.Text = "50%" Then
  98.                     porcentaje = num1 * 0.5
  99.                     num1 = num1 - porcentaje
  100.                     Text7 = num1
  101.                 End If
  102.                 End If
  103.     End If
  104.     End If
  105. End Select
  106. End Sub

muchas gracias :)
__________________
Will you please tell me the way to the sky?
  #7 (permalink)  
Antiguo 15/06/2011, 07:42
 
Fecha de Ingreso: febrero-2011
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: Duda con if anidados

de acuerdo. Agradecido por la respuesta.

Pero me permito hacerte una sugerencia.. cuidado con las sangrias, a veces se confunde donde termina el if por ejemplo.

Un codigo ordenado y simple, es muy facil de leer y entender. En cambio, si esta medio mezclado, cuesta leerlo y entender lo que estas haciendo.

Considera que no siempre seras tu quien mantenga el codigo, puede ser que venga otra persona y vea lo que has escrito..

Saludos.
  #8 (permalink)  
Antiguo 15/06/2011, 08:07
Avatar de Shizuka  
Fecha de Ingreso: marzo-2011
Mensajes: 106
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: Duda con if anidados

Siii, fue la misma observacion que me hizò otro compañero, gracias :3
__________________
Will you please tell me the way to the sky?

Etiquetas: anidados
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:23.