Formulario cambiar diseño de consulta

Tengo hecha una base de datos en la que tengo una tabla por cada año. El problema que se me plantea es que tengo una consulta que está basada en estas tablas (en una de ellas) y cada vez que quiero cambiar de año tengo que entrar en diseño,...¿No se puede hacer un formulario donde aparezcan las diferentes tablas y desde ahí seleccionar una de ellas y modificar la consulta? A ver si me puedes echar un cable.

1 respuesta

Respuesta
1
Pues la verdad es muy sencillo, en el evento open del formulario, cambias la propiedad origen de la fila del formulario por la tabla nueva y haces un requery, es decir si la tabla se lla ma TablaXXXX donde XXXX es el año, podrías tener:
Private Sub Form_Open(Cancel As Integer)
me.RecordSource="Tabla"+format(date,"yyyy")
me.requery
End Sub
Con lo que abrirá la tabla del año vigente.
Creo que no me he explicado bien; lo que yo quiero es cambiar el diseño de la consulta a través de un formulario, no cambiar el diseño del formulario en sí. Así, teniendo varias tablas y una consulta, lo que quiero es que la consulta unas veces se base en una tabla y otras veces en otra; y cambiar esto, en vez de entrando en la vista diseño,... a través de un formulario en el que puedas elegir una tabla u otra. Gracias de nuevo.
Lo puedes llamar como quieras, pero al fin y al cabo es lo mismo, si quieres puedes hacer un cuadro combinado (que se puede llamar Cuadro) y una vez elegida la que quieras pinchas en un botón con el código:
Private Sub Command1_Click
me.RecordSource=Cuadro
me.requery
End Sub
Y ya estaría.
Pero de esta manera lo que estaríamos cambiando es el diseño del formulario y no el de la consulta, que es lo que yo quiero, ¿no? El tema es: tengo las tablas "año2001" y "año2002" y una consulta que me da los resultados basada en una de estas tablas. Lo que yo quiero es no tener que entrar en el diseño de la consulta cada vez que quiero cambiar la tabla de origen. Y hacer esto a través de un formulario, en el que aparezcan las tablas disponibles. Ya siento ser tan pesado. Gracias
Vamos a ver, te entiendo lo que quieres decirme, pero me parece que estás queriendo la solución equivocada. Me explico, tienes dos tablas a saber:
Año2001 y año2002
Por ahora, el año que viene tendrás otra más ¿no?, bueno pues debes tener una consulta por tabla o bien ligar el formulario a la tabla (que es lo que pretendo que hagas, por que es lo más fácil y te podrás olvidar para siempre del formulario). Bien create una tabla nueva que se llame:
TABLAS y que solo tenga un campo texto dónde pondrás el nombre de la tablas, ahora tendrías dos registros, el año que viene añadirías otro más etc., luego creas un cuadro combinado ligado a esta TABLA donde podrás elegir la tabla que quieres ver en el formulario, y un botón con el código:
Private Sub xxxxx_Click
me.RecordSource=Cuadro
me.requery
End Sub
Esto es lo que yo haría (más o menos), por supuesto que hay otras soluciones, pero yo esta la veo la más fácil de programar y la que menos te degenerará en tiempo de respuesta.
Gracias de nuevo por responder tan pronto y bien, pero creo que tampoco es lo que yo busco. El tema es que sobre esa consulta que yo quiero cambiar el diseño, tengo más consultas, y por eso lo que quiero es cambiar el diseño de la consulta. ¿Igual es algo que no se puede hacer? Y por eso no quiero hacer una consulta para cada año, porque o si no debería hacer una base de datos completa para cada año. Ya me contarás, y muchas gracias por todo.
Pues si que eres complicado ;-), entonces lo tienes bastante complicado, lo siguiente que podrías plantearte es, como supongo que no querrás tener todo dentro de una tabla (que por cierto sería bastante prudente) podrías hacerte una tabla 'comodín', me explico, tienes tablas:
Año2001, año2002 etc.
Haces una tabla añoxxxx, cuando el año haya finalizado (es decir cuando vayas a generar año2003) cargas en dicha tabla (año2003) los datos de añoxxxx y borras lo que tiene y a empezar año nuevo, basando la consulta en dicha tabla (añoxxxx).
Esto es lo ultimo que se me ocurre, es decir, siempre trabajarías contra añoxxxx y cuando se acabe el año reservar en tabla año2003, 4 o el que toque los datos y limpiar la tabla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas