Clarion - Ayuda con dos Codigo

 
Vista:
sin imagen de perfil

Ayuda con dos Codigo

Publicado por Jonathan Alexis (6 intervenciones) el 09/01/2014 00:43:33
Hola tengo dos problemas el primero es con un iniciar sesión. Me deja iniciar con el primer usuario y el segundo jamas me lo inicia, el código que implemente es algo así :

Set(USK:KEY_NombreUsuario,USK:KEY_NombreUsuario)
loop While(not access:USUARIOS.NEXT())
IF USK:NombreUsuario = UsuarioNombre and USK:Clave = UsuarioClabe
NumeroUsuario = USK:NroUsuario
clear(UsuarioNombre)
clear(UsuarioClabe)
Set(UNA:KEY_NroUsuario,UNA:KEY_NroUsuario)
LOOP WHILE(NOT ACCESS:USUARIOSNIVELACCESO.NEXT())
if UNA:NroUsuario = NumeroUsuario
SeRegistro=1
EliminarModificar=UNA:CrearModificarEliminarRegistro
Administrador=UNA:AdministrarUsuariosNivelAcceso
Privilegios=UNA:NivelDeAcceso
END
END
END
END

esto en el botón aceptar y en el ítem del menú tiene el siguiente código:

Clear(UsuarioNombre)
Clear(SeRegistro)
Clear(NumeroUsuario)
Clear(Privilegios)
Clear(UsuarioClabe)

AbrirUsuario !ventana iniciar sesión.
!las variables que no tienen prefijo son globales

Me funciona solo para el primer usuario pero en el segundo no me valida usuario y contraseña.


si alguien tiene una mejor opción?.

mi segundo problema es que quiero usar dos rutinas para la autorizaciones de agregar, modificar, eliminar, ETC.
IF Privilegios <>0
message('no tienes privilegios')
cycle !El cycle porque sino me sale el message pero luego continua como si nada.
end

Si lo coloco en cada botón funciona pero no es la idea.

Me da error por el Cycle cuando lo coloco en una rutina.

Si es posible desde una rutina saber que ventana esta viendo el usuario y el botón que llamo a la rutina.
Acepto todo tipo de criticas, soy nuevo en Clarion y estudio programación hace 6 meses.
Desde ya muchas 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
sin imagen de perfil

Ayuda con dos Codigo

Publicado por Marcelo Madelón (572 intervenciones) el 09/01/2014 10:45:22
Lo que veo es que no le das valor a UNA:NroUsuario antes del set segundo
También usaría el loop diferente

USK:NombreUsuario = UsuarioNombre
Set(USK:KEY_NombreUsuario,USK:KEY_NombreUsuario)
LOOP UNTIL Access:USUARIOS.Next() or USK:NombreUsuario <> UsuarioNombre
NumeroUsuario = USK:NroUsuario
clear(UsuarioNombre)
clear(UsuarioClabe)

UNA:NroUsuario = NumeroUsuario
Set(UNA:KEY_NroUsuario,UNA:KEY_NroUsuario)
LOOP UNTIL Access:USUARIOSNIVELACCESO.Next() or UNA:NroUsuario <> NumeroUsuario
SeRegistro = 1
EliminarModificar= UNA:CrearModificarEliminarRegistro
Administrador = UNA:AdministrarUsuariosNivelAcceso
Privilegios = UNA:NivelDeAcceso
END
END

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! lo que sigue es lo tuyo pero le agregué una línea antes del segundo set




Set(USK:KEY_NombreUsuario,USK:KEY_NombreUsuario)
loop While(not access:USUARIOS.NEXT())
IF USK:NombreUsuario = UsuarioNombre and USK:Clave = UsuarioClabe
NumeroUsuario = USK:NroUsuario
clear(UsuarioNombre)
clear(UsuarioClabe)

! Prueba agregando la línea siguiente
UNA:NroUsuario = NumeroUsuario


Set(UNA:KEY_NroUsuario,UNA:KEY_NroUsuario)
LOOP WHILE(NOT ACCESS:USUARIOSNIVELACCESO.NEXT())
if UNA:NroUsuario = NumeroUsuario
SeRegistro=1
EliminarModificar=UNA:CrearModificarEliminarRegistro
Administrador=UNA:AdministrarUsuariosNivelAcceso
Privilegios=UNA:NivelDeAcceso
END
END
END
END
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