Visual Basic - procedimiento demasiado largo

Life is soft - evento anual de software empresarial
 
Vista:

procedimiento demasiado largo

Publicado por mariu (38 intervenciones) el 12/05/2009 19:12:29
hola, se me presento otro problema en visual basic! me dice q el procedimiento es demasiado largo... pero no se si existe otra menera de simplificarlo! o algo asi! se que tengo muchos if... pero necesito llamar a cada uno de los label y que los demas se oculten cuando no son llamados... todo me funciona bien hasta el ultimo if!!! y lo peor es q todavia me faltan colocolar como 100 labels mas! Necesito de su ayuda!!!
aqui les mando el codigo para que observen!!
Private Sub Command1_Click()
Text2.Text = valor.Text
If valor = "" Then
MsgBox "Campo Vacío Ingrese Número para su Busqueda", vbOKOnly + vbInformation, "Numero de Pozo"
valor.SetFocus
Else
If valor = "639" Then
Label1.Visible = True
Label8.Visible = True
Label2.Visible = False
Label19.Visible = False
Label3.Visible = False
Label20.Visible = False
Label4.Visible = False
Label18.Visible = False
Label10.Visible = False
Label12.Visible = False
Label13.Visible = False
Label11.Visible = False
Label15.Visible = False
Label14.Visible = False….. label 15,16,17......76
Label77.Visible = False
Label78.Visible = False
valor.Text = ""
valor.SetFocus (Y ASI CON LOS DEMAS VALORES)
Else
If valor = "441" Then
Label2.Visible = True
Label19.Visible = True
Label1.Visible = False
.
.
.
Label78.Visible = False
valor.Text = ""
valor.SetFocus (Coloco esto así porque el mensaje esta demasiado largo y no lo puede enviar ),
Else
If valor = "436" Then
Label3.Visible = True
Label20.Visible = True
Label4.Visible = False
.
.
.
Label78.Visible = False
valor.Text = "”
Else
If valor = "495" Then...
Else
If valor = "588" Then
Else...
If valor = "590" Then
Else....
If valor = "404" Then
Else
If valor = "590" TheN
Else
If valor = "490" Then
Else....
If valor = "400" Then
Label22.Visible = True
Label21.Visible = True
Label17.Visible = False.............
Label78.Visible = False
valor.Text = ""
valor.SetFocus
Else
If valor = "403" Then
Label23.Visible = True
Label24.Visible = True
Label22.Visible = False
Label15.Visible = False......
Label78.Visible = False
valor.Text = ""
valor.SetFocus
Else
If valor = "500" Then
Label25.Visible = True
Label26.Visible = True
Label23.Visible = False
Label24.Visible = False......................

Label78.Visible = False
valor.Text = ""
valor.SetFocus

Else
If valor = "485" Then
Label27.Visible = True
Label28.Visible = True
Label25.Visible = False
Label24.Visible = False...........

Label78.Visible = False
valor.Text = ""
valor.SetFocus
Else
If valor = "389" Then
Label29.Visible = True
Label30.Visible = True
Label27.Visible = False..........

Label78.Visible = False
valor.Text = ""
valor.SetFocus
Else
If valor = "431" Then
Label31.Visible = True
Label32.Visible = True
Label29.Visible = False ......
Label78.Visible = False
valor.Text = ""
valor.SetFocus
Else
If valor = "401" Then
Label33.Visible = True
Label34.Visible = True
Label31.Visible = False
Label30.Visible = False
........ Label78.Visible = False
valor.Text = ""
valor.SetFocus
Else
If valor = "363" Then
Label35.Visible = True
Label36.Visible = True
Label33.Visible = False
..........
Label78.Visible = False
valor.Text = ""
valor.SetFocus

Else
If valor = "362" Then
Label37.Visible = True
Label38.Visible = True
Label35.Visible = False
Label36.Visible = False
.............. Label78.Visible = False
valor.Text = ""
valor.SetFocus


Else
If valor = "361" Then
Label39.Visible = True
Label40.Visible = True
Label37.Visible = False
......................
Label77.Visible = False
Label78.Visible = False
valor.Text = ""
valor.SetFocus


Else
If valor = "360" Then
Label41.Visible = True
Label42.Visible = True
Label39.Visible = False
Label40.Visible = False
................... Label78.Visible = False
valor.Text = ""
valor.SetFocus

Else
If valor = "359" Then
Label43.Visible = True
Label44.Visible = True
Label41.Visible = False
Label42.Visible = False
.................. Label78.Visible = False
valor.Text = ""
valor.SetFocus

Else
If valor = "358" Then
Label45.Visible = True
Label46.Visible = True
Label43.Visible = False
Label44.Visible = False
...................
Label78.Visible = False
valor.Text = ""
valor.SetFocus
Else
If valor = "433" Then
Label47.Visible = True
Label48.Visible = True
Label45.Visible = False .............
Label78.Visible = False
valor.Text = ""
valor.SetFocus


Else
If valor = "537" Then
Label49.Visible = True
Label50.Visible = True
Label47.Visible = False.......
Label78.Visible = False
valor.Text = ""
valor.SetFocus


Else
If valor = "540" Then
Label51.Visible = True
Label52.Visible =true .......
Label78.Visible = False
valor.Text = ""
valor.SetFocus

Else
If valor = "428" Then
Label53.Visible = True
Label54.Visible = True ................
Label78.Visible = False
valor.Text = ""
valor.SetFocus


Else
If valor = "391" Then
Label57.Visible = True
Label58.Visible = True
Label55.Visible = False .......
Label78.Visible = False
valor.Text = ""
valor.SetFocus
Else
If valor = "555" Then
Label59.Visible = True
Label60.Visible = True
Label57.Visible = False ........
Label78.Visible = False
valor.Text = ""
valor.SetFocus
Else
If valor = "398" Then
Label61.Visible = True
Label62.Visible = True
Label59.Visible = False .........
Label78.Visible = False
valor.Text = ""
valor.SetFocus

Else
If valor = "535" Then
Label63.Visible = True
Label64.Visible = True
Label61.Visible = False........
Label78.Visible = False
valor.Text = ""
valor.SetFocus

Else
If valor = "538" Then
Label65.Visible = True
Label66.Visible = True
Label63.Visible = False…
Label64.Visible = False
.............
Label78.Visible = False….

Else
If valor = "494" Then
Label67.Visible = True
Label68.Visible = True
Label65.Visible = False
Label66.Visible = False
.............
Label78.Visible = False…
Else
If valor = "498" Then
Label69.Visible = True
Label70.Visible = True………
Label78.Visible = False…
Else
If valor = "415" Then
Label71.Visible = True
Label72.Visible = True
Label69.Visible = False
.............. Label78.Visible = False
valor.Text = ""
valor.SetFocus

Else
If valor = "392" Then
Label73.Visible = True
Label74.Visible = True................
Label78.Visible = False
valor.Text = ""
valor.SetFocus


Else
If valor = "418" Then
Label75.Visible = True
Label76.Visible = True
Label73.Visible = False ,...................
Label55.Visible = False
..... Label11.Visible = False
valor.Text = ""
'valor.SetFocus

Else

Cancel = MsgBox("No existe Pozo en el Area 1, ¿Desea Buscarlo en el Pozo Area 2?", vbYesNo Or vbQuestion, "Numero de Pozo")

If Cancel = vbYes Then
Form5.Show
Unload Me


Else
valor.Text = ""
valor.SetFocus
End If
End If
End If
.
.
.
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:procedimiento demasiado largo

Publicado por MARIU  (38 intervenciones) el 12/05/2009 19:18:55
ESTO LO TENGO QUE HACER PARA CADA UNO DE LOS LABEL... el ultimo if me funciona si no le coloco las instricciones de volver invisible los demas label! si lo coloco completo me da el error antes mencionado!
Private Sub Command1_Click()

Text2.Text = valor.Text

If valor = "" Then
MsgBox "Campo Vacío Ingrese Número para su Busqueda", vbOKOnly + vbInformation, "Numero de Pozo"
valor.SetFocus
Else
If valor = "639" Then
Label1.Visible = True
Label8.Visible = True
Label2.Visible = False
Label19.Visible = False
Label3.Visible = False
Label20.Visible = False
Label4.Visible = False
Label18.Visible = False
Label10.Visible = False
Label12.Visible = False
Label13.Visible = False
Label11.Visible = False
Label15.Visible = False
Label14.Visible = False
Label17.Visible = False
Label16.Visible = False
Label22.Visible = False
Label21.Visible = False
Label23.Visible = False
Label24.Visible = False
Label25.Visible = False
Label26.Visible = False
Label27.Visible = False
Label28.Visible = False
Label29.Visible = False
Label30.Visible = False
Label31.Visible = False
Label32.Visible = False
Label33.Visible = False
Label34.Visible = False
Label35.Visible = False
Label36.Visible = False
Label37.Visible = False
Label38.Visible = False
Label39.Visible = False
Label40.Visible = False
Label41.Visible = False
Label42.Visible = False
Label43.Visible = False
Label44.Visible = False
Label45.Visible = False
Label46.Visible = False
Label47.Visible = False
Label48.Visible = False
Label49.Visible = False
Label50.Visible = False
Label51.Visible = False
Label52.Visible = False
Label53.Visible = False
Label54.Visible = False
Label55.Visible = False
Label56.Visible = False
Label57.Visible = False
Label58.Visible = False
Label59.Visible = False
Label60.Visible = False
Label61.Visible = False
Label62.Visible = False
Label63.Visible = False
Label64.Visible = False
Label65.Visible = False
Label66.Visible = False
Label67.Visible = False
Label68.Visible = False
Label69.Visible = False
Label70.Visible = False
Label71.Visible = False
Label72.Visible = False
Label73.Visible = False
Label74.Visible = False
Label75.Visible = False
Label76.Visible = False
Label77.Visible = False
Label78.Visible = False
valor.Text = ""
valor.SetFocus


Else
If valor = "441" Then
Label2.Visible = True
Label19.Visible = True
Label1.Visible = False
Label8.Visible = False
Label3.Visible = False
Label20.Visible = False
Label4.Visible = False
Label18.Visible = False
Label10.Visible = False
Label12.Visible = False
Label13.Visible = False
Label11.Visible = False
Label15.Visible = False
Label14.Visible = False
Label17.Visible = False
Label16.Visible = False
Label22.Visible = False
Label21.Visible = False
Label23.Visible = False
Label24.Visible = False
Label25.Visible = False
Label26.Visible = False
Label27.Visible = False
Label28.Visible = False
Label29.Visible = False
Label30.Visible = False
Label31.Visible = False
Label32.Visible = False
Label33.Visible = False
Label34.Visible = False
Label35.Visible = False
Label36.Visible = False
Label37.Visible = False
Label38.Visible = False
Label39.Visible = False
Label40.Visible = False
Label41.Visible = False
Label42.Visible = False
Label43.Visible = False
Label44.Visible = False
Label45.Visible = False
Label46.Visible = False
Label47.Visible = False
Label48.Visible = False
Label49.Visible = False
Label50.Visible = False
Label51.Visible = False
Label52.Visible = False
Label53.Visible = False
Label54.Visible = False
Label55.Visible = False
Label56.Visible = False
Label57.Visible = False
Label58.Visible = False
Label59.Visible = False
Label60.Visible = False
Label61.Visible = False
Label62.Visible = False
Label63.Visible = False
Label64.Visible = False
Label65.Visible = False
Label66.Visible = False
Label67.Visible = False
Label68.Visible = False
Label69.Visible = False
Label70.Visible = False
Label71.Visible = False
Label72.Visible = False
Label73.Visible = False
Label74.Visible = False
Label75.Visible = False
Label76.Visible = False
Label77.Visible = False
Label78.Visible = False
valor.Text = "" ..............................................
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:procedimiento demasiado largo

Publicado por Rolando Lau (115 intervenciones) el 12/05/2009 20:06:09
Hola que tal
Bien.

1.-Consejo , para este tipo de casos te mostrar muchos datos en control es preferible usar una grilla. pero en fin es tu diseño.

2.- Puedes usar una Matriz de controles.

Es decir que todos los labels tengan el mismo nombre (name) , y que solo varie su indice (index)

y pudes crear estas funciones:
ejemplo:

tu label se llamara "labelValor"

1.-
----- Pondra todos los label en visible false o true

Function FVisibleLabels ( bvisible as boolean)
for i = 0 to 78
labelValor(i).visible = bvisible
next
ne function

2.-
-------- visible convinado por rango
Function FVisible( iTrue as int ,fTrue as int , ifalse as int, ffalse as int )
for i = iTrue to fTrue
labelValor(i).visible = true
next
for i = ifalse to ffalse
labelValor(i).visible = false
next
end function

3.-
--------- Visible aleatorio
--- digamos que son 4 labels que quieres en visible false

redim arr(3) as variant

--las posiciones o los indices de los labels que quieres en falso
arr(0)=4
arr(1)=5
arr(2)=9
arr(3)=12

function FVisible (arrTrue() as variant , num as int , vVisible as boolean)
for i = 0 to num
labelValor( arrtrue(i) ).visible = vVisible
next
end function

FVisible arr() , 4 , false <<<<------ pondra en falso los labels de los indices indicados en la variable arr

Espero te sirva

Saludos

Rolando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar