Acceso a registros de una tabla vinculada en VBA
Audrey
-
adelavar Mensajes publicados 4 Estado Miembro -
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.
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
-
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í. -
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". -
VB o VBA también...
. .
\_/ -
¿Y estás seguro(a) de la relación en cuestión?
. .
\_/ -
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. -
¿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". -
error de ejecución 3219
depuración
Set MaTable = MaDB.OpenRecordset("TEnregist", DB_OPEN_TABLE)
¿Te parece bien como error? -
¡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"!-
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. -
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" -
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. -
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!" -
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.
-
-
¡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" -
Acabo de volver... El tiempo de analizar todo lo que han puesto y de probarlo, y les digo qué tal resulta.
Gracias.