Access - ACCES EN RED

 
Vista:
sin imagen de perfil
Val: 49
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ACCES EN RED

Publicado por José Ant. Pinín (63 intervenciones) el 30/09/2016 12:46:31
Muy buenas.

Tengo una consulta. He realizado una gestión donde los vendedores pasan sus visitas y comentarios. He creado una Backend donde están solo las tablas y esta esta en el servidor. También he creado una Frontend que he instalado en cada maquina del vendedor y he vinculado sus tablas. El problema es el siguiente, cuando trabajo todo en mi mismo PC todo funciona rápido, pero cuando lo instalo en el servidor y trabajo en red el simple cargar un formulario se realiza muy lento.

Alguien podria darme algún consejo sobre esto.

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
Imágen de perfil de Manuel
Val: 395
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ACCES EN RED

Publicado por Manuel (171 intervenciones) el 30/09/2016 18:16:20
Que usas de servidor (back-end), un archivo de Access con el que se vinculan los clientes o SQL Server? Si es lo primero, te recomendaría que probaras lo segundo. Ya que si van a acceder varios clientes al mismo tiempo a los mismos datos, eso hace que la primera opción se vuelva muy lenta.
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
Imágen de perfil de Santos
Val: 22
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

ACCES EN RED

Publicado por Santos (8 intervenciones) el 01/10/2016 02:00:44
Hola José.
Yo he realizado una aplicación que utilizo actualmente en la empresa donde trabajo, algo pequeño para la gestión contable presupuestaria.
En principio las tablas están en un fichero en un computador como principal y un backend en cada computador cliente.
El acceso se realiza utilizando SQL anidado en métodos y/o procedimientos en módulos VBA, que conectan a las tablas sólo en el momento que sea necesario, ya sea para agregar y/o consultar datos.
Me explico:
Cuando los clientes abren l aplicación en sus estaciones, solo se accesa a las tablas de parámetros de usuarios donde se verifican sus políticas de acceso y permisos entre otras cosas.
Cuando accesan a los formularios de cargas de datos nuevos por ejemplo, se usa la porción de código correspondiente según las tablas a utilizar para la carga de nuevos registros.
Así también con los formularios de consultas, usan la porción de código creando una consulta vinculada remota.
En ambos casos se crean consultas temporales que son eliminadas cuando ya no sea necesario su utilización, además la vinculación remota tiene la particularidad de actualización automática.

Ejemplo en un Modulo:

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
34
35
36
37
38
39
40
Option Compare Database
Option Explicit
' Crea las consultas vinculadas, para que este ejecutable
' solo contenga los formularios para la vista y ingreso de
' los datos....
' Autor:  Santos Medina
' Fecha:  Junio 2012
 
Dim RutaData As String
Const DataRemota As String = "z:\DatabaseGeneral\Data.accdb"
 
'Para Crear las consultas
Public Function CreaDataBase()
 
     Dim qdft As DAO.QueryDef
 
On Error Resume Next
' Ruta Tablas Data Principal
  RutaData = DataRemota
  Set qdft = CurrentDb.CreateQueryDef("tblAsignaciones", "Select * From tblAsignaciones IN '" & RutaData & "'")
On Error Resume Next
  Set qdft = CurrentDb.CreateQueryDef("tblDetalleAsignaciones", "Select * From tblDetalleAsignaciones IN '" & RutaData & "'")
 
 
RutaData = ""
On Error GoTo 0
 
End Function
 
'Para eliminar las consultas
Public Function DelDataBase()
 
    On Error Resume Next
 
    DoCmd.DeleteObject acQuery, "tblAsignaciones"
    DoCmd.DeleteObject acQuery, "tblDetalleAsignaciones"
 
    On Error GoTo 0
 
End Function


Ejemplo guardar en el módulo de clase del formulario:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
'***********************************************************************
'EVENTOS FUNCIONES INTERNAS
'Para guardar los datos modulo del formulario agregar nuevo
'///////////////////////////////////////////////////////////////////////
 
Public Sub GuardarDatos()
On Error GoTo Err_Error
 
Dim strSQL1 As String, _
    strSQL2 As String, _
    Rst1 As Recordset, _
    Rst2 As Recordset
 
 
'Se agregan datos nuevos a las tablas
    'Agregar Datos a la Tabla Asignaciones
    strSQL1 = "SELECT * FROM tblAsignaciones "
    Set Rst1 = CurrentDb.OpenRecordset(strSQL1, dbOpenDynaset)
    Rst1.AddNew
        Rst1!IdFecha = Me.IdFecha.Value
        Rst1!CodCCP = Me.CodCCP.Value
        Rst1!OpOcFact = Me.DocFactura.Value
        Rst1!IdProveedor = Me.IdBeneficiario.Value
        Rst1!Nombre_RazonSocial = Me.NombreRazonSocial.Value
        Rst1!ConceptoGasto = Me.CONCEPTO.Value
        Rst1!DescripcionDetalle = Me.DescripcionDetalle.Value
        Rst1!UnidadEjecutora = Me.UnidadEjecutora.Value
        Rst1!MONTO = Me.MontoComprometido.Value
        Rst1!IdCuentaBanco = 0
    Rst1.Update
    Rst1.Close
 
    'Agregar Datos a la Tabla Detalle Asignaciones
    strSQL2 = "SELECT * FROM tblDetalleAsignaciones "
    Set Rst2 = CurrentDb.OpenRecordset(strSQL2, dbOpenDynaset)
    Rst2.AddNew
        Rst2!CodCCP = Me.CodCCP.Value
        Rst2!IdFecha = Me.IdFecha.Value
        Rst2!IdBeneficiario = Me.IdBeneficiario.Value
        Rst2!NombreRazonSocial = Me.NombreRazonSocial.Value
        Rst2!CONCEPTO = Me.CONCEPTO.Value
        Rst2!DescripcionDetalle = Me.DescripcionDetalle.Value
        Rst2!DocFactura = Me.DocFactura.Value
        Rst2!MontoComprometido = Me.MontoComprometido.Value
        Rst2!MontoEjecutado = Me.MontoComprometido.Value
        Rst2!MontoPagado = 0
        Rst2!PARTIDA = Me.PARTIDA.Value
        Rst2!Generica = Me.Generica.Value
        Rst2!Especifica = Me.Especifica.Value
        Rst2!SubEspecifica = Me.SubEspecifica.Value
        Rst2!CodProyectoACC = Me.CodProyectoACC.Value
        Rst2!UnidadEjecutora = Me.UnidadEjecutora.Value
        Rst2!IdCuentaBanco = 0
    Rst2.Update
    Rst2.Close
 
    MsgBox "Datos Agregados Satisfactoriamente", vbInformation + vbOKOnly, "Agregar Datos"
 
    Set Rst1 = Nothing
    Set Rst2 = Nothing
 
 
Exit_Error:
    Exit Sub
Err_Error:
    MsgBox "Error Nro. " & Err.Number & vbCrLf & _
            Err.Description, vbCritical + vbOKOnly, "Error GuardarDatos"
    Resume Exit_Error
End Sub


Esto es sólo un ejemplo, debes adaptarlo a tu aplicación.
Mayor detalle, consulta a mi correo, cuando pueda te envío el ejemplo con mas detalles y tips de seguridad en los accesos.

Espero te sirva para pienses un poquito....
Shalom Berach
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Manuel
Val: 395
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ACCES EN RED

Publicado por Manuel (171 intervenciones) el 05/10/2016 11:46:53
+1 Muy buena tu solución Santos, me la apunto... es más trabajo, pero es muy bueno tu enfoque.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar