** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Problemas con versiones Access
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoProblemas con versiones Access

 Responder Responder Página  12>
Autor
Mensaje
Jose35 Ver desplegable
Habitual
Habitual


Unido: 05/Noviembre/2017
Localización: Aljaraque
Estado: Sin conexión
Puntos: 71
Enlace directo a este mensaje Tema: Problemas con versiones Access
    Enviado: 11/Abril/2019 a las 08:29
Muy Buenas, tengo un problema el cual no se si voy a saber exponerlo correctamente, me ocurre que tengo una base de datos programada con VBA en Office 2013 y la cual usamos en Red en mi trabajo con PC´s que trabajan en W7, hasta ahí todo normal, el problema me viene cuando abre la base de datos un compañero al que le han migrado a W10 y Office 365.

A partir de ahí me empiezan todos los problemas y digo me empiezan porque son a mi que me dejan de funcionar las rutinas, a el le va bien en el suyo o al menos eso me indica, sin embargo a mi intento ejecutar algunos formularios y se me abre la ventana de programación de Access y marca como fallo comandos como Date o Sdate, no los reconoce.

Si me voy a Herramientas--> Referencias, me dice que falta Microsoft Excel 16.0 Object Library.

Una vez ocurre esto no se solucionarlo y no me queda otra que recuperar el Backup del día antes y pedirle que no la vuelva a abrir de momento.

Una vez recuperada la abro y si me voy a Herramienta--> Referencias tengo marcado el Microsoft Excel 15.0 Object library ya que hago referencias a librarías Excel en las rutinas usadas en Access.

¿Tiene Solución Fácil?, en cualquier momento me migraran a mi a w10 y office 365, pero como dicha migración es paulatina y vamos migrando poco a poco, seguirán los problemas de la Base de Datos.

Espero haber explicado el problema correctamente.

Saludos.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10939
Enlace directo a este mensaje Enviado: 11/Abril/2019 a las 08:50
Me da que estáis usando los dos la misma aplicación ¿correcto?

- Tienes que separar programa (Front-End) de tablas (Back-End)
- Cada usuario tiene que tener un Front-End propio, no compartido con nadie más


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Jose35 Ver desplegable
Habitual
Habitual


Unido: 05/Noviembre/2017
Localización: Aljaraque
Estado: Sin conexión
Puntos: 71
Enlace directo a este mensaje Enviado: 11/Abril/2019 a las 09:08
Perdona Mihura, aunque he sido capaz de programar la Base de Datos buscando ejemplos y no esta mal, mis conocimientos en Access no llegan a tanto, no te comprendo lo que me quieres decir, si me lo puedes simplificar y aclarar te lo agradecería mucho.

Saludos.
Arriba
Jose35 Ver desplegable
Habitual
Habitual


Unido: 05/Noviembre/2017
Localización: Aljaraque
Estado: Sin conexión
Puntos: 71
Enlace directo a este mensaje Enviado: 11/Abril/2019 a las 10:07
Bueno buscando información en San Google he encontrado como hacerlo, me ha dividido la base de datos en 2 archivos, el Back-end "Trabajo O+M_SSP_Provision_be" y el Front-end "Trabajo O+M_SSP_Provision".

Por lo que he leído y te he entendido el Front-end hay que colocarlo en el PC de cada persona que acceda a la base de datos y el back-end lo dejo en la unidad de red donde estaba, hasta ahí sencillo, ahora comienza los problemas.....

Tengo problemas con este recorset:

Set record = BaseDatos.OpenRecordset("Provision", dbOpenTable)

me indica error 3219 en tiempo de ejecución, operacion no valida
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10939
Enlace directo a este mensaje Enviado: 11/Abril/2019 a las 10:49
¿y como tienes definido BaseDatos?
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Jose35 Ver desplegable
Habitual
Habitual


Unido: 05/Noviembre/2017
Localización: Aljaraque
Estado: Sin conexión
Puntos: 71
Enlace directo a este mensaje Enviado: 11/Abril/2019 a las 11:38
la tengo así definida:

Set BaseDatos = CurrentDb

Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10939
Enlace directo a este mensaje Enviado: 11/Abril/2019 a las 12:05
Quítale el dbOpenTable, ese parámetro sólo es válido si las tablas están en la propia BD.

Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Jose35 Ver desplegable
Habitual
Habitual


Unido: 05/Noviembre/2017
Localización: Aljaraque
Estado: Sin conexión
Puntos: 71
Enlace directo a este mensaje Enviado: 11/Abril/2019 a las 14:29
Gracias Mihura, lo probare luego y te cuento.
Arriba
Jose35 Ver desplegable
Habitual
Habitual


Unido: 05/Noviembre/2017
Localización: Aljaraque
Estado: Sin conexión
Puntos: 71
Enlace directo a este mensaje Enviado: 11/Abril/2019 a las 19:55
Probado y siguiente error, supongo que irán relacionado, se me para en la siguiente línea y al depurar me la marca en amarillo:

record.Index = "Orden_Atlas"

y te copio la siguiente línea a esta que es:

record.Seek "=", Orden_Atlas

¿Cómo lo ves?

Saludos.


Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10939
Enlace directo a este mensaje Enviado: 11/Abril/2019 a las 20:51
Cool .... así lo veo ..... LOL

Al ser un recordset y no una tabla esos métodos no te sirven, pero no te preocupes que los hay alternativos, en la definición de la SQL que abre el recordset:

Set Rs = BaseDatos.OpenRecordSet("SELECT a, b, c FROM Mitabla WHERE Orden_Atlas = " & ElValorBuscado)


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Jose35 Ver desplegable
Habitual
Habitual


Unido: 05/Noviembre/2017
Localización: Aljaraque
Estado: Sin conexión
Puntos: 71
Enlace directo a este mensaje Enviado: 11/Abril/2019 a las 21:04
Mañana Probare lo que me acabas de indicar, de momento buscando en san Google he encontrado otro método, mas complejo que el tuyo pero que funciona:

Call RutaVinculada(Tabla)

Set BaseDatos = CurrentDb
Orden_Atlas = Forms!frmModeloProvisión![Orden_Atlas]


Set BaseDatos = DBEngine.Workspaces(0).OpenDatabase(RutaVinculada("Provision"))



Set record = BaseDatos.OpenRecordset("Provision")
    
    

    record.Index = "Orden_Atlas"
    record.Seek "=", Orden_Atlas


La función publica a la que llama (RutaVinculada) es esta:

Public Function RutaVinculada(Tabla) As String

   ' Devuelve el path de la BD donde está (o estaba) la tabla, o "" si no es una tabla vinculada

   Dim sRutaC As String, i As Integer, l As Integer

   

   sRutaC = CurrentDb.TableDefs("Provision").Connect

   If sRutaC = "" Then

       RutaVinculada = ""

   Else

       i = InStr(sRutaC, "DATABASE=")

       If i = 0 Then

           RutaVinculada = ""

       Else

           i = i + 9

           For l = i To Len(sRutaC)

               If Mid(sRutaC, l, 1) = ";" Then

                   Exit For

               End If

           Next

           RutaVinculada = Mid(sRutaC, i, l - i + 1)

       End If

   End If

End Function

al final la he adaptado a lo que necesito y me ha funcionado.

De todas formas mañana probare lo tuyo, es una sola línea y si funciona, fíjate.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10939
Enlace directo a este mensaje Enviado: 11/Abril/2019 a las 22:55
Esa función en realidad lo que te hace es trabajar con las tablas mediante una Database externa, sin tablas vinculadas, es otra forma.
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Jose35 Ver desplegable
Habitual
Habitual


Unido: 05/Noviembre/2017
Localización: Aljaraque
Estado: Sin conexión
Puntos: 71
Enlace directo a este mensaje Enviado: 14/Abril/2019 a las 14:46
Buenas de nuevo Mihura, hasta ahora no he podido probar la linea que me has indicado y me falla la he adaptado de esta forma y no se si estara bien, puedes echarle un vistazo?

El comienzo de esta rutina es asi:

Sub analisa_actuaciones()

Dim record              As DAO.Recordset
Dim BaseDatos           As DAO.Database
Dim a, b, c             As String


 Set BaseDatos = CurrentDb
 
 Orden_Atlas = Forms!frmModeloProvisión![Orden_Atlas]

'Creamos un Recorset y le indicamos que busque la orden Atlas en nuestra Base de Datos
'para saber el nº de actuaciones asosiadas a esa orden y asi ver las ubicaciones
'de cada actuacion


' esta es la nueva linea que me has indicado y la cual yo he adaptado como creo
  
  Set record = BaseDatos.OpenRecordset("SELECT Orden_Atlas FROM Provision WHERE Orden_Atlas = " & Orden_Atlas)


Me da error 3464 en tiempo de ejecución
No coinciden los tipos de datos en la expresión de criterios.


¿Donde esta el fallo?

Espero tu respuesta.

Saludos.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10939
Enlace directo a este mensaje Enviado: 14/Abril/2019 a las 15:39
¿Orden_Atlas es un string? ... si es que si, tendrás que encerrarlo entre comillas simples:

...WHERE Orden_Atlas = '" & Orden_Atlas & "'")
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Jose35 Ver desplegable
Habitual
Habitual


Unido: 05/Noviembre/2017
Localización: Aljaraque
Estado: Sin conexión
Puntos: 71
Enlace directo a este mensaje Enviado: 14/Abril/2019 a las 17:55
Perdona Mihura, pero de esta forma me van saliendo los fallos linea por linea, entiendo que esta mal escrito el código para este cambio que le intento dar.

Ahora he escrito la linea así:

Set record = BaseDatos.OpenRecordset("SELECT Orden_Atlas FROM Provision WHERE Orden_Atlas = '" & Orden_Atlas & "'")

se la traga, pero cuando ahora intento leer el record y sacar datos de los campos contenidos falla en la siguiente linea:

ubica = record.Fields(5).Value
actua = record.Fields(1).Value
estad = record.Fields(2).Value

me da error (3265) y si me sitúo sobre la linea la cual esta marcada en amarillo me dice que no se encontró el elemento de esta colección.

Saludos.


Editado por Jose35 - 14/Abril/2019 a las 18:21
Arriba
 Responder Responder Página  12>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable