Foros del Web » Soporte técnico » Ofimática »

Usuarios conectados al mismo tiempo contra una BD Access

Estas en el tema de Usuarios conectados al mismo tiempo contra una BD Access en el foro de Ofimática en Foros del Web. Hola amigos !! tengo un par o tres de consultas. Una de ellas es saber cuantos usuarios se pueden conectar al mismo tiempo en una ...
  #1 (permalink)  
Antiguo 03/02/2009, 03:29
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
Usuarios conectados al mismo tiempo contra una BD Access

Hola amigos !!
tengo un par o tres de consultas.
Una de ellas es saber cuantos usuarios se pueden conectar al mismo tiempo en una base de datos acces.
La otra es que estoy diseñando una BD de incidencias y tengo dos campos que no se como ponerlos pq uno depende del otro. Me explico
Hay una entidad llamada IMPACTO que solo tiene 3 opciones
1.- User
2.- Site
3.- Enterprise

Y luego tenemos otra "Entidad" (por así llamarla), llamada PRIORIDAD, que depende de la entidad anterior, IMPACTO, es decir
Para USER, los valores de prioridad son P3,P4 y P5.
Para SITE, P2, P3 y P4
Para ENTERPRISE, P1, P2 y P3

Como puedo hacerlo?

Gracias desde ya
  #2 (permalink)  
Antiguo 03/02/2009, 03:41
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

Segun las especificaciones de access que puedes encontrar en la ayuda o aqui:

http://office.microsoft.com/es-es/ac...868083082.aspx

Los usuarios que pueden acceder a la vaez son 255. Segun la experiencia y la paractica, depende de muchos factores. El principal (para mi) es la red, depende de la velocidad, del tipo, etc etc, de la red. Tambien hay gran parte de influencia de la buena estructuracion de la bd, tablas, reñlaciones etc etc, y la pericia del programador (ai es que uas un interfaz de access).

En cuanto a tu segunda pregunta, yo tendria una tabla auxiliar con esos valores, y un campo si/no indicando si ese valor se puede usar para la tabla anterior, campos que te serviran para filtrar cuando quieras usarlos, algo asi:

TablaPrioridad

Prioridad---------User------Site-----Enterprise
P1-----------------false------false------true
P2-----------------false------true-------true
P3-----------------true-------true-------true
P4-----------------true-------true-------false
P5-----------------true-------false------false

un saludo
  #3 (permalink)  
Antiguo 03/02/2009, 03:49
 
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid, España
Mensajes: 149
Antigüedad: 16 años
Puntos: 5
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

Access es una "base de datos" de escritorio; no se maneja demasiado bien con accesos multiusuario y, sobre todo al escribir, te va a dar muchos problemas. A mí ya me tocó trabajar en ese entorno y, si puedes utilizar SQL Server u otra base de datos "de verdad", te recomendaría el cambio. Mi experiencia fue la siguiente:

1) Varias lecturas simultáneas dan un rendimiento aceptable y no dan demasiados problemas, aunque no dejaría que accediesen más de diez usuarios a la vez

2) La escritura simultánea no te va a generar "errores fatales" en sí si accedes a través de, por ejemplo, ADO.NET, pero el modo en que Access gestiona la concurrencia es más que sospechoso, en gran parte porque no está pensado como una base de datos multiusuario, sino como una fuente de datos para aplicaciones de escritorio monousuario que gestionan una cantidad pequeña de datos.

Todo esto, amén de que resulte más que farragoso controlar el acceso de usuarios a tablas, etc..

El tema de la dependencia de valores entre campos yo lo controlaría desde la aplicación que vaya a utilizar Access en lugar a desde Access en sí, aunque si quieres hacerlo desde ahí, en el propio diseño del campo pudiera ser que lo lograses a través de la propiedad "Regla de validación", aunque no te lo puedo asegurar al 100%
  #4 (permalink)  
Antiguo 03/02/2009, 05:03
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

Gracias por la velocidad en vuestras respuestas.
La verdad es que solo van a acceder a esa BD un maximo de 10 usuarios.
Espero no tener problemas para ello, de todas formas tendré en cuenta vuestro consejo.

Taribo007, respecto a tu aclaración de la tabla de prioridades no la he entendido o yo no me he explicado bien?

Son dos datos distintos que se tienen que ver en la incidencia, pero una depende del valor de otra.


Gracias!!!
  #5 (permalink)  
Antiguo 03/02/2009, 05:36
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

Pues igual no te he entendido. Yo entiendo que, si en un campo eliges USER, en el campo priridad solo puedes elegir P3,P4 y P5. Es asi??

un saludo
  #6 (permalink)  
Antiguo 03/02/2009, 05:54
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

Correcto, afirmativo, si
  #7 (permalink)  
Antiguo 03/02/2009, 07:54
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

Y esto, la introduccion de los datos, lo haces a traves de un form??

un saludo
  #8 (permalink)  
Antiguo 03/02/2009, 08:06
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

A ver si con este ejemplo:

Ejemplo

Un saludo
  #9 (permalink)  
Antiguo 03/02/2009, 08:28
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

No coge bien los valores para enterprise, pero esa es la idea, asi que ya lo miraré

Muchas gracias!!!!!!

Como harías para hacer un login?
Se que tengo que comprobar que los campos sean distintos de "" y luego lanzar la consulta pero no se como hacerlo...



Muchas GRACIASSSSS!!!!!
  #10 (permalink)  
Antiguo 03/02/2009, 08:38
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

NO te he entendido, pero para comprobar si en un cuadro de texto llamado TxtCuadro, se ha introducido algo, podrias hacer:

if (nz(me.TxtCuadro,"")="" then
msgbox "Nada introducido"
else
msgbox "Algo Introducido"
end if

Un saludo

Última edición por Taribo007; 03/02/2009 a las 08:46
  #11 (permalink)  
Antiguo 03/02/2009, 08:43
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

sisi, hasta aqui bien, pero ahora tengo que montar la consulta que también se hacerlo,
Código:
If ((Me.username.Value <> "") And (Me.password.Value <> "")) Then
    sentencia = "SELECT * FROM USUARIOS WHERE username LIKE '" & Me.username.Value & "' AND password LIKE '" & Me.password.Value & "'"

    
Else
    a = MsgBox("Debes identificarte", vbCritical, titleMsgbox)
End If

End Sub
pero cómo lanzo la sentencia a mi propia Base de datos acces?


Gracias!!
  #12 (permalink)  
Antiguo 03/02/2009, 08:51
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

Es mejor que uses la funcion NZ, ya que asi controlaras tanto los campos vacios como los null, que no es lo mismo:

If nz(Me.username.Value,"" <> "" And nz(Me.password.Value,"") <> "" Then

Luego, lo de lanzar la sentencia, depende para que lo quieras, entiendo que lo que quieres es comprobar si ese nombre de usuario y esa contraseña se encuentran en tu bd, es asi?? Podrias abrir un recordset sobre la tabla con esos parametros, pero access te proporciona las funciones agregadas de dominio, que lo hacen por ti, en este caso podrias usar Dcount:

If nz(Me.username.Value,"" <> "" And nz(Me.password.Value,"") <> "" Then
if dcount("*","USUARIOS","username='" & Me.username & "' AND password='" & Me.password & "'")>0 then
msgbox "Usuario y contraseña correcto"
else
msgbox "INCORRECTO"
end if
end if


Has visto el ejemplo que te puse en el otro hilo??

un saludo
  #13 (permalink)  
Antiguo 03/02/2009, 09:02
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

sisí, lo vi, me servirá para lo siguiente que quiero hacer
Lo que quiero hacer es consultar si ese usuario existe y si existe ponerle como conectado (es uno de los campos que tiene la tabla usuarios) y ponerle la hora de conexion en otro campo
como lo hago?
  #14 (permalink)  
Antiguo 03/02/2009, 09:12
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

Hombre, si ya quieres hacer mas cosas sobre la tabla, entonces si puedes abrir un recordset, prueba esto:

Dim rst As DAO.Recordset

If Nz(Me.UserName.Value, "") <> "" And Nz(Me.Password.Value, "") <> "" Then
Set rst = CurrentDb.OpenRecordset("Select username,password,Conectado,HoraConexion from USUARIOS where username='" & Me.UserName & "' AND password='" & Me.Password & "'")
If rst.RecordCount = 0 Then
MsgBox "INCORRECTO"
Else
MsgBox "Usuario y contraseña correcto"
rst!Conectado = True
rst!HoraConexion = Now()
End If
rst.Close
Set rst = Nothing
End If

Ha tener en cuenta: He supuesto que el campo conexion es de tipo si/no (boolean)
He supuestp que el campo de la hora de conexion se llama HoraConexion, de tipo fecha hora. La funcion now() devuleve la fecha y hota del sistema. Si usas Time() devuleve solo la hora, y si utilizas date() solo la fecha, segun loq ue necesites

Un saludo
  #15 (permalink)  
Antiguo 03/02/2009, 09:43
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

Joder, menudo monstruo!!! eres bueno ehhhh

Mil gracias de nuevo


Estamos en contacto
  #16 (permalink)  
Antiguo 03/02/2009, 11:25
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

Cita:
Iniciado por Laufwerk Ver Mensaje
Joder, menudo monstruo!!! eres bueno ehhhh

Mil gracias de nuevo


Estamos en contacto
Si vieras lo que hay por ahi, no dirias eso.

Me alegro de haberte ayudado
  #17 (permalink)  
Antiguo 03/02/2009, 17:19
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

Por cierto, tengo otra duda. Si no te importa....
En la linea de codigo
Código:
rst!Conectado = true
me salta un error diciendo:
Se ha producido el error '3020' en tiempo de ejecución:
Update o CancelUpdate sin AddNew o Edit



Acabo de ver que cuando quiero llamar a una función mia que tengo declarada en el modulo, me sale en rojo y me dice que la tengo que igualar a algun valor, cuando dicha funcion no devuelve nada, sabes pq puede ser?


Merci!!!

Última edición por Laufwerk; 04/02/2009 a las 02:26
  #18 (permalink)  
Antiguo 04/02/2009, 02:23
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

Si no devuelve nada, lo normal es que hicieras un procedimiento en lugar de una funcion, pero tampoco pasa nada. Prueba usando call:

call NombreDeLaFuncion(parametros)

Un saludo
  #19 (permalink)  
Antiguo 04/02/2009, 04:47
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

y respecto a esto?
Código:
rst!Conectado = true
me salta un error diciendo:
Se ha producido el error '3020' en tiempo de ejecución:
Update o CancelUpdate sin AddNew o Edit
  #20 (permalink)  
Antiguo 04/02/2009, 04:55
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

Pues resulta que te lo puse rapido, y faltan un par de intrucciones:

If Nz(Me.UserName.Value, "") <> "" And Nz(Me.Password.Value, "") <> "" Then
Set rst = CurrentDb.OpenRecordset("Select username,password,Conectado,HoraConexion from USUARIOS where username='" & Me.UserName & "' AND password='" & Me.Password & "'")
If rst.RecordCount = 0 Then
MsgBox "INCORRECTO"
Else
MsgBox "Usuario y contraseña correcto"
rst.edit
rst!Conectado = True
rst!HoraConexion = Now()
rst.update
End If
rst.Close
Set rst = Nothing
End If

un saludo
  #21 (permalink)  
Antiguo 04/02/2009, 05:08
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

ok, sabes porqué me añade valores a la tabla de usuarios?
como si fuera un historial...

Ahora tengo un monton de usuarios con el mismo username y password

Gracias!!!


PD: Se puede resetear el ID autonumerico de la tabla?
  #22 (permalink)  
Antiguo 04/02/2009, 06:37
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

A ver, por partes. No sera que el formulario tiene como origen de registro la tabla USUARIOS??

Si es asi, habra que hacer unos cambios (a menos que la uses par algo).

para reiniciar un autonumerico, tienes que borrar todos los registros de la tabla y compactar y reparar la bd

un saludo
  #23 (permalink)  
Antiguo 04/02/2009, 07:33
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

Asi es, lo tengo como USUARIOS.
Ya lo he quitado, merci
Y ahora la reinicio


Gracias!!
  #24 (permalink)  
Antiguo 04/02/2009, 07:43
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

perfect!

Seguramente lo de usuario se ha puesto por defecto, la version 2007 crea automaticamente demasiadas cosas


Un saludo!
  #25 (permalink)  
Antiguo 06/02/2009, 09:44
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 8 meses
Puntos: 15
Respuesta: Usuarios conectados al mismo tiempo contra una BD Access

1. Para conectar varios usuarios deberás crear una tabla, donde realaciones cada registro de la base de datos a este usuario... asi cada vez que ingrese este usuario no mastrarle toda la tabla con registros, si no unicamente los que pertenecen a el...
Necesitas un sistema de login.

2. Necesitas dividir la informacion de la presentacion, (sistema de tablas vinculadas, ya no recuerdo muy bien pero esta funcionalidad se encuentra en el menu herramientas de access, si no deberas insertar el cd e instalarla).

3. Ahora pones un equipo como el servidor y compartes una carpeta en toda la red,
luego copias los archivos con la interfaz(formularios), en cada uno de los equipos que se van a conectar a tu BD. y le dices que busque las tablas vinculadas en la ruta del servidor(Osea la carpeta compartida). y Listo

El problema, access no maneja muy bien la operacion simultanea(Puede existir el caso en que dos usuarios esten modificando el mismo registro... por ello existen muchas tecnicas para validar este problema... pero ya me extendí mucho).

4. Creo que la cantidad de usuarios depende del servidor, pero ten en cuenta que el rendimiento no es de lo mejor... Se es algo medianamente serio te aconsejo que implantes Mysql en tu servidor y les das acceso desde tu aplicación por el sistema ODBC.

5. En cuento a los campos dependientes podes usar (Ajax - no metira! IGNORA EL COMENTARIO). Puedes crear una llamada a una función en el evento lostfocus(Perder el foco) o en click. y le dices que tome el valor del control que necesitas(Digamos si tu control IMPACTO se llama Combo1, y TU Control prioridad se llama Combo2 - entonces:

usar una variable recorset llamada rs.
BD es la conexion a la base de datos.

rs = BD.opnerecordset("select * from tabla where campo1 like " & form.Combo1.text & ")
'creamos un ciclo para recorrer los datos del cursor de consulta
for(aqui un eof)..'(queremos recorrer la tabla)
combo2.additem rs.fields("nombre del campo")
rs.next
fin for

algo así mas o menos...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:53.