https://foro.gambas-es.org/viewtopic.php?f=1&t=825&p=4619#p4619
-----------------------------------
jsbsan
Domingo, 01 Agosto 2010, 21:12

Re: Diferencias Entre SELECT CASE / IF...THEN
-----------------------------------
Pues mira cuando hay muchas comparaciones a realizar....

Fijate en este ejemplo que te pongo, primero hay un[code linenumbers=false syntax=gambas] if... then,[/code] y luego dentro de el hay un [code linenumbers=false syntax=gambas]SELECT CASE[/code]

¿Te imaginas hacer los con 11[code linenumbers=false syntax=gambas] if..then,[/code],, con sus [code linenumbers=false syntax=gambas]endif[/code],,, y que se te olvide alguno,, que lio,no?,, ¿¿¿por donde empezar a buscar el error????

Sin embargo con el Select Case queda todo mas claro...

[code linenumbers=false syntax=gambas]FOR c = 0 TO FMain.TableViewdatos.rows.count - 1
  tipo = Left(FMain.TableViewdatos[c, 0].text, 3)
  restotipo = Right(FMain.TableViewdatos[c, 0].text, 2)

 
 IF restotipo <> "01" THEN 
   SELECT CASE tipo
    CASE "01." 
     FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalingreso)

    CASE "02."
      FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalgastobasicosAli)
 
    CASE "03." 
          FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalgastobasicosRopa)
      
    CASE "04."
    FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalgastobasicosOtroGastos)
 
    CASE "05."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalvehiculos)

    CASE "06."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalocio)


    CASE "07."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalformacion)

    CASE "08."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalvivienda)

    CASE "09."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalmascotas)

    CASE "10."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalvarios)

    CASE "11."
FMain.TableViewdatos[c, 4].text = f3(Val(f2(FMain.TableViewdatos[c, 3].text)) / var.sumatotalahorro)

 END SELECT 

ENDIF 
NEXT [/code]

Espero que te sirva el ejemplo...

Un saludo

Julio


