Access - Multiempresa

 
Vista:

Multiempresa

Publicado por Yolanda (18 intervenciones) el 13/05/2009 12:14:15
Hola a todos y gracias de antemano. Mi duda es la siguiente:
Estoy haciendo una base de datos, en ella tengo que dar al inicio la opción de entrar a una de las tres empresas que voy a crear para que introduzcan los datos. No sé si tengo que hacer tres bases de datos diferentes o todo dentro de la misma. ¿ Cual es la mejor forma de hacerlo?. Por cierto, las tres empresas van a compartir la tabla clientes, el resto serán datos diferentes.

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

RE:Multiempresa

Publicado por 2pl (16 intervenciones) el 14/05/2009 08:55:42
Yo tendria una tabla de empresas con todos sus datos y otra tabla de clientes que no estaria relacionada con la primera ya que para cualquier empresa serian los mismos clientes.
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

RE:Multiempresa

Publicado por Yolanda (18 intervenciones) el 14/05/2009 09:55:23
Gracias por tu respuesta. No entiendo muy bien. Me aconsejas hacer una tabla en la cual ponga los tres nombres de empresas con sus datos, hasta ahí perfecto. Y que comparta la tabla clientes ( imagino que vinculandola). Pero como hago para separar los datos que introduzca en cada empresa. Es decir, yo tengo varios formularios, consultas, etc.... ¿ Tendría que triplicarlos dentro de la misma base?
Perdona mi ignorancia pero soy novata.

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

RE:Multiempresa

Publicado por 2pl (16 intervenciones) el 14/05/2009 10:56:25
1.-He entendido que los clientes serian los mismos para las diferentes empresas, en este caso no hace falta relacionar nada, seleccionaria por empresa y te saldrian todos los clientes.
2.-En el caso de que cada empresa tuviera sus propios clientes, tendrias que tener en cada tabla de clientes el ID de empresa. En este caso podrian repetirse los datos de clientes pues un mismo cliente puden tenerlo las tres empresas.
3.-Para complicarlo más, tendrias que tener una tabla de EMPRESAS, otra de CLIENTES y otra de codigos de clientes con un campo ID cliente y otro ID empresa.
Algo complicado para una novata como dices que eres.Yo optaria por el punto 2 aunque en ciertos casos tenga duplicado los datos de cliente.
Espero haberme explicado y si estoy en un error, que me corrijan.
Saludos
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

RE:Multiempresa

Publicado por Enrique (1299 intervenciones) el 14/05/2009 15:35:09
Hola Yolanda:
Te indico como he resuelto yo este asunto, pués tambien a mi se me presentó este problema. La idea de 2pl tambien es factible, tu decides:

Si son tres Empresas necesitas 4 bases de datos. Ejemplo:
- BaseClientes.mdb conteniendo solamente la Tabla Clientes
- Empresa001.mdb con todas sus Tablas
- Empresa002.mdb con todas sus Tablas
- Empresa003.mdb con todas sus Tablas

Necesitas otra Base que hará de programa (el FrontEnd) y que contendrá todos los demás objetos (consultas, formularios, informes, macros y módulos, pero NINGUNA Tabla que NO sea vinculada)

Si son varios usuarios, cada uno tendrá una copia exacta de la base FrontEnd en su disco duro local.

Todas las bases FrontEnd tendrán vinculada directamente la Tabla "Clientes" de la Base de datos "BaseClientes.mdb" y lógicamente esas cuatro mdb's estarán en una carpeta compartida de un Servidor de Red.

Se supone que las Tablas de las tres EmpresasXXX.mdb son iguales en cuanto a NOMBRE y ESTRUCTURA aunque contengan datos diferentes y los nombres de las Tablas deben ser los mismos en todas las Bases "EmpresaXXX"

En la Base FrontEnd puedes poner un Formulario de Inicio con un MARCO DE OPCIONES, con tantas opciones como empresas, en tu caso tres (1-Cargar Empresa001, 2-Cargar Empresa002, 3-Cargar Empresa003) y estos dos Procedimientos de evento:

'EVENTO AL CARGAR:
Private Sub Form_Load()
DoCmd.Maximize
Marco1.Value = 1 'Marca por defecto al cargar, la opcion 1 = Cargar Empresa001
End Sub

'EVENTO AL HACER CLICK EN UN BOTON DE COMANDO:
Private Sub Comando1_Click()
On Error Resume Next
Dim Empresa As String
If Marco1.Value = 1 Then
Empresa = "//Servidor/DiscoD/Gestion/Empresa001.mdb"
ElseIf Marco1.Value = 2 Then
Empresa = "//Servidor/DiscoD/Gestion/Empresa002.mdb"
ElseIf Marco1.Value = 3 Then
Empresa = "//Servidor/DiscoD/Gestion/Empresa003.mdb"
End If

'Elimina las Tablas que haya vinculadas antes de vincular las de la nueva Empresa cargada:
DoCmd.SetWarnings False
DoCmd.DeleteObject acTable, "Tabla1"
DoCmd.DeleteObject acTable, "Tabla2"
DoCmd.DeleteObject acTable, "Tabla3"
DoCmd.DeleteObject acTable, "Tabla4"
.........
.........

'Vincula las Tablas de la Empresa que seleccionemos en el Marco de opciones:
DoCmd.TransferDatabase acLink, "Microsoft Access", Empresa, acTable, "Tabla1", "Tabla1"
DoCmd.TransferDatabase acLink, "Microsoft Access", Empresa, acTable, "Tabla2", "Tabla2"
DoCmd.TransferDatabase acLink, "Microsoft Access", Empresa, acTable, "Tabla3", "Tabla3"
DoCmd.TransferDatabase acLink, "Microsoft Access", Empresa, acTable, "Tabla3", "Tabla4"
.........
.........
DoCmd.SetWarnings True
End Sub

En las tres líneas de código que definen el valor de las Empresas, cambia las barras inclinadas a la derecha por las inclinadas a la izquierda, ya que como sabrás, en este Foro no se muestras estas últimas.

Cualquier duda que te surga, pregunta.

Saludos
Enrique
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