cambiar origen de datos a informe |
Responder |
Autor | |
Kublai
Habitual Unido: 11/Julio/2020 Localización: Murcia Estado: Sin conexión Puntos: 162 |
Tema: cambiar origen de datos a informe Enviado: 23/Mayo/2022 a las 17:17 |
Hola. Una vez resuelta la duda anterior, que no sabía utilizar variables en instrucciones SQL, me encuentro con otro problema parecido: Tengo un informe recién creado, copiando otro y cambiándole el nombre, tal como sigue: DoCmd.CopyObject , "Exclusiones " & vejercicio & " iniciadas", acReport, "Exclusiones 2020 iniciadas" donde la variable pública vejercicio proviene de un cuadro combinado de un formulario. Si en el cuadro combinado escojo, por ejemplo, 2022, el nuevo informe se llama "Exclusiones 2022 iniciadas" Ahora mismo tiene como origen de datos la query que era origen de datos del informe copiado (el de 2020). Quiero cambiar el origen de datos a la query recién creada con el nuevo vejercicio: dim nomConsulta_iniciadas, nomInforme_iniciadas nomConsulta_iniciadas ="Exclusiones " & vejercicio & " iniciadas" nomInforme_iniciadas = "Exclusiones " & vejercicio & " iniciadas" y hago ésto: Dim informe as report For Each informe In Reports If informe.Name = nomInforme_iniciadas Then informe.RecordSource = nomConsulta_iniciadas Exit For End If Next informe No funciona. El informe sigue con los datos del informe original desde el cual se copió. Seguro que algo (o mucho) he hecho mal... |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 24/Mayo/2022 a las 00:01 |
No puedes asignar el recordsource a la brava como haces tu. Para que quede "fijado" debes abrir el informe en modo diseño (pueden hacerlo en modo oculto), cambiar el Recordsource y cerrar el informe guardando. (El siguiente comentario es desde el desconocimiento de tu estructura porque he leído tus últimos mensajes en diagonal) Tengo la sensación que no manejas una estructura de datos correcta y, menos aun, los mecanismos para manejar la información. Parece que estas replicando consultas y reports que, en esencia tienen los mismos campos y tipo de información y dónde lo único que es diferente es el año. Ese tipo de información se acostumbra a manejar con una sola tabla que contiene un campo Año y con filtros en las consultas y resto de objetos. Por otro lado la copia de objetos conseguirá un "engorde" continuo de la base de datos. Cada vez que se crea un objeto la base de datos crece para darle cabida. Cuando se elimina ese objeto, la base de datos no encoge. Tu parece que estas creando objetos continuamente. Lo dicho, tengo la sensación que no lo manejas de forma eficiente. Un saludo
|
|
Kublai
Habitual Unido: 11/Julio/2020 Localización: Murcia Estado: Sin conexión Puntos: 162 |
Enviado: 24/Mayo/2022 a las 09:10 |
La verdad es que llevas toda la razón. No es una base de datos nada eficiente.
Me la planteé en su día dividiendo en tablas, consultas, etc por años, con lo que cada año aumenta en un montón de objetos. Me temo que te voy a hacer caso y voy a rehacerla totalmente, unificando objetos y filtrando datos, como dices. Me surgirán un montón de dudas porque, como resulta obvio, soy muy novato en ésto. Agradeceré tengais paciencia conmigo... Un saludo.
|
|
Kublai
Habitual Unido: 11/Julio/2020 Localización: Murcia Estado: Sin conexión Puntos: 162 |
Enviado: 24/Mayo/2022 a las 14:56 |
Xavi: estoy siguiendo tus consejos y estoy intentando unificar en una sola tabla lo que antes eran una tabla por año.
Para ello, añado un campo EJERCICIO (texto corto) en cada tabla de año y estoy intentando rellenar dicho campo en todos los registros con la misma cadena, pero algo no hago bien: Sub rellenar_campo_año() vejercicio = str(InputBox("Elegir ejercicio: ")) 'MsgBox vejercicio Dim master_excl As dao.TableDef Dim nom_master_excl nom_master_excl = "Master_exclusiones_ " & vejercicio 'MsgBox nom_master_excl For Each master_excl In CurrentDb.TableDefs If master_excl.Name = nom_master_excl Then Dim rst As dao.Recordset Set rst = CurrentDb.OpenRecordset(" & master_excl & ") rst.MoveFirst Do Until rst.EOF rst.Edit rst!EJERCICIO = vejercicio rst.Update rst.MoveNext Loop rst.Close Set rst = Nothing End If Next End Sub |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 24/Mayo/2022 a las 15:15 |
Hola,
Antes de nada no indicas cual es el error obtenido.
Punto 1: si es un ejercicio y, por lo tanto, un año (supongo), ¿porqué un campo de texto corto? Yo utilizaría un Numero entero. Punto 2: Si vas a actualizar los registros de una tabla que cumplen un criterio, ¿porqué no utilizas una consulta de actualización? Punto 3: En algunas ocasiones la apertura de un recordset dónde se utilice el nombre de la tabla ma ha dado problemas para actualizar datos. Desde hace muchisimo tiempo me acostumbre a abrir un recordset sobre una consulta: Set rst = CurrentDb.OpenRecordset("SELECT * FROM UnaTabla") Este punto 3, si utilizas una consulta de actualización, ya no tiene validez para este caso concreto Punto 4: aplicando todo lo anterior se podría llegar a conseguir hacerlo todo en muy pocas líneas: - Declaras la variable intEjercicio - Pides valor con InputBox - Lanzas consulta de actualización 3 líneas si obviamos errores Punto 5: para practicar, podrias crear una función que haga eso tomando el ejercicio como parametro. Function CambiaAños(intAño As Integer) ' Aquí haces los pasos indicados pero, en lugar de pedir el año, lo tomas del argumento End Function Un saludo |
|
Kublai
Habitual Unido: 11/Julio/2020 Localización: Murcia Estado: Sin conexión Puntos: 162 |
Enviado: 24/Mayo/2022 a las 18:52 |
Ok.
Mañana pruebo todo lo que me has explicado, cuando esté en el trabajo, ya que no puedo sacar de allí los datos. Muchas gracias. Un saludo.
|
|
Kublai
Habitual Unido: 11/Julio/2020 Localización: Murcia Estado: Sin conexión Puntos: 162 |
Enviado: 26/Mayo/2022 a las 18:22 |
Gracias por la ayuda.
Ya se puede cerrar el hilo.
|
|
Kublai
Habitual Unido: 11/Julio/2020 Localización: Murcia Estado: Sin conexión Puntos: 162 |
Enviado: 25/Julio/2023 a las 09:25 |
Por favor, cerrad este hilo
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |