Como mostrar registros de una consulta en un Formulario de Vista de Datos usando VBA

señores buen día =)

Me encuentro trabajando con Access 2007 y VBA

Estoy tratando de mostrar una consulta (desde código de VBA) de una tabla llamada ALUMNOS que tiene 10 registros.

Quiero mostrar los registros en un formulario “en Vista de datos”, a este formulario le agregué tres cajas de texto donde muestro los campos de la tabla de la siguiente manera:

txtID = id_alumno

txtNombre = nombre

txtApellido = apellido

Al ejecutar el formulario en Vista de datos, solo me muestra un registro (El último de la tabla ALUMNOS). Es aquí donde tengo el problema, ya que si yo arrastro de manera directa un campo de la tabla desde la opción “Agregar campos existentes desde la cinta de opciones” hacia el formulario, si se muestran los diez registros (Sin embargo de esta manera no deseo trabajar).

Como dato adicional, utilizo un RecordSet que contiene los datos de la tabla y utilizo el formulario en vista hoja de datos porque quiero mostrar los datos como si fuese un DataGrid (Ya que he usado varios ListBox para mostrar registros, sin embargo me agradó más la idea de usar un formulario en vista de datos).

Mi código con el que intento mostrar los diez registros de mi consulta es el siguiente:

Se encuentra en el evento load del formulario

AlumnoRS: Es el RecordSet que contiene la consulta de los campos id_alumno, nombre y apellido

  While alumnoRS.EOF = False
        txtID = alumnoRS.Fields("id_alumno")
        txtNombre = almunoRS.Fields("nombre")
        txtApellido = alumnoRS.Fields(“apellido”)
        AlumnoRS. MoveNext
  Wend

Olvidaba mencionar que la consulta la probé con la herramienta de diseño de consulta (Instrucción SQL) y si me muestra los diez datos.

Yo me imagino que me hace falta agregar algo ó quizá me encuentre totalmente equivocado en proceso que deseo realizar.

1 Respuesta

Respuesta
1

Lo que intentas no te sale porque con el while le estás asignado a los mismos cuadros de texto un valor en cada pasado, y por eso sólo te muestra los del último registro de la consulta.

Para asignar un origen de datos a un formulario, usa la propiedad RecordSource del mismo, y luego a los cuadros de texto le asignas los distintos campos en la propiedad ControlSource.

Sería algo así:

Me.RecordSource=AlumnoRS

Me.txtID.ControlSource= "id_alumno"
Me.txtNombre.ControlSource= "nombre"
Me.txtApellido.ControlSource= “apellido”

A ver si así te funciona.

Saludos!


Hola amigo "El Rojo"
Gracias por tu pronta respuesta

El apunte que me das es muy bueno, sin embargo al poner :
Me.RecordSource = AlumnoRS
Me muestra el mensaje "Error de compilación no coinciden los tipos"

Esto alguna vez me pasó ya que entre varias pruebas que hice coincidí con la instrucción que me describes. Incluso intente los siguiente:
Me.RecordSet = AlumnoRS

Pero tampoco logre que mostrara los datos.

Al parecer tengo mucho que aprender de esto, y comienzo a pensar que voy a mostrar estos datos en un listbox (pues el tiempo se me agota).

Agradezco alguna otra idea
Saludos

Si, fallo mío, con Recordsource has de poner la SQL (o el nombre de una tabla/consulta).

No entiendo tu necesidad de asignarle el origen al formulario por VBA, pudiendo tenerlo ya creado sobre la misma consulta sobre la que comprobaste que funciona.

Otra solucion que se me ocurre, un tanto "peregrina": si siempre vas a tener 10 registros: añade 10 grupos de esos 3 cuadros de texto, los numeras y les asignas con el bucle los valores que devuelve tu recordset.

Amigo "El Rojo"

Tenias mucha razón desde el principio, yo estaba haciendo mal las cosas, en tu primera respuesta estaba la solución

Es una clara muestra de que la desesperación no lleva a un buen lugar.

Agradezco las respuestas y tu tiempo
Saludos, y muchas gracias

Me alegra haber sido de ayuda y que lo resolvieras.

Saludos!


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas