Variables estaticas
Hola que tal!
Estoy desarrollando un programa en el que el formulario principal pide una clave de acceso para poder entrar, y donde cada empleado tiene la suya propia. Utilizo este codigo para asignar la primera vez a cada usuario su clave y de aqui en adelante:
Private Sub Command1_Click()
Static alex, cec, dani, lola, fran, valen
Static nalex, ncec, ndani, nlola, nfran, nvalen As Integer
Select Case DataCombo1.Text
Case "Alejandro"
If nalex <> 1 Then
MsgBox "Ususario Alejandro introduzca su password para acceder al programa de Gestion IDC", vbInformation
alex = Text2.Text
nalex = 1
ElseIf Text2.Text = alex Then
pass.Hide
principal.Show
End If
Case "Cecilio"
If ncec <> 1 Then
MsgBox "Usuario Cecilio introduzca su password para acceder al programa de Gestion IDC", vbInformation
cec = Text2.Text
ncec = 1
ElseIf Text2.Text = cec Then
pass.Hide
principal.Show
End If
Case "Dani"
If ndani <> 1 Then
MsgBox "Usuario Dani introduzca su password para acceder al programa de Gestion IDC", vbInformation
dani = Text2.Text
ndani = 1
ElseIf Text2.Text = dani Then
pass.Hide
principal.Show
End If
Case "Franche"
If nfran <> 1 Then
MsgBox "Ususario Franche introduzca su password para acceder al programa de Gestion IDC", vbInformation
fran = Text2.Text
nfran = 1
ElseIf Text2.Text = fran Then
pass.Hide
principal.Show
End If
Case "Lola"
If nlola <> 1 Then
MsgBox "Usuario Lola introduzca su password para acceder al programa de Gestion IDC", vbInformation
lola = Text2.Text
nlola = 1
ElseIf Text2.Text = lola Then
pass.Hide
principal.Show
End If
Case "Valentin"
If nvalen <> 1 Then
MsgBox "Ususario Valentin introduzca su password para acceder al programa de Gestion IDC", vbInformation
valen = Text2.Text
nvalen = 1
ElseIf Text2.Text = valen Then
pass.Hide
principal.Show
End If
End Select
end sub
Mi intencion era declarar las variables estaticas mediante static para que guardara sus valores y se mantuvieran para siempre pero no lo hace asi y cada vez que ejecuto el programa me pide su contraseña. Estan mal declaradas? como puedo hacer para que guarden su valor las variables para siempre?
Gracias de antemano
Estoy desarrollando un programa en el que el formulario principal pide una clave de acceso para poder entrar, y donde cada empleado tiene la suya propia. Utilizo este codigo para asignar la primera vez a cada usuario su clave y de aqui en adelante:
Private Sub Command1_Click()
Static alex, cec, dani, lola, fran, valen
Static nalex, ncec, ndani, nlola, nfran, nvalen As Integer
Select Case DataCombo1.Text
Case "Alejandro"
If nalex <> 1 Then
MsgBox "Ususario Alejandro introduzca su password para acceder al programa de Gestion IDC", vbInformation
alex = Text2.Text
nalex = 1
ElseIf Text2.Text = alex Then
pass.Hide
principal.Show
End If
Case "Cecilio"
If ncec <> 1 Then
MsgBox "Usuario Cecilio introduzca su password para acceder al programa de Gestion IDC", vbInformation
cec = Text2.Text
ncec = 1
ElseIf Text2.Text = cec Then
pass.Hide
principal.Show
End If
Case "Dani"
If ndani <> 1 Then
MsgBox "Usuario Dani introduzca su password para acceder al programa de Gestion IDC", vbInformation
dani = Text2.Text
ndani = 1
ElseIf Text2.Text = dani Then
pass.Hide
principal.Show
End If
Case "Franche"
If nfran <> 1 Then
MsgBox "Ususario Franche introduzca su password para acceder al programa de Gestion IDC", vbInformation
fran = Text2.Text
nfran = 1
ElseIf Text2.Text = fran Then
pass.Hide
principal.Show
End If
Case "Lola"
If nlola <> 1 Then
MsgBox "Usuario Lola introduzca su password para acceder al programa de Gestion IDC", vbInformation
lola = Text2.Text
nlola = 1
ElseIf Text2.Text = lola Then
pass.Hide
principal.Show
End If
Case "Valentin"
If nvalen <> 1 Then
MsgBox "Ususario Valentin introduzca su password para acceder al programa de Gestion IDC", vbInformation
valen = Text2.Text
nvalen = 1
ElseIf Text2.Text = valen Then
pass.Hide
principal.Show
End If
End Select
end sub
Mi intencion era declarar las variables estaticas mediante static para que guardara sus valores y se mantuvieran para siempre pero no lo hace asi y cada vez que ejecuto el programa me pide su contraseña. Estan mal declaradas? como puedo hacer para que guarden su valor las variables para siempre?
Gracias de antemano
Entiendes mal el concepto de varibles estaticas, el cual significa que cada vez que tu programa llama a ese procedimiento o sub las variables del mismo se conservan hasta la proxima llamada, pero al finalizar el programa todo se borra.
Si el programa es para ser utilizado en esa misma máquina siempre y no quieres guardar los passwords en un archivo algo que podrías hacer es guardarlos en el registro de Windows, pero te aseguro que esto no dará seguridad de que alguien los encuentre...
puedes hacer lo siguiente:
Private Sub Command1_Click()
Dim PassTxt As String ' Variable para el Password
PassTxt = GetSetting("MiPrograma", "Pass", DataCombo1.Text, "No Definido")
If PassTxt = "No Definido" Then
'MsgBox "Usuario " & DataCombo1.Text & " introduzca su password para acceder al programa de Gestion IDC", vbInformation
' Yo creo que la línea anterior esta de más, porque
' al usuario no le importa si esta definido o no
PassTxt = InputBox("Usuario " & DataCombo1.Text & ", Introduzca de nuevo su password, para confirmar")
If PassTxt <> "" Then
If PassTxt = Text2.Text Then
Call SaveSetting("MiPrograma", "Pass", DataCombo1.Text, Text2.Text)
Else
MsgBox "Usuario " & DataCombo1.Text & ", Ha introducido un password diferente, vuelva a intentarlo"
End If
Else
MsgBox "Usuario " & DataCombo1.Text & ", Password no válido"
End If
ElseIf Text2.Text = PassTxt Then
pass.Hide
principal.Show
Else
MsgBox "PassWord No Válido, Vuelva a intentarlo"
End If
End Sub
Si el programa es para ser utilizado en esa misma máquina siempre y no quieres guardar los passwords en un archivo algo que podrías hacer es guardarlos en el registro de Windows, pero te aseguro que esto no dará seguridad de que alguien los encuentre...
puedes hacer lo siguiente:
Private Sub Command1_Click()
Dim PassTxt As String ' Variable para el Password
PassTxt = GetSetting("MiPrograma", "Pass", DataCombo1.Text, "No Definido")
If PassTxt = "No Definido" Then
'MsgBox "Usuario " & DataCombo1.Text & " introduzca su password para acceder al programa de Gestion IDC", vbInformation
' Yo creo que la línea anterior esta de más, porque
' al usuario no le importa si esta definido o no
PassTxt = InputBox("Usuario " & DataCombo1.Text & ", Introduzca de nuevo su password, para confirmar")
If PassTxt <> "" Then
If PassTxt = Text2.Text Then
Call SaveSetting("MiPrograma", "Pass", DataCombo1.Text, Text2.Text)
Else
MsgBox "Usuario " & DataCombo1.Text & ", Ha introducido un password diferente, vuelva a intentarlo"
End If
Else
MsgBox "Usuario " & DataCombo1.Text & ", Password no válido"
End If
ElseIf Text2.Text = PassTxt Then
pass.Hide
principal.Show
Else
MsgBox "PassWord No Válido, Vuelva a intentarlo"
End If
End Sub
