Tabla MSysResources |
Responder |
Autor | |
fredy8alc
Asiduo Unido: 19/Abril/2016 Localización: España Estado: Sin conexión Puntos: 239 |
Tema: Tabla MSysResources Enviado: 06/Abril/2020 a las 19:59 |
Buenas tardes: Me ha sorprendido ver que una base de datos pesaba casi 80 Mb. En ella tengo cuatro imágenes jpg compartidas que uso en varios informes. He abierto la tabla MSysResources y veo que dos de esas imagenes se han ido "clonando" añadiendo un número al final del nombre Logo1, Logo2, Logo3..... y así hasta crear más de cincuenta y con la otra imagen Sello igual. He borrado todos estos duplicados y la base ha vuelto a pesar los 12 Mb que ocupaba antes. La pregunta es evidente: Porqué se han generados todas esas copias de esas dos imagenes. La base de datos se repara y compacta al cerrar pero, a pesar de ello, ha ocurrido. Alguien me pueda dar una pista de porque sucede esto y, sobre todo, como corregirlo para que no vuelva a ocurrir. Muchas gracias. Pido a los administradores que me cierren los hilos que he pedido cerrar. Gracias.
|
|
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: 14738 |
Enviado: 06/Abril/2020 a las 20:51 |
Hay un par de posibles motivos que tengo detectados
- si en algún sitio del código haces una asignación de la propiedad Picture mediante VBA a un control dónde la imagen es compartida - si has hecho una copia del formulario Yo tengo la precaución de revisar después de cada modificación de formularios para ver si me ha creado "copias" 1_nombrefichero, 2_nombrefichero, etc. y las elimino. Un saludo
|
|
Chea1
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
Moderador Unido: 20/Noviembre/2005 Localización: España Estado: Sin conexión Puntos: 4143 |
Enviado: 06/Abril/2020 a las 21:40 |
Otra posibilidad es que en vez de seleccionar una imagen compartida de la propia BD, hayas seleccionado varias veces la misma imagen desde una carpeta.
En la cinta de opciones Diseño->Insertar imagen te muestra una galería de las imágenes compartidas y un icono de carpeta con "Examinar". Si seleccionas una una imagen de la galería, estás aprovechando una imagen compartida, pero si seleccionas una imagen en "Examinar" y luego la pones como compartida, estás añadiendo una nueva imagen a MsysResources. |
|
fredy8alc
Asiduo Unido: 19/Abril/2016 Localización: España Estado: Sin conexión Puntos: 239 |
Enviado: 07/Abril/2020 a las 18:10 |
Siempre que he metido una imagen en un informe ha sido una imagen compartida. No creo haber hecho copias del formulario. Estaré atento para ver si descubro porqué puede ser. Y ahora me surge una pregunta. En el botón para salir de la aplicación, ¿se podría incluir el código que borrase estos registros de la tabla MSysResources? No creo que sea muy complicado para vosotros. Gracias. |
|
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: 14738 |
Enviado: 07/Abril/2020 a las 18:30 |
Tan complicado como una consulta de eliminación de datos.
Ahora bien, la próxima apertura de la base de datos ya no mostrará ninguna imagen.
|
|
fredy8alc
Asiduo Unido: 19/Abril/2016 Localización: España Estado: Sin conexión Puntos: 239 |
Enviado: 07/Abril/2020 a las 18:53 |
Hombre yo solo pretendo elinar aquellas cuyo nombre comienze por un número. ¿Es eso posible?
|
|
Dabellaso
Asiduo Unido: 18/Noviembre/2012 Localización: España Estado: Sin conexión Puntos: 338 |
Enviado: 07/Abril/2020 a las 19:56 |
Usando una clausula Where similar a esto IsNumeric(Left([Name], 1)) pero... y si algún otro recurso tiene en su nombre un numero al principio sin ser por ello un recurso duplicado?
Editado por Dabellaso - 07/Abril/2020 a las 19:56 |
|
El saber no ocupa lugar, sólo tiempo
|
|
fredy8alc
Asiduo Unido: 19/Abril/2016 Localización: España Estado: Sin conexión Puntos: 239 |
Enviado: 07/Abril/2020 a las 21:02 |
Yo no tengo en la tabla MSysResources ningun registro que tenga como primer caracter del nombre un número. Por lo tanto, entiendo que, como todos los que el sistema, por los motivos que sea, genere nuevos van a tener un número como primer caracter, ya que serán copia de otro existente, los puedo borrar y eso es lo que pretendo. Pero como lo pongo en una consulta de eliminación? Para ejecutar esa consulta antes de salir del programa. Edito: He puesto en la consulta de eliminación Eliminar donde: EsNum(Izq([Name];1)) pero no lo borra. No da error, parece que funciona, pero el archivo sigue ahí.
Editado por fredy8alc - 07/Abril/2020 a las 21:12 |
|
Dabellaso
Asiduo Unido: 18/Noviembre/2012 Localización: España Estado: Sin conexión Puntos: 338 |
Enviado: 07/Abril/2020 a las 21:45 |
Ni que decir tiene, que Dicho esto, comprueba que la consulta arroja los resultados que deseas antes. Hazlo creando una consulta de selección normal con esa cláusula Where. Si los resultados son correctos, prueba a lanzar la consulta de eliminación (siempre en una copia de tu db origina) Prueba también a cambiar los atributos de la tabla quitándole el atributo de sistema, y/o el de oculto. Podrás dejarlos como estaban después de "limpiar" la tabla Lo que me resulta raro es que no recibas ni el aviso previo al borrado (Eso indica que: o no borró, o tienes los avisos desactivados), ni tampoco recibas error alguno. Puedes poner la consulta tal y cómo la tienes? |
|
El saber no ocupa lugar, sólo tiempo
|
|
fredy8alc
Asiduo Unido: 19/Abril/2016 Localización: España Estado: Sin conexión Puntos: 239 |
Enviado: 09/Abril/2020 a las 18:23 |
Buenas tardes. Ya he descubierto como se generan estos archivos. Cada vez que abro un informe se ejecuta este código: Private Sub Report_Load() If (Forms!Verificado!MeterImagen = -1) Then Me.Picture = getImageFromMsys("ImagenFondo") Else Me.Picture = "" End If End Sub Aunque la imagen que mete se llama ImagenFondo, cada vez que se abre el informe se genera, en la tabla MSysResources, un nuevo registro que inserta la imagen pero con nombre: 1_tmp, 2_tmp, 3_tmp .....etc. Pido ayuda para: 1 evitar que se generen eso registros 1_tmp, 2_tmp, etc 2 si no es posible evitar que se generen, borrarlos al salir del informe (si es posible) 3 si no es posible borrarlos al salir del informe, borrarlos al cerrar el programa. Por favor una ayudita. Gracias. Edito para decir que: He puesto este código en el evento Al cerrar Private Sub Report_Close() Dim SQL As String SQL = "Delete MSysResources.Name FROM MSysResources WHERE MSysResources.Name='tmp' Or MSysResources.Name = '1_tmp'" DoCmd.RunSQL SQL End Sub y se borra el registro creado si se llama tmp o 1_tmp pero me gustaria no tener que borrarlo y, simplemente, que no se crease Alguien me puede decir como Gracias. Editado por fredy8alc - 09/Abril/2020 a las 18:46 |
|
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: 14738 |
Enviado: 10/Abril/2020 a las 11:27 |
Para utilizar una imagen compartida en un control imagen es tan "simple" como asignarle a la propiedad Picture el nombre directamente de la imagen.
Me.Picture = "ImagenFondo" Siendo ImagenFondo el valor del campo Name del registro de la tabla MSysResources. De esa forma no se crea el nuevo registro. Un saludo
|
|
fredy8alc
Asiduo Unido: 19/Abril/2016 Localización: España Estado: Sin conexión Puntos: 239 |
Enviado: 10/Abril/2020 a las 12:03 |
Muchas gracias Xavi. Efectivamente, así ya no se crea ese nuevo registro. Pero, porque con el código Me.Picture = getImageFromMsys("ImagenFondo") se crea ese registro tmp? Saludos a todos.
|
|
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: 14738 |
Enviado: 10/Abril/2020 a las 12:57 |
La función getImageFromMsys no es estándar por lo que difícilmente podemos saber lo que hace.
|
|
fredy8alc
Asiduo Unido: 19/Abril/2016 Localización: España Estado: Sin conexión Puntos: 239 |
Enviado: 10/Abril/2020 a las 13:23 |
OK Muchas gracias. Pues solucionado el tema. Podemos cerrar este hilo. Salud y saludos.
|
|
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 |