Access - Multiusuario en un formulario

   
Vista:

Multiusuario en un formulario

Publicado por Tomas (7 intervenciones) el 07/10/2014 21:13:03
Buenos Dias

Estoy pidiendo ayuda en algo que no se como resolver
Estoy creando una base de datos con Access 2013 posteriormente lo estaba haciendo con Access2007 en fin.

Mi base de datos esta Dividida para que varios usuarios la puedan usar simultaneamente.
El unico problema es que cuando dos usuarios entran al mismo formulario
Por ejemplo

Untitled

Quisiera saber si existe la manera de que pueda generarme un registro para cada usuario que ingrese a dicho formulario, que estos dos por pura casualidad hayan entrado al mismo tiempo en distintas maquinas al mismo formulario.

Quisiera que hiciera esto.
Computadora 1 Formulario->Registro-> Campo_No.Reg = 1
Computadora 2 Formulario->Registro-> Campo_No.Reg = 2

Se me ocurre una manera que pudiera ser por medio de un login que al momento de que entre el usuario se genere el registro... pero el problema seria que si este usuario no hace ningun registro.. se quedaria con el numero y quedaria en blanco...

Aqui tengo el codigo con lo que hice el login.
Untitled1

Este es el codigo del boton
Dim NumIntentos As Integer

Private Sub CmdAcceder_Click()
Dim auxContrasena As String

'Comprobamos que hay datos en las cajas de texto
If Nz(Me.TxtUsuario.Value, "") = "" Then
MsgBox "Seleccione un nombre de usuario de la lista para acceder", vbInformation, "ATENCION"
Me.TxtUsuario.SetFocus
ElseIf Nz(Me.TxtContrasena.Value, "") = "" Then
MsgBox "Introduzca la contrasena del usuario seleccionado", vbInformation, "ATENCION"
Me.TxtContrasena.SetFocus
Else
If Nz(DLookup("Contrasena", "Empleados", "IdEmpleado=" & Me![TxtUsuario]), "") <> "" Then
auxContrasena = DLookup("Contrasena", "Empleados", "IdEmpleado=" & Me![TxtUsuario])
End If

If auxContrasena <> Me.TxtContrasena.Value Then
If NumIntentos > 1 Then
NumIntentos = NumIntentos - 1
MsgBox "La contraseña introducida es incorrecta" & vbCrLf & _
"Le quedan " & NumIntentos & " intentos" & vbCrLf & vbCrLf & _
"Por favor, introduzca otra", vbExclamation, "INTRODUCCIÓN INCORRECTA"
Me.TxtContrasena.Value = ""
Me.TxtContrasena.SetFocus
Else
MsgBox "Ha superado el numero de intentos", vbCritical, "ADIOS..."
DoCmd.Close acForm, Me.Name 'y cerramos el de acceso
End If

Else
If DLookup("IdTipoAcceso", "Empleados", "IdEmpleado=" & Me![TxtUsuario]) = 1 Then
'**entrada como administrador

MsgBox "Ha entrado el administrador", vbInformation, "BIENVENIDO ADMINISTRADOR"
'Call MuestraTodasTablas
DoCmd.OpenForm "frmmenu"
DoCmd.Close acForm, Me.Name
Else
MsgBox "Ha entrado un usuario", vbInformation, "BIENVENIDO"
'Call OcultaTodasTablas
DoCmd.OpenForm "FormRequisicion"
DoCmd.Close acForm, Me.Name
End If


End If
End If
End Sub


Necesito ayuda no se como hacerlo =//
De antemano
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

Multiusuario en un formulario

Publicado por Jefferson Jimenez (381 intervenciones) el 08/10/2014 04:20:07
Hola Tomas

Si las tablas están divididas y vinculadas correctamente, esto nunca deberia pasar, pues VBA Access genera un autonumerico inmediatamente al activar el registro del formulario, aparte que por ser un registro clave principal e indexado sin duplicados no lo permite. Cosa que para que si sucediera, seria muy remota 1 en 10 millones que ambos usuarios a la misma milésima de segundo activaran el registro, e Incluso dudo que suceda.

Si los formularios estan desconectados, seria igual caso, pues al cargarlos a la tabla, igual los ID deberian ser unicos e irrepetibles y VBA no permite bajo ninguna circunstancias el duplicado.

Revisa si esta condición la tienes en la tabla y de no ser asi, activa sus propiedades. (Requisicion Numero)
Por cierto nunca quedaria en blanco, ya que la condicion lo elimina

Saludos
Desde Venezuela
Jefferson Jimenez
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

Multiusuario en un formulario

Publicado por deneg_nhj (349 intervenciones) el 08/10/2014 18:53:59
Estimado Tomas.

Lo que yo hago para evitar este problema es lo siguiente:

1. Utilizo una tabla local para generar el movimiento, por ejemplo una tabla para compra de productos.

2. En el evento al guardar "Obtengo el max del ID del movimiento" desde la tabla que contiene los datos finales, que puede ser el mismo que otro usuario en ese momento también esta generando una compra. por el momento eso no me pega porque estoy trabajando en una tabla local.

******* Aquí está el truco **********
3. Tengo un botón "Aplicar Movto", que lo que hace es guardar mis datos de la tabla local a la BD final.
--- Lo que hago es volver a obtener el max del ID del movimiento, desde la tabla que contiene los datos finales, así si alguien guardó un movimiento antes lo detecto.
--- Si hay diferencia entre el numero que tengo en la tabla local y el que me regresa en este punto, utilizo el más alto para insertar los datos a la tabla final.
--- Si hay diferencia en los números actualizo en mi tabla local dicho numero.
-- Generó el formato impreso con el número correcto.

Espero que me haya explicado.

Saludos!

deneg_nhj
www.sgh.com.mx
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

Multiusuario en un formulario

Publicado por Tomas (7 intervenciones) el 14/10/2014 16:22:11
Buenos dias

Disculpe por no haber contestado antes, gracias por sus respuestas

Con respecto ala respuesta de Jefferson, aqui pongo como tengo relacionadas mis tablas junto con la imagen de mis tablas vinculadas.

Untitled

Untitled2

Con respecto a la respuesta de deneg
Dejame lo aplico y veo los resultados

Muchas 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

Multiusuario en un formulario

Publicado por Jorgefl (15 intervenciones) el 07/11/2014 08:57:25
Tomas, lo que creo que tu quieres (espero acertar) es:
Ve a Archivo - Opciones - configuración de cliente - bloqueo predeterminado de registros.
Ahí hay 3 opciones, elige la que más te convenga.

Un saludo, me mencionas si te funciono.
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