** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Variable en Clausula FROM
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoVariable en Clausula FROM

 Responder Responder
Autor
Mensaje
rafaservi Ver desplegable
Habitual
Habitual


Unido: 18/Noviembre/2010
Localización: España
Estado: Sin conexión
Puntos: 139
Enlace directo a este mensaje Tema: Variable en Clausula FROM
    Enviado: 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.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Enlace directo a este mensaje Enviado: 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


Editado por Mihura - 31/Enero/2020 a las 14:00
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
rafaservi Ver desplegable
Habitual
Habitual


Unido: 18/Noviembre/2010
Localización: España
Estado: Sin conexión
Puntos: 139
Enlace directo a este mensaje Enviado: 30/Enero/2020 a las 23:51
Muchas gracias Mihura.

Voy a probar
Arriba
rafaservi Ver desplegable
Habitual
Habitual


Unido: 18/Noviembre/2010
Localización: España
Estado: Sin conexión
Puntos: 139
Enlace directo a este mensaje Enviado: 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.
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6521
Enlace directo a este mensaje Enviado: 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.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Enlace directo a este mensaje Enviado: 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

Mi web
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6521
Enlace directo a este mensaje Enviado: 31/Enero/2020 a las 13:50
Hola!

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



Editado por mounir - 31/Enero/2020 a las 13:51
Un Saludo.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Enlace directo a este mensaje Enviado: 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.

Access Aplicaciones
Tecsys.es
Arriba
rafaservi Ver desplegable
Habitual
Habitual


Unido: 18/Noviembre/2010
Localización: España
Estado: Sin conexión
Puntos: 139
Enlace directo a este mensaje Enviado: 31/Enero/2020 a las 17:30
Uff !!!

Muchas gracias a todos.
Lo miraré este fin de semana y os cuento.
Arriba
rafaservi Ver desplegable
Habitual
Habitual


Unido: 18/Noviembre/2010
Localización: España
Estado: Sin conexión
Puntos: 139
Enlace directo a este mensaje Enviado: 31/Enero/2020 a las 17:49
No he podido esperar.

Funciona correctamente con RowSource.

Muchas gracias a todos
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable