[Ayuda] Función IF

Iniciado por Servia, 15 Diciembre 2007, 12:25 PM

0 Miembros y 1 Visitante están viendo este tema.

Servia

Hola, estoy intentando hacer que si en un archivo pone x y un usuario escribe x se abrá un form y que de lo contrario salga una pantallita diciendo error.

Private Sub Command1_Click()
If FSO.OpenTextFile("C:\programa\error\errorlog.txt").ReadAll <= Text1.Text = True Then
MsgBox "Error"
End
End If
Form2.Show
End Sub



Que hago mal?

Lambda

Cita de: Servia en 15 Diciembre 2007, 12:25 PM
Hola, estoy intentando hacer que si en un archivo pone x y un usuario escribe x se abrá un form y que de lo contrario salga una pantallita diciendo error.

Private Sub Command1_Click()
If FSO.OpenTextFile("C:\programa\error\errorlog.txt").ReadAll <= Text1.Text = True Then
MsgBox "Error"
End
End If
Form2.Show
End Sub



Que hago mal?

Código (vb) [Seleccionar]
Private Sub Command1_Click()
If FSO.OpenTextFile("C:\programa\error\errorlog.txt").ReadAll = Text1.Text Then
MsgBox "Error"
End
End If
Form2.Show
End Sub


prueba asi  ;D :xD

Spider-Net

#2
Pues principalmente estás abriendo el Form2 siempre, porque secuencialmente primero lees el archivo y luego abres el form, no bifurcas la opción, para eso tienes que usar un if alternativo.
Me equivoqué, porque vi que cierras el programa dentro de ese if.. pero bueno como te he puesto funciona xD

Yo haría algo así:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
Dim Pass As String
Dim Temp As String
    nFic = FreeFile
    Open "C:\a.txt" For Input As nFic
    Do Until EOF(nFic)
    Input #nFic, Temp
    Text1.Text = Text1.Text + Temp
    Pass = Text1.Text
  Loop
     Close nFic
     
    If Pass = "x" Then
        Form2.Show
    Else
        MsgBox "Error, vuelva a intentarlo", vbCritical
        End
    End If
End Sub


Metes un TextBox y ya está, funciona perfectamente  ;D

Saludos.

Servia

#3
Pero me explicas el código que si no no aprendo nada ?

Aparte me sigue dando error :S Al escribir en el textbox y presionar el botón sale el mensaje de error y puedo ver como se le añaden + carácteres a lo escrito [ÿþgg] :S

Aunque si quito el + temp , porque no se de que sirve , me funciona pero entonces veo lo de   If Pass = "x" Then , de que me sirve abrir el archivo si aquí pongo eso? :S aquí no tendría que poner la url del archivo y que lo lea?

Private Sub Command1_Click()
Dim Pass As String
Dim Temp As String
    nFic = FreeFile
    Open "C:\a.txt" For Input As nFic
    Do Until EOF(nFic)
    Input #nFic, Temp
    Text1.Text = Text1.Text + Temp
    Pass = Text1.Text
  Loop
     Close nFic

    If Pass = "x" Then
        Form2.Show
    Else
        MsgBox "Error, vuelva a intentarlo", vbCritical
        End
    End If
End Sub

Spider-Net

Buenas amigo, pues mira principalmente decirte que el código de Lambda es más simple y también funciona, pero de todas formas yo te explico si quieres el que yo puse:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
Dim Pass As String 'variable de tipo cadena que almacena el password
Dim Temp As String 'variable tipo cadena que va almacenando datos del fichero que se importa
    nFic = FreeFile 'liberamos el canal del fichero nFic
    Open "C:\a.txt" For Input As nFic 'Abrimos el archivo, AQUÍ ES DONDE PONES LA RUTA
    Do Until EOF(nFic) ' Esto es un bucle que lee el fichero hasta que llegue al final del fichero
    Input #nFic, Temp ' Importas  lo que va leyendo el fichero a la variable temp
    Text1.Text = Text1.Text + Temp ' por eso aqui hacemos text1.text = text1.text + temp (lo importado del fichero)
  Loop
     Close nFic
    Pass=Text1.Text ' Ahora lo que hemos importado del fichero lo almacenamos en la variable Pass
    If Pass = "x" Then ' Y ahora si el pass coincide con lo introducido por el usuario, en este caso "x"
        Form2.Show ' entonces mostramos el form2
    Else
        MsgBox "Error, vuelva a intentarlo", vbCritical 'sino tiramos error y cerramos el programa
        End
    End If
End Sub


Espero que más o menos lo entiendas, y si me equivoqué en cualquier cosa espero que alguien me corrija. Y de todas formas como ya te dije el código de Lambda es más simple y funciona perfectamente aunque este también funciona sólo que es más largo, bueno espero que te sea de ayuda al menos y aprendas algo nuevo ;)

Saludos.

Servia

El de lambda no funciona porque tmb lo probe yo antes, si fuencionase no habría psoteado pidiendo ayuda.

Pero y si el texto que quiero que mire si concide [en este caso x] se encuentra en otro fichero?

Spider-Net

Pues puedes cambiar la ruta, mira:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
Dim Pass, ruta As String
Dim Temp As String
ruta = "C:\LOKEKIERAS" ' AKI PONES LA RUTA DEL ARCHIVO QUE QUIERAS COMPROBAR
    nFic = FreeFile
    Open ruta For Input As nFic
    Do Until EOF(nFic)
    Input #nFic, Temp
    Text1.Text = Text1.Text + Temp
  Loop
     Close nFic
    Pass = Text1.Text
    If Pass = "x" Then ' ESTA X LA SUSTITUYES POR LO QUE QUIERAS QUE COMPRUEBE QUE PONE EN EL FICHERO
        Form2.Show
    Else
        MsgBox "Error, vuelva a intentarlo", vbCritical
        End
    End If
End Sub


Y ya está, así de simple.