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

duda funcion if

Estas en el tema de duda funcion if en el foro de Visual Basic clásico en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/02/2010, 04:16
 
Fecha de Ingreso: noviembre-2007
Mensajes: 8
Antigüedad: 16 años, 5 meses
Puntos: 0
duda funcion if

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.
  #2 (permalink)  
Antiguo 12/02/2010, 05:56
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: duda funcion if

Hola:

Supongo que sabes que las asignaciones de valores o instrucciones que tienes entre el If y el Then, SOLO se ejecutan si se cumple la condicion.

Código vb:
Ver original
  1. If lin = "WV63|WW60|WW61|WW68|GT00" Then
  2.  
  3. Line Input #1, strs
  4. Line Input #1, strs
  5.  
  6. strdato() = Split(strs, "|")
  7.  
  8. lote = strdato(UBound(strdato)) ' si lo pongo aqui no me coge el valor para el resto de trama del programa
  9.  
  10. End If

Por lo tanto imagino que la condicion de que lin sea igual a "WV63|WW60|WW61|WW68|GT00" no se cumple por lo que no te devuelve el dato.

Hay otras maneras, pero si añades después del If y antes del Line Input la sentencia

MsgBox "Estoy dentro del IF"

sabrás si se cumple o no la condición.

Por otra parte si explicas lo que pretendes hacer, podremos decirte donde te estas equivocando.

Saludos
  #3 (permalink)  
Antiguo 17/02/2010, 02:47
 
Fecha de Ingreso: noviembre-2007
Mensajes: 8
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: duda funcion if

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
  #4 (permalink)  
Antiguo 17/02/2010, 07:07
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: duda funcion if

Hola:

Puedes indicar ¿ Que significa esto ? y de donde procede el dato, porque no termino de cogerle el sentido, si esto es una linea leida, debes comparar cada valor.

!WV63|WW60|WW61|WW68|GT00|LX02

Saludos
  #5 (permalink)  
Antiguo 18/02/2010, 02:40
 
Fecha de Ingreso: noviembre-2007
Mensajes: 8
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: duda funcion if

!WV63|WW60|WW61|WW68|GT00|LX02

Hola esto es el codigo que devuelve una etiquetadora, realmente el valor que necesito es el de 928 de la segunda linea del fichero, lo que con la primera linea se cuando me entra ese fichero, porque hay otros fichero parecidos que cargo en otras partes del programa, entonces lo que quiero es que cuando llegue la primera linea del fichero coja el valor de la segunda linea. Si la primera linea es diferente a esta ya coje el dato necesario otra parte del programa. Puede que tenga que el IF lo tenga que hacer con la primera linea completa?? es decir

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

y despues el resto.

gracias
  #6 (permalink)  
Antiguo 18/02/2010, 05:30
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: duda funcion if

Hola, por lo que yo creo entender el problema está en que tu comparas si el valor de Lin coincide y por lo que parece este va cambiando aunque entiendo que SIEMPRE va a contener una secuencia determinada.

Deberías hacer la funcion comparando si el dato leido contiene esta secuencia o sea algo mas o menos así:

If Instr(Lin, "WV63|WW60|WW61") Then

End If

Si no es esto es que no acabo de coger la idea.

Saludos
  #7 (permalink)  
Antiguo 19/02/2010, 04:42
 
Fecha de Ingreso: noviembre-2007
Mensajes: 8
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: duda funcion if

Hola, ya lo he solucionado, no era lo que me dijiste, pero me encendiste las luces, realmente tenia que poner el tramo de codigo en otra parte del programa.

Gracias

Etiquetas: funcion
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 07:22.