• Viernes 8 de Noviembre de 2024, 21:04

Autor Tema:  Select Case Dudas De Uso  (Leído 2814 veces)

abelsql3000

  • Miembro activo
  • **
  • Mensajes: 76
    • Ver Perfil
Select Case Dudas De Uso
« en: Miércoles 27 de Diciembre de 2006, 23:41 »
0
Miren amigos he leido materiales que me an confundido en ves de ayudar, dicen que la sentencia select case puede hacer varios caso de verdad, otros dicen que solo hace uno y sale del select case, que de cierto es esto ya que necesito usar el select case si es que este puede hacer varios caso a la ves, ejemplo tengo varios checkbox y si se activan dos o tres de ellos que hagan los procesos definidos en el cada Case del select case, pasen ejemplo de esta ocurrencia de SELECT case y Chekbox

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Select Case Dudas De Uso
« Respuesta #1 en: Jueves 28 de Diciembre de 2006, 00:06 »
0
no se te entiende nada, pero si a lo que te refieres es que si un select case puede evaluar varias cosas?, es algo así a lo que te refieres?

Código: Text
  1. Private Sub Command1_Click()
  2. x = 0: y = 1
  3. Select Case True
  4.     Case x = 2 And y = 1
  5.         MsgBox "Evalue un caso multiple"
  6. End Select
  7. End Sub
  8.  

PD aprende a plantear bien tus dudas, ya que sino no se te responderá de la manera adecuada  <_<

mejor mira este enlace, aunque no es especifico para VB pero te ayudara:
http://www.elguille.info/NET/dotnet/equiva...bcs3.htm#select

abelsql3000

  • Miembro activo
  • **
  • Mensajes: 76
    • Ver Perfil
Re: Select Case Dudas De Uso
« Respuesta #2 en: Jueves 28 de Diciembre de 2006, 01:35 »
0
TIENES RAZON AMIGO, DISCULPA EL MAL ENTENDIDO, ES QUE ESTABA APURADO.

La consulta es los sgte: Tengo 5 checkbox y deseo que se incremente el acumulador que he definido en funcion al caso que haya sucedido al activar cierto checkbox, por ejemplo check1, check3,check5. El acumulador debe ser 900, segun el ejemplo.

Private Sub Command1_Click()
Static Sum
Sum = 0
Select Case True
Case Check1.Value
        Sum = Sum + 100
Case Check2.Value
        Sum = Sum + 200
Case Check3.Value
        Sum = Sum + 300
Case Check4.Value
        Sum = Sum + 400
Case Else
        Sum = Sum + 500
End Select
Print Str(Sum)
End Sub

No me funciona aqui el select case para evaluar varios casos

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Select Case Dudas De Uso
« Respuesta #3 en: Jueves 28 de Diciembre de 2006, 02:51 »
0
para ese caso en especifico no necesitas de un select o una condicional que evalué a cada check, tu error es que te enfrascas con el select cuando en la programación hay un sin fin de soluciones para todo, por ejemplo te hice un pequeño code que resulve tu problema con pocas lineas :) observa:

lo único que debes de realizar es hacer un array de controles check e insertar un botón, luego inserta este código y díme si te sirve ;)

Código: Text
  1. Dim sum As Integer
  2. Private Sub Check1_Click(Index As Integer)
  3. If Check1(Index).Value = 0 Then
  4.     sum = sum - (100 * (Index + 1))
  5. ElseIf Check1(Index).Value = 1 Then
  6.     sum = sum + (100 * (Index + 1))
  7. End If
  8. End Sub
  9.  
  10. Private Sub Command1_Click()
  11. MsgBox sum
  12. End Sub
  13.  
  14.  

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Select Case Dudas De Uso
« Respuesta #4 en: Jueves 28 de Diciembre de 2006, 09:38 »
0
El problema es que cuando un caso cumple la condicion no continua con los demas
si continuamos con tu ejemplo: check1, check3,check5


Private Sub Command1_Click()
Static Sum
Sum = 0

Select Case True
       Case Check1.Value   <----- Cumple la condicion a la primera y sale del select no continua evaluando, pues ya encontro el caso que buscaba
            Sum = Sum + 100
       Case Check2.Value
            Sum = Sum + 200
       Case Check3.Value
            Sum = Sum + 300
       Case Check4.Value
            Sum = Sum + 400
       Case Else
            Sum = Sum + 500
       End Select
       Print Str(Sum)
End Sub

Tendrias que usar IFs o algo asi como lo que plantea ArKaNtOs


Te dejo este código tal vez te pueda ayudar

Código: Text
  1.  
  2. Private Sub Command1_Click()
  3. Static Sum As Double, bSeleccionada As Boolean
  4. Dim i As Integer, dValor As Double
  5. Sum = 0
  6. i = 1
  7.  
  8. Do While i &#60;= 5
  9.    dValor = Choose(i, 100, 200, 300, 400, 500)
  10.    bSeleccionada = Choose(i, Check1.Value, Check2.Value, Check3.Value, Check4.Value, Check5.Value) = 1
  11.    If bSeleccionada Then
  12.         Sum = Sum + dValor
  13.    End If
  14.    i = i + 1
  15. Loop
  16.  
  17. Print Str(Sum)
  18. End Sub
  19.  

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Select Case Dudas De Uso
« Respuesta #5 en: Jueves 28 de Diciembre de 2006, 15:20 »
0
Hola abelsql3000, a ver si te confundo un poco mas  :P

Citar
dicen que la sentencia select case puede hacer varios caso de verdad, otros dicen que solo hace uno y sale del select case
Tal vez lo que quisieron decirte es que en algunos lenguajes (No en VB) es posible estructurar el código de un select para que se ejecuten varios casos consecutivos a partir del primero que cumpla con la condición. Uno de los lenguajes que permite esto en C que va a procesar todos los casos hasta encontrar la sentencia break.

Ej:
Código: Text
  1. switch(n){
  2.   case 1:
  3.     //Codigo 1
  4.   case 2:
  5.     //Codigo 2
  6.   break;
  7.   case 3:
  8.     //Codigo 3
  9.   case 4:
  10.     //Codigo 4
  11.   case 5:
  12.     //Codigo 5
  13.   break;
  14. }
  15.  

En caso de que n valga 1 se va a ejecutar el bloque de código 1 y 2
En caso de que n valga 2 se va a ejecutar el bloque de código 2
En caso de que n valga 3 se va a ejecutar el bloque de código 3, 4 y 5

Espero que se entienda

Saludos  :comp:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

abelsql3000

  • Miembro activo
  • **
  • Mensajes: 76
    • Ver Perfil
Re: Select Case Dudas De Uso
« Respuesta #6 en: Viernes 29 de Diciembre de 2006, 07:20 »
0
En fin, no sucede con el switch de Borland C, es por eso la unica solucion mas practica es esta.

Private Sub Check1_Click(Index As Integer)
Static suma
suma = 0
If Check1(0).Value Then suma = suma + 10
If Check1(1).Value Then suma = suma + 20
If Check1(2).Value Then suma = suma + 30
If Check1(3).Value Then suma = suma + 40

Print Str(suma)
End Sub

Es lo que deseaba, a menos codigo mas facil la existencia.

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Select Case Dudas De Uso
« Respuesta #7 en: Viernes 29 de Diciembre de 2006, 07:59 »
0
no quiero parecer ostentoso pero de hecho teóricamente mi código es mas corto y es mas rápido (debido al uso de varios if, Claro que no se nota), además tu código tiene un error, ya que no se debe validar en el evento click del check sino sumaria de mas ;) ese código cabria mejor en un botón o en algún otro elemento y ya no se caería en la necesidad de hacer uso de una matriz de elementos ;)

Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: Select Case Dudas De Uso
« Respuesta #8 en: Jueves 4 de Enero de 2007, 05:15 »
0
Buenas.

Mi aporte  :D

Código: Text
  1.  
  2. Private Sub Check1_Click(Index As Integer)
  3.   Static suma
  4.   Dim a As Byte
  5.   suma = 0
  6.   For a = 1 To 4
  7.     If Check1(a - 1).Value Then suma = suma + (10 * a)
  8.   Next
  9.   Print Str(suma)
  10. End Sub
  11.  
  12.  
Saludos
The sweet smell of a great sorrow lies over the land.


ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Select Case Dudas De Uso
« Respuesta #9 en: Jueves 4 de Enero de 2007, 20:29 »
0
Cita de: "Epa"
Buenas.

Mi aporte  :D

Código: Text
  1.  
  2. Private Sub Check1_Click(Index As Integer)
  3.   Static suma
  4.   Dim a As Byte
  5.   suma = 0
  6.   For a = 1 To 4
  7.     If Check1(a - 1).Value Then suma = suma + (10 * a)
  8.   Next
  9.   Print Str(suma)
  10. End Sub
  11.  
  12.  
Saludos
no crees que son muchas iteraciones ya que cada vez que hacen click en el check este evalúa todos los demás y si presiona otro vuelve ha hacer lo mismo?