Access - Saber quien digitó un registro

 
Vista:

Saber quien digitó un registro

Publicado por Daniela Briñez (5 intervenciones) el 01/06/2016 23:51:41
Buenas tardes

En una base de datos, requiero saber quien digitó un registro.

Se que hay varios ejemplos en la red, pero no logro encontrar uno que se pueda adaptar, agradezco su colaboración.

Tengo un ejemplo de que me causa muchas interrupciones y me funciona por ratos.

Gracias por la colaboración.

Si se requiere puedo adjuntar el archivo, pero la verdad me gustaría un ejemplo nuevo, este me ha causado muchos líos
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

Saber quien digitó un registro

Publicado por Enrique Heliodoro (1664 intervenciones) el 02/06/2016 00:46:19
Si has verificado varios y no son adecuados a tus intereses, si el que utilizas no es de tu agrado ... ¿no seria ético que indicaras cuales son para descartarlos? ...
Si tu tiempo es valioso el de los demás será igual de valioso o incluso de un valor superior ¿Por qué se ha de desperdiciar?
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

Saber quien digitó un registro

Publicado por Daniela Briñez (5 intervenciones) el 02/06/2016 18:50:18
Hola, buen día.

Gracias, por la observación, en realidad la culpa es toda mía ya que en medio de mi angustia no medí el alcance de mis palabras.

En verdad ofrezco disculpas.

La cuestión es que uso un código que puede estar mal diseñado a continuación lo coloco y explico como y donde lo uso.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Public Numero_user As Integer
Public bd As Database
Public Rst As Recordset
 
Public Sub cargueusuario()
Dim I As Integer
On Error Resume Next
Set bd = OpenDatabase(App.Path & "\REDSERFARMA.ACCDB")
 
  Debug.Print Err.Number
 
  Set Rst = bd.OpenRecordset("T_USUARIOS")
 
  Debug.Print Err.Number
 
 
  Rst.MoveFirst
 
  For I = 1 To Rst.RecordCount
 
      Rst.Edit
 
      Nombreusuario(Rst.Fields(0)) = Rst.Fields(1)
      Rst.MoveNext
 
   Next I
 
  Rst.Close
  Set Rst = Nothing
  bd.Close
  Set bd = Nothing
 
End Sub


Lo uso de la siguiente manera:


La variable global "Numero_user", la coloco en un formulario con el campo donde voy a almacenar el usuario y en el evento al perder el enfoque de un acampo obligario " Me.Usuarioactivo = Numero_user "


Agradezco toda ayuda posible para mejorar este proceso que la verdad me tiene desesperada y mi nivel no alcanza para la corrección de este código.


Gracias a todos
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
sin imagen de perfil

Saber quien digitó un registro

Publicado por Enrique Heliodoro (1664 intervenciones) el 02/06/2016 19:33:11
No es como lo yo lo gestionaría ....

Se supone que se desea 'conservar' el referente al operario que introdujo/manipulo el registro, lo optimo seria que se guardase como 'un dato mas' del propio registro y dado que es el registro activo y los cambios se han de guardar (si no se manipula no hay nada que guardar) lo mas sencillo es en el evento de guardado poner o modificar ese dato con el correspondiente al usuario activo (se supone que ese dato se conoce, pues 'todo el conjunto' implica SEGURIDAD y la seguridad exige conocer al usuario para gestionar sus permisos).

Si lo que se desea es una tabla histórica de movimientos/manipulaciones (se la suele conocer como 'bitácora') una SQL de inserción que añadiese un nuevo registro (con datos tales como: Fecha/hora, usuario, tabla, variaciones ....) seria el medio ideal, se puede automatizar (para un uso genérico) creando una subfuncion o función a la que se la llamaría (desde cualquier lugar) y a la que se le adjuntarían los datos reales.

Ese código contiene parte curiosas, por ejemplo:

Se utiliza un bucle para recorrer todos sus registros (un simple DO ... LOOP hace lo mismo y necesita menos recursos) y asigna (o eso parece) el mismo dato a todos ellos .... (a continuación lo indicado)

For I = 1 To Rst.RecordCount
Rst.Edit
Nombreusuario(Rst.Fields(0)) = Rst.Fields(1)
Rst.MoveNext
Next I


Visto 'desde afuera' parece carente de sentido.

Comentas que se utilizan un par de variables, pero no se reflejan en el código expuesto ..... (que tampoco tengo claro que es lo que se pretende hacer con el)

Por cierto, las variables que se declaran en un formulario solo 'existen' cuando el formulario esta abierto (definir una variable como publica solo afecta al ámbito, no a su 'vida útil')
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

Saber quien digitó un registro

Publicado por Daniela Briñez (6 intervenciones) el 06/06/2016 04:34:39
Bien, ahora tengo esto como variable global he investigado un poco el asunto, he cambiado algunas cosas, pero aún no funciona, por favor una manito, tengo lo siguiente:

Public Function Numero_user() As String
Dim Usuario_Logeado As String

Usuario_Logeado = DBSeleccionarUsuario.Column(0)

Numero_user = Usuario_Logeado

End Function

Tabla "T_USUARIOS", campos Id, autonumérico, Usuario, nombre del usuario que se logea, "Password", contraseña que lo habilita para acceder a la BD


DBSeleccionarUsuario, es el nombre del combo donde selecciono el usuario que va a ingresar a la BD "REDSERFARMA"

La sintaxis del combo "DBSeleccionarUsuario" es: SELECT T_USUARIOS.Usuario, T_USUARIOS.[Id] FROM T_USUARIOS ORDER BY T_USUARIOS.Usuario;


Coloco esto Al Perder el Foco en un control, para que me muestre en el campo el valor del Usuario Activo Logeado

Private Sub Id_Tabla_LostFocus()
Me.UsuarioLog.Value = Numero_user
End Sub


Me genera un error 424, se requiere un objeto

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
sin imagen de perfil

Saber quien digitó un registro

Publicado por Enrique Heliodoro (1664 intervenciones) el 06/06/2016 09:42:21
No lo entiendo ....

Si El usuario (digamos que PEPE con el ID 7777) se logueó para entrar en la aplicación ¿porqué no se guardo en alguna parte ese ID?

Seria tan sencillo como:
Me.Numero_user = (ese dato guardado antes, si: al inicio, cuando se le permitió entrar)
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