Acceso a registros de una tabla vinculada en VBA

Audrey -  
adelavar Mensajes publicados 4 Estado Miembro -
Actualmente estoy trabajando en Access. Mi programa en VB funciona con las tablas en la misma base de datos, pero si las vinculo, ya no funciona.
De hecho, deseo acceder a los registros de mi base de datos con recordset, pero el método parece ser diferente con las tablas vinculadas. ¿Cómo puedo hacerlo?
Gracias de antemano.

10 respuestas

  1. adelavar Mensajes publicados 4 Estado Miembro 2
     
    Gracias a ustedes dos, era precisamente la acción dbopendynaset la que había que poner.
    El acceso a los registros ni siquiera merece ser cambiado, funciona así.
    2
  2. blux Mensajes publicados 2068 Fecha de registro   Estado Moderador Última intervención   3 456
     
    Hola,

    ¿qué entiendes por tablas vinculadas, son tablas adjuntas?
    si es así, no debería haber problema. Las he estado utilizando durante mucho tiempo y nunca he tenido inconvenientes.

    ¿Quizás son tablas vinculadas con ODBC?

    ¿Puedes decirnos más: mensaje de error, comportamiento de la aplicación?

    ¡Hasta luego! Blux "Los tontos se atreven a todo.
    Es incluso por eso que los reconocemos".
    0
  3. teebo Mensajes publicados 33585 Fecha de registro   Estado Colaborador Última intervención   1 797
     
    VB o VBA también...

    .  .
    \_/
    0
  4. teebo Mensajes publicados 33585 Fecha de registro   Estado Colaborador Última intervención   1 797
     
    ¿Y estás seguro(a) de la relación en cuestión?

    .  .
    \_/
    0
  5. adelavar Mensajes publicados 4 Estado Miembro 2
     
    Sí, son tablas vinculadas.
    Voy a continuar:
    Tengo una base de datos
    y una base de tratamiento. EN ESTA BASE VOY A ARCHIVO-datos externos-vinculados las tablas y así mis tablas están vinculadas en mis tratamientos (para info, esto permite al usuario seguir trabajando y llenando la base mientras modificamos estados o formularios..)

    Así que con tablas vinculadas, recordset no funciona, hay algo más que hacer.

    Gracias por su atención.
    0
  6. blux Mensajes publicados 2068 Fecha de registro   Estado Moderador Última intervención   3 456
     
    ¿Cuál es el mensaje de error? ¿Qué está pasando? Porque "el conjunto de registros no funciona, hay algo más que hacer" no es un mensaje de error de ACCESS (he verificado :-))

    Cuando vas a Herramientas/Complementos/Gestor de tablas adjuntas, ¿ves tus tablas con la ubicación de las tablas fuente o tienes anomalías?

    ¡Hasta luego, Blux! "Los tontos se atreven a todo.
    Es incluso así como se les reconoce".
    0
  7. adelavar Mensajes publicados 4 Estado Miembro 2
     
    error de ejecución 3219
    depuración
    Set MaTable = MaDB.OpenRecordset("TEnregist", DB_OPEN_TABLE)

    ¿Te parece bien como error?
    0
  8. blux Mensajes publicados 2068 Fecha de registro   Estado Moderador Última intervención   3 456
     
    ¡Ya está más claro! :-)

    ¿Has hecho:

    Set MaDB=Currentdb ? (¿o algo más?)
    ¿Son MaDB y MaTable objetos de tipo base de datos y conjunto de registros, respectivamente?

    ¡Hasta luego Blux "Los tontos se atreven a todo.
    Es incluso así como los reconocemos"!
    0
    1. TopperHarley Mensajes publicados 8 Estado Miembro
       
      Hola a todos,

      no, no es necesario usar "set MaDB = currentdb" porque él escribió:
      Set MaTable = MaDB.OpenRecordse("TEnregist",DB_OPEN_TABLE)
      Pero puedes usar las tablas vinculadas en VBA gracias a la colección TableDefs.
      El objeto TableDef también puede gestionar los enlaces a tablas de fuentes de datos ISAM y ODBC. Debes incluir en tu código las propiedades Connect y SourceTableName y el método CreateTableDef de esta actividad.
      Haces referencia al método CreateTableDef para definir en una variable una referencia a la tabla vinculada. Luego, defines las propiedades Connect y SourceTableName de la variable. La propiedad Connect especifica el tipo de fuente de datos y la ruta a la fuente de datos específica que deseas vincular.
      SourceTableName es el nombre de la tabla que estás vinculando.
      Finalmente, debes terminar el proceso añadiendo el objeto TableDef a la colección TableDefs.

      Buena programación...

      Guillaume, a su servicio y, de paso, también para ayudarme.
      0
    2. blux Mensajes publicados 2068 Fecha de registro   Estado Moderador Última intervención   3 456 > TopperHarley Mensajes publicados 8 Estado Miembro
       
      Sí, pero ¿cuál es el valor de MaDB? No lo vemos por ninguna parte y lo mencionamos en OPENRECORDSET.

      Me gustaría saber por qué dices que no es necesario hacer set...=currentdb porque no veo en openrecordset la forma en que esta acción encuentra de qué base estamos hablando.

      ¡Hasta luego, Blux! "Los tontos se atreven a todo.
      Es incluso por eso que los reconocemos"
      0
    3. TopperHarley Mensajes publicados 8 Estado Miembro > blux Mensajes publicados 2068 Fecha de registro   Estado Moderador Última intervención  
       
      Hola,

      sí, tienes razón, disculpa, olvidé especificar todo eso.
      Aquí tienes un ejemplo para satisfacerte, no es necesario especificar la base para las tablas relacionadas (salvo que uses elementos de esta):
      dim rs as recordset
      set rs = new ADODB.recordset
      rs.open "clientes",_
      "provider=microsoft.jet.oledb.4.0;"&
      "Data source=C:\program files\microsoft office\office\"&_
      "Samples\comptoir.mdb;"
      .
      .
      .
      rs.close
      end sub

      ¿Estás feliz ahora?!? lol

      Guillaume, para servirte y accidentalmente ayudarme también.
      0
    4. blux Mensajes publicados 2068 Fecha de registro   Estado Moderador Última intervención   3 456 > blux Mensajes publicados 2068 Fecha de registro   Estado Moderador Última intervención  
       
      Hola,

      gracias por los ejemplos, pero no soy el solicitante. :-)

      la solicitud inicial de Audrey proviene de tablas que ya están vinculadas, no es necesario redefinir los enlaces.

      Solo quiero que me confirme los valores de MaDB y la declaración de los objetos (base de datos y conjunto de registros)... :-)

      ¡A+ Blux "Los tontos se atreven a todo.
      Es incluso por eso que los reconocemos!"
      0
    5. TopperHarley Mensajes publicados 8 Estado Miembro > blux Mensajes publicados 2068 Fecha de registro   Estado Moderador Última intervención  
       
      Más tarde le di la solución a Audrey, las tablas ya están vinculadas, pero hay que establecer una conexión en VBA para obtener esos datos. ¡Es como con un archivo, antes de leer la información, hay que abrir el archivo! jaja
      En cuanto a Audrey, sería genial si pudiera decir si su problema está resuelto para evitar volver al tema todo el tiempo, pero creo que he respondido correctamente.
      ¡Entre nosotros, la solución debería funcionar!

      Guillaume, a su servicio y, de paso, también ayudándome.
      0
  9. blux Mensajes publicados 2068 Fecha de registro   Estado Moderador Última intervención   3 456
     
    ¡He encontrado!!!

    En:
    Set MaTable = MaDB.OpenRecordset("TEnregist", dbopentable)

    DB_OPEN_TABLE no existe, hay que poner "dbopentable", ¡me decía a mí mismo que había algo que fallaba visualmente!

    ¡Y listo! :-)

    Hasta luego Blux "Los idiotas se atreven a todo.
    Es incluso por eso que los reconocemos"
    0
  10. adelavar Mensajes publicados 4 Estado Miembro 2
     
    Acabo de volver... El tiempo de analizar todo lo que han puesto y de probarlo, y les digo qué tal resulta.
    Gracias.
    0