Imprimir página | Cerrar ventana

Variable en Clausula FROM

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84977
Fecha de impresión: 27/Marzo/2026 a las 06:03


Tema: Variable en Clausula FROM
Publicado por: rafaservi
Asunto: Variable en Clausula FROM
Fecha de publicación: 30/Enero/2020 a las 22:19
Buenas.

Tengo un formulario que tiene a su vez un subformulario que muestra los datos de la tabla Factura.

Me gustaría mediente un Cuadro Combinado, colocado en el formulario principal, seleccionar un Año (2016, 2017, 2018, 2019, 2020, etc) de manera que en el subformulario muestre las Facturas del año que se elija.
Cada año está en una tabla: Factura2016, Factura2017, ..., Factura2020   (Por volumen de registros cada tabla tiene las facturas de su año)
Por ello, pregunto si el Origen del Registro del Subformulario podría tener una SELECT con una variable en la Clausula FROM ...
SELECT * FROM cTabla;               'Donde cTabla es una variable: Factura2016 o Factura 2017 o ... .
o SELECT * FROM FuncTabla();   ' Donde la Función FuncTabla da como valor el nombre de la Tabla que se desea abrir

¿O habría alguna otra froma de realizarlo?

Muchas gracias y un saludo.



Respuestas:
Publicado por: Mihura
Fecha de publicación: 30/Enero/2020 a las 23:19
Con VBA, bastaría con asignarle al RowSource del subformulario:

Me.Sbf.Form.RowSource RecordSource= "SELECT * FROM " & NombreTabla

siendo NombreTabla la variable que contiene el nombre de la tabla deseada.


Ed. Modifico dejando RecordSource


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: rafaservi
Fecha de publicación: 30/Enero/2020 a las 23:51
Muchas gracias Mihura.

Voy a probar


Publicado por: rafaservi
Fecha de publicación: 31/Enero/2020 a las 09:51
Buenos días Mihura.

Algo no hago bien porque no sale.
He probado... poniendo el siguiente código al Actualizar el Cuadro Combinado (AñoFactura) que tengo en el Formulario Principal seleccionando el año que se corresponderá con la Tabla en cuestión y da error.

Private Sub AñoFactura_AfterUpdate()

    Dim cTabla as String

    Select Case Me.AñoFactura
        Case 1: cTabla="Factura2016"
        Case 2: cTabla="Factura2017"
        Case 3: cTabla="Factura2018"
    End Select

    Me.SbF.Form.RowSource = "SELECT * FROM " & cTabla

End Sub

En el SubFormulario no tengo definida ninguna tabla en apartado Origen del Registro. Pero sí tengo indicado los campos, ya que coinciden en nombre y definición para cada una de las tablas.


Publicado por: mounir
Fecha de publicación: 31/Enero/2020 a las 09:57
Hola!

Como te comentó Mihura, Crea una variable "cTabla", algo así:-

Dim cTabla As String
cTabla = "Factura" & Me.AñoFactura
Me.SbF.Form.RowSource = "SELECT * FROM " & cTabla
Me.SbF.Form.Requery


-------------
Un Saludo.


Publicado por: xavi
Fecha de publicación: 31/Enero/2020 a las 12:32
Creo que hay un pequeño lío entre el origen de la fila (RowSource) del cuadro combinado y el origen del registro (RecordSource) del subformulario.- Y lo voy a simplificar y "generalizar a futuro", ya puestos. Tomando como base que los primeros datos son del 2016 y que cada valor (1, 2, 3) sumará un año:

Me!SbF.Form.RecordSource = "SELECT * FROM Factura" & 2015 + Me!AñoFactura 

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: mounir
Fecha de publicación: 31/Enero/2020 a las 13:50
Hola!

Que razón tiene Xavi, no había leido con detenimiento lo que puso rafaservi!!!



-------------
Un Saludo.


Publicado por: Mihura
Fecha de publicación: 31/Enero/2020 a las 13:59
El que se ha liado con RowSource/RecordSource he sido yo ... Ouch




-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: rafaservi
Fecha de publicación: 31/Enero/2020 a las 17:30
Uff !!!

Muchas gracias a todos.
Lo miraré este fin de semana y os cuento.


Publicado por: rafaservi
Fecha de publicación: 31/Enero/2020 a las 17:49
No he podido esperar.

Funciona correctamente con RowSource.

Muchas gracias a todos



Imprimir página | Cerrar ventana