Formulario único para los mismos campos

En mi trabajo realizo transferencias bancarias

Fecha, Nomina, Rut, Nombre, Monto, Cta. Destino, Banco, Estado

Tengo una tabla para enero, febrero Marzo etc...

Tengo un Formulario para enero, febrero, marzo, abril, etc..

Lo que quiero hacer es un formulario único con el que pueda abrir las tablas de enero, febrero, marzo etc.. Y no crear un formulario para cada mes, porque los datos son los mismos.

Abrir un formulario, cambiar el mes y que se cargue la tabla del mes que corresponde sin tener que pasar por las propiedades y cambiar el origen de los datos

1 respuesta

Respuesta
1

Puedes hacerlo así:

1º/ En tu formulario único (puede ser el de enero y borras el resto), añades un cuadro combinado (cancela el asistente si te sale), lo llamas cboMeses (propiedades->pestaña Otras->Nombre), eliges como tipo de origen de la fila: Lista de valores, y en origen de la fila le pones todos los meses, igual que tienes los nombres de las tablas, entre comillas y separados por punto y coma (;), y le pones Limitar a la lista en Sí:

"Enero";"Febrero";....

2º/ Añades un botón, lo llamas cmdCambiar, y le pones como titulo "Cambiar mes". En el evento "Al hacer click" le generas este código:

Private cmdCambiar_Click()

if Nz(Me.cboMeses,"")="" Then exit sub

Me.Recordsource=Me.cboMeses

Me.requery

End Sub

Dicho esto, creo que tienes mal planteada la estructura de la BD, pues con una única tabla y un formulario te sería suficiente, ya que las 12 tablas que tienen actualmente tienen los mismos campos.

Si trabajas con una tabla y un formulario, la mecánica para "cambiar" de mes sería esta otra:

1º/ Creas una tabla llamada TMeses, con dos campos ID (autonumerico y clave principal) y Mes (texto), y rellenas en ella los meses por orden, para que el ID corresponda al número de mes (1-enero, 2 febrero...)

2º/ Añades en tu formulario un cuadro combinado (cboMeses), pero esta vez le marcas como tipo de origen Tabla/Consulta y coges los valores de la tabla TMeses (los dos campos) y ocultas la columna correspondiente al ID (si lo haces con el asistente es muy fácil). También le pones limitar a la lista en Sí.

3º/ Añades tu botón para cambiar de mes, y le generas este código:

Private cmdCambiar_Click()

if Nz(Me.cboMeses,-1)=-1 Then exit sub

Me.Filter="Month(Fecha)=" & me.cboMeses

Me.FilterOn=True

End Sub

4º/ Para que al abrir el formulario no te cargue todos los registros, si no, por ejemplo los del mes actual, en el evento "Al cargar" de tu formulario" le generas este otro código:

Private Sub Form_Load()

Me.Filter="Month(Fecha)=" & Month(Date)

Me.FilterOn=True

End Sub

Lo estoy haciendo como la segunda opción, pero no entiendo donde van estos campos

Fecha, Nomina, Rut, Nombre, Monto, Cta. Destino, Banco, Estado o en que tabla

La tabla quedaría asì

id, Mes, Fecha, Nomina, Rut, Nombre, Monto, Cta. Destino, Banco, Estado

se supone que debo copiar todos los registros a una misma tabla y cuando filtre se mostraría uno o todos sin son app 700 por mes

Para dejar una sola tabla has de copiar, por ejemplo en la de enero, los registros de las otras 11 (dices que tus 12 tablas tienen los mismos campos)

Luego el formulario te filtraría los registros por el mes del campo Fecha, según el valor del cuadro combinado, o de la fecha actual al abrirlo la primera vez

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas