Visual Basic - duda funcion if

Life is soft - evento anual de software empresarial
   
Vista:

duda funcion if

Publicado por nfalcon (13 intervenciones) el 12/02/2010 11:25:43
Buenos dias, a ver si alguien me puede ayudar, vereis tengo el siguiente tramo de codigo, el problema que tengo es que necesito que la variable lote me coja el valor que tenga para cualquier parte del programa porque lo necesito coger en otra parte, pero si la pongo dentro del IF no me coge el valor, pero si si la igualo a cualquier numero fuera de el if, por ejemplo lote = 1234 este valor me lo coge fuera del if pero no dentro, la variable la tengo declarada como public pero asi tampoco. Este es el codigo:

If lin = "WV63|WW60|WW61|WW68|GT00" Then

Line Input #1, strs
Line Input #1, strs

strdato() = Split(strs, "|")

lote = strdato(UBound(strdato)) ' si lo pongo aqui no me coge el valor para el resto de trama del programa

End If

Pero si lo pongo aqui fuera si, pero claro no puedo cogerlo del fichero que necesito.

Gracias.
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:duda funcion if

Publicado por Antoni Masana (79 intervenciones) el 12/02/2010 12:03:54
El que este dentro del IF o fuera depende de que la condicion se cumpla o no.

Prueba esto:

--------------------

msgbox lin & vbcrlf & "WV63|WW60|WW61|WW68|GT00"

If lin = "WV63|WW60|WW61|WW68|GT00" Then

msgbox "Se cumple la condicion"

Line Input #1, strs
Line Input #1, strs

strdato() = Split(strs, "|")

' si lo pongo aqui no me coge el valor para el resto de trama del programa

lote = strdato(UBound(strdato))

msgbox "A: " & lote

End If

msgbox "A: " & lote

---------------------------

Te explico los MSGBOX

1º.- Muestra el valor de lin y lo compa con el texto ( en dos lineas )
2º.- Se muestra si la condición del IF es verdad.
3º.- Muestra el valor de la variable lote
4º.- Muestra el valor de la variable lote que tiene que ser igual a laq anterior.

Si ves los mensajes 2 y 3 el valor de lote es el mismo antes y despues del ENDIF.

No es que el valor cambie fuera del IF, es que no se debe cumplir la condición.

Tambien puedes ejecutar el proceso paso a paso y ver que hace y que valor tiene las variables en cara paso y donde cambia.

Saludos.
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:duda funcion if

Publicado por nfalcon (13 intervenciones) el 15/02/2010 13:05:52
He hecho lo que me dijiste y no se cumple la segunda condicion, es decir si se cumple el WV63, pero no el if del GT00, te dejo el tramo de codigo, a ver si ves donde esta el error, el fichero que cargo es: !WV63|WW60|WW61|WW68|GT00|LX02
1|3|0|928

el valor que necesito que sea lote es el 928 de la segunda linea del fichero.

Este es el tramo de código:

If Index = 0 Then
ruta = "I:\BIZEBA\BCT\BCF\Output\key01.txt"
ruta2 = "I:\BIZEBA\BCT\BCF\Output\suma101.txt"
ruta3 = "I:\BIZEBA\BCT\BCF\Output\record01.txt"
rutaaux = "I:\BIZEBA\BCT\BCF\Temp\record01.txt"
ElseIf Index = 1 Then
ruta = "I:\BIZEBA\BCT\BCF\Output\key02.txt"
ruta2 = "I:\BIZEBA\BCT\BCF\Output\suma102.txt"
ruta3 = "I:\BIZEBA\BCT\BCF\Output\record02.txt"
rutaaux = "I:\BIZEBA\BCT\BCF\Temp\record02.txt"
ElseIf Index = 2 Then
ruta = "I:\BIZEBA\BCT\BCF\Output\key03.txt"
ruta2 = "I:\BIZEBA\BCT\BCF\Output\suma103.txt"
ruta3 = "I:\BIZEBA\BCT\BCF\Output\record03.txt"
rutaaux = "I:\BIZEBA\BCT\BCF\Temp\record03.txt"
End If



MsgBox lin & vbCrLf & "WV63|WW60|WW61|WW68|GT00"

If lin = "WV63" Then

MsgBox "Se cumple la condicion"

datos_recibidos = Mid(linea, 22, 4)

If datos_recibidos = "GT00" Then

MsgBox "Se cumple la condicion"

Line Input #1, strs
Line Input #1, strs

strdato() = Split(strs, "|")

lote = strdato(UBound(strdato))

MsgBox "A: " & lote

End If
End If

MsgBox "A: " & lote

Gracias
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