Trabajar con tablas de diferentes ejercicios vba access

Si yo tengo el código en los formularios que apuntan a la tabla principal determinada, llámese por ejemplo tblProductos, y guardo la tabla por cada año, para tener todos los registros de cada año en su correspondiente tabla, tblProductos2021, tblProductos2022,,, etc ahora me surge la duda de cómo podría adecuar el código que tengo en los formularios. El origen de registros del formulario es sencillo ¿pero el código dentro de él que siempre apunta a una tabla concreta? ¿En estos casos cómo se suele trabajar, qué suelen hacer?

2 respuestas

Respuesta

Joder, vaya explicación. Si tengo el formulario Pedidos, que te lo pongo tabular para que se vea mejor y tengo una tabla Pedidos2021 y otra Pedidos 2022, a medida que voy escribiendo

Me va pasando a su respectiva tabla el registro de cada año

En este caso, ya que no sé como es tu formulario, en el evento Después de actualizar del cuadro de texto Cliente le tengo puesto

Private Sub Cliente_AfterUpdate()
DoCmd.SetWarnings False
Dim s As String
s = "Pedidos" & "" & Right(FechaPedido, 4)
DoCmd.RunSQL "insert into " & s & "(fechapedido,cliente)values(fechapedido,cliente)"
End Sub

Es decir, que primero comprueba el año de la fecha del pedido y en función de él, te ingresa ese registro en una u otra tabla.

También puedes poner la s como

s = "Pedidos" & "" & Year([FechaPedido])

Respuesta
-1

Si todo funciona y solo falta ese detalle, un combo con los nombres de las tablas y seleccionado uno se regenera el origen de datos.
Por defecto (al abrir el formulario) se utilizaría como referente el ultimo del combo (que se supone que apunta a la más reciente).

Sí, gracias, eso había pensado para el origen del registro pero es que dentro del formulario hago referencias al propio nombre de la tabla. Supongo que esas referencias tendría que hacerlas con una variable para que en lugar de poner "tblProductos", fuera algo así como "tblProductos" & variable del combo, no?. ¿Se le ha presentado alguna vez esta casuística?

La variable es una opción, pero no se necesita disponiendo del dato en el combo.

El combo puede tener mas de una columna (el verdadero nombre de la tabla en una y en otra el año), se asigna como columna predeterminada la que nos interese (por ejemplo la que tiene el nombre real de la tabla) y 'la variable' será Me.[nombre del combo]

Otra opción es que en el combo solo estén los años y se reconstruya el nombre de la tabla: ("tblProductos" & Me.[nombre del combo]).

Dado que los datos del combo serán pocos (y se pueden obtener de forma sencilla), la opción de tener una columna y utilizarla para regenerar el dato es mas pesada que simplemente tener dos columnas y directamente obtener ese mismo dato.

Utilizar variables para obtener datos es un recurso que se utiliza bastante en la programación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas