English (United Kingdom)

Fermu Website

Home
FireBoard
Bienvenido(a), Invitado(a)
Por favor Ingresa o Registrar.    Contraseña Perdida?
Re: Acceso desde VBA a un objeto "registro actual..." (1 viendo) (1) Invitado
Ir al fondo Publicar respuesta Favorito: 0
Tema: Re: Acceso desde VBA a un objeto "registro actual..."
#7966
fprat (Usuario)
Ocasional
Publicaciones: 30
graphgraph
Usuario Desconectado Haga clic aquí para ver el perfil de este usuario
Acceso desde VBA a un objeto "registro actual..." 5 Meses, 1 Semana antes Karma: 0  
Hola:

Antes de nada, quería dar las gracias a quienes altruistamente hacéis funcionar estos foros. Y, una vez hecho esto, lo que quiero es aprovecharme de esa sabiduría que derrocháis.

Por poneros en contexto: no utilizo Windows con asiduidad, soy "más bien de Linux", aprendí a programar en Pascal (bueno, si descontamos el micro-Basic del Spectrum), puedo manejarme con C y similares y, para soluciones "quick & dirty", me siento cómodo en Python, pero sin florituras. Así pues, cuando he de programar cualquier cosita de andar por casa para, por ejemplo, Access, me vuelvo loco con el VBA: se me ocurre cómo haría algo parecido en otros lenguajes, pero casi nunca encuentro un equivalente VBA a como yo querría enfocar el problema (y, además, me quedo sin saber si es que la filosofía VBA es muy diferente o, simplemente, que no sé encontrar las cosas). Y me da la impresión de que por aquí podríais echarme una mano, lo que os agradecería.

Por poner el ejemplo que me preocupa ahora: he estado mirando en este mismo foro el hilo sobre el botón que, desde un formulario, debería volcar el contenido del registro actual a una plantilla de Word, así como la solución que a ese mismo problema ofrecen en ProInf.net ("Rellenar una plantilla de MS-Word a partir de una consulta en MS-Access", ejemplo básico, función InformeWord). Allí utilizan una plantilla Word con texto (sin "bookmarks" que la función sustituye por el valor de los campos que, en el registro actual del formulario, se llaman igual que ese texto. Lo que no me gusta (pero quizá no se pueda hacer de otra manera, eso es lo que me quisiera averiguar) es que para poder acceder cómodamente desde VBA a ese registro actual han de construir un "DAO.Recordset" (con ese nombre no puede ser nada bueno) resultante de una consulta cuyo único objetivo parece ser seleccionar un conjunto de registros que coincida, precisamente, con sólo el registro actual. La orden principal es ésta:

Set rs = CurrentDb.OpenRecordset(consulta, dbOpenForwardOnly)

Lo bueno que tiene esto es que luego puedes recorrer elegantemente la lista de campos del registro con

For Each campo In rs.Fields

y, al ir a volcar los datos sobre la plantilla Word, tanto el nombre del campo ("campo.Name" como su valor ("rs(campo.Name)" son cómodamente accesibles. La pregunta sería: ¿no hay ninguna forma sencilla en VBA de referirse al objeto "registro actual del formulario" y obtener de él sus campos, es decir, sus pares nombre/valor? Lo que yo querría es algo del tipo

For Each campo In CurrentRecord.Fields

olvidándome de consultas y conjuntos de registros que conceptualmente, a priori, me parecen innecesarios para los fines que se persiguen.

Bueno, este es el tipo de obsesiones que consiguen ocuparme íntegramente una tarde :-|

¿Soy un caso perdido? ¿Hay esperanza para mí? Y, de haberla... ¿está en este foro?

En cualquier caso, mi reconocimiento personal a quien haya aguantado leyendo hasta aquí, que no es poco aguantar...

Be happy!

Efe
 
Reportar al moderador   Reporte guardado Reporte guardado  
  El administrador ha desactivado el acceso a escritura pública.
#7989
Andres M. (Usuario)
Habitual
Publicaciones: 82
graphgraph
Usuario Desconectado Haga clic aquí para ver el perfil de este usuario
Re: Acceso desde VBA a un objeto "registro actual. 5 Meses, 1 Semana antes Karma: 0  
Hola fprat


He estado echando un vistazo a la pagina que comentas y la verdad es que no entiendo nada; cosa normal ya que yo de programación 'na de na' de todas formas estaré pendiente de este hilo ya que me parece super-interesante.

Un saludo.

Andrés M.
 
Reportar al moderador   Reporte guardado Reporte guardado  
  El administrador ha desactivado el acceso a escritura pública.
#8528
pmarzullo (Usuario)
Novato
Publicaciones: 8
graphgraph
Usuario Desconectado Haga clic aquí para ver el perfil de este usuario
Re: Acceso desde VBA a un objeto "registro actual..." 3 Meses, 1 Semana antes Karma: 0  
Hola fprat!

Estaba leyendo, supongo debes estar hablando del VBA de Access, de cualquier forma, para acceder a datos tenes los siguientes objetos:

DAO
ADO

En mi preferencia es mejor ADO, pero siempre para usarlo debes asegurarte de que tenes activada la referencia (menu herramientas,referencias... y buscas para DAO que este activado: Microsoft DAO x.xObjetc Library, para ADO: Microsoft ActiveX Data Objects x.x Library)

Todo depende de la estructura que estes pensando hacer, por ejemplo:

Si vas a usar un formulario y usar controles, podes crear un control para cada campo y luego tendrias que enlazarlos con el objeto DAO / ADO.

A lo mejor no queres trabajar con la informacion con un formulario y solo quieras mostrarlos en un cuadro de mensaje (MSGBOX).

Depende tambien desde la aplicacion por la que estes trabajando, si es desde Access, lo primero que tendria que hacer es crear la tablas o referencias de tablas (si el origen es otro que no sea Access, etc,etc)

Hay muchas formas de hacer lo mismo todo depende de que quieras obtener,

Por regla general, mi consejo es que: adquirir sabiduria sin causa no es bueno, habria que plantearse bien

Que quiero hacer? y esto muchas veces no es algo facil

una vez resuelto esto, la siguiente cuestion es: como, pero primero lo primero

Bueno espero haber sido de utilidad, soy de Argentina y me parece piola el sitio.

Saludos,. Pablo
 
Reportar al moderador   Reporte guardado Reporte guardado  
  El administrador ha desactivado el acceso a escritura pública.
Ir al inicio Publicar respuesta
Potenciado por FireBoardObtener las últimas entradas directamente a su escritorio
Web www.fermu.com

Logon


Gente Online

We have 156 guests online
Joomla Templates by JoomlaShack