Access - consulta de eliminación y vinculación

Tengo una base de datos en access en la que la tabla principal es de gente y tengo un campo que es A (Alta) o B(Baja).
Mediante consultas sé quién está de alta y quién de baja, pero mi problema es que la bd tiene ya 2 gb y no puedo meter más datos.
Podría realizar una consulta de eliminación en mi base para eliminar los que tengan B y a la vez crear otra bd con esos datos eliminados.
No sé muy bien si hacerlo con tablas vinculadas o no. La idea sería que cada mes se lanzase la consulta y en la bd principal me dejase sólo los que están de Alta y en la otra me la actualizase, pero no sé si se puede hacer o lo estoy enfocando mal y hay otra forma más sencilla de realizarlo.
1

1 respuesta

Respuesta
1
¿Si te ocupa 2 Gb debe ser porque has metido imágenes en la bd?
Si es así, lo mejor es guardar las imágenes en una carpeta externa a la bd y visualizarlas en los formularios mediante código.
Muchas gracias por tu pronta respuesta, la verdad es que si que tiene imágenes, pero no se como hacer para tenerlas en una carpeta externa a la bd y visualizarlas en los formularios mediante código como tú dices.
Me podrías indicar cómo se hace.
Gracias
Este método es sólo si tienes muchas imágenes. Porque si son pocas es mejor como tu lo haces.
Lo bueno de almacenarlas fuera de la bd es que la imagen que se visualiza en los formularios es la imagen original con toda su calidad y además centrada en el cuadro de imagen.
Ahí van las instrucciones con el código que lo hace posible:
1º Te creas un módulo Módulo1 con el siguiente código:
Option Compare Database
Option Explicit
Public Function DisplayImage(ctlImageControl As Control, strImagePath As Variant) As String   
On Error GoTo Err_DisplayImage   
Dim strResult As String   
Dim strDatabasePath As String   
Dim intSlashLocation As Integer   
With ctlImageControl   
If IsNull(strImagePath) Then   
.Visible = False   
strResult = "No image name specified."   
Else   
If InStr(1, strImagePath, "\") = 0 Then   
' Path is relative   
strDatabasePath = CurrentProject.FullName   
intSlashLocation = InStrRev(strDatabasePath, "\", Len(strDatabasePath))   
strDatabasePath = Left(strDatabasePath, intSlashLocation)   
strImagePath = strDatabasePath & strImagePath   
End If   
.Visible = True   
.Picture = strImagePath   
strResult = "Image found and displayed."   
End If   
End With   
Exit_DisplayImage:   
DisplayImage = strResult   
Exit Function   
Err_DisplayImage:   
Select Case Err.Number   
Case 2220 ' Can't find the picture.   
ctlImageControl.Visible = False   
strResult = "Can't find image in the specified name."   
Resume Exit_DisplayImage:   
Case Else ' Some other error.   
MsgBox Err.Number & " " & Err.Description   
strResult = "An error occurred displaying image."   
Resume Exit_DisplayImage:   
End Select   
End Function   
2ºCreas un formulario y le agregas lo siguiente:
                1º Cuadro de Texto (no tiene origen de datos, es independiente) con el nombre: txtImageNote
                2º Control Marco Imagen con el nombre: IMAGEN
                3º Un cuadro de texto (cuyo origen de datos será el correspondiente al campo que contiene todas las rutas almacenadas en una tabla) que contiene la ruta de la imagen con el nombre: CLIP
3º En el evento On Current (no sé cómo es en español) del formulario que has creado, el siguiente código:
Option Compare Database
Option Explicit
Private Sub Form_AfterUpdate()   
CallDisplayImage   
End Sub   
Private Sub Form_Current()   
CallDisplayImage   
End Sub   
Private Sub txtImageName_AfterUpdate()   
CallDisplayImage   
End Sub   
Private Sub CallDisplayImage()   
Me!txtImageNote = DisplayImage(Me!IMAGEN, Me!CLIP)   
End Sub   
*Los nombres de los tres objetos del formulario los puedes cambiar por los que tú quieras, siemprey cuando también lo hagas en el código; yo les he puesto esos nombres porque son los que utilizo para mi base de datos.   
*Para pegar la ruta de la imagen en el campo te aconsejo el programa ACDSEE: simplemente haciendo Ctrl+c para copiar la imagen y Ctrl+v en el campo, la ruta se pega directamente sin necesidad de teclearla manualmente.
El problema es que tienes que almacenar las rutas de cada imagen en un campo, y si son muchas imágenes tardarías mucho tiempo.
Por todo lo demás tengo que decir que es el mejor método.
La carpeta externa puede ser un pendrive, que es lo que yo utilizo.
Vale, lo que tengo es una base de datos como tú dices con muchas imágenes, y tengo un campo en la tabla que es un objeto ole, de normal yo copio y pego.
Ahora bien, por lo que me dices tengo que borrar ese campo de la base de datos y en el formulario crear un módulo que no sé que es exactamente.
La verdad es que en el tema de programación no lo he hecho nunca.
Lo del módulo tengo que ir desde la base de datos o por dónde, ya me indicarás.
Gracias
Haz una copia de la bd original
Trabaja siempre desde una copia de la bd.
Lo de programar no te preocupes porque yo tampoco sé. El código lo saqué de la ayuda de la página web de microsoft
Dime que access tienes, ¿2007?
Módulo es otro tipo de objeto de ACCESS.
Hay tablas, consultas, formularios, macros y módulos.
Lo que tienes que hacer es crear un módulo nuevo con el nopmbre Módulo1
La base de datos está en 2002-2003, yo actualmente tengo el 2007, pero luego no hay problema porque donde lo voy a instalar que tiene 2002-2003 la guardo en ese formato y ya está.
De todas formas si no te importa ya me dirás que pasos hay que seguir y dónde esta eso de crear módulos, ya que no lo veo por ningún sitio en access.
Gracias
De acuerdo, yo también tengo 2007.
Cuando abres la bd, arriba en la barra de herramientas te pone Home, Create...
En Create te pone Tablas, Consultas, Forms... y Macro con una flecha debajo.
Haces click en la flecha y te debe salir Module.
Entonces copias lo siguiente:
Option Compare Database
Option Explicit
Public Function DisplayImage(ctlImageControl As Control, strImagePath As Variant) As String    
On Error GoTo Err_DisplayImage    
Dim strResult As String    
Dim strDatabasePath As String    
Dim intSlashLocation As Integer    
With ctlImageControl    
If IsNull(strImagePath) Then    
.Visible = False    
strResult = "No image name specified."    
Else    
If InStr(1, strImagePath, "\") = 0 Then    
' Path is relative    
strDatabasePath = CurrentProject.FullName    
intSlashLocation = InStrRev(strDatabasePath, "\", Len(strDatabasePath))    
strDatabasePath = Left(strDatabasePath, intSlashLocation)    
strImagePath = strDatabasePath & strImagePath    
End If    
.Visible = True    
.Picture = strImagePath    
strResult = "Image found and displayed."    
End If    
End With    
Exit_DisplayImage:    
DisplayImage = strResult    
Exit Function    
Err_DisplayImage:    
Select Case Err.Number    
Case 2220 ' Can't find the picture.    
ctlImageControl.Visible = False    
strResult = "Can't find image in the specified name."    
Resume Exit_DisplayImage:    
Case Else ' Some other error.    
MsgBox Err.Number & " " & Err.Description    
strResult = "An error occurred displaying image."    
Resume Exit_DisplayImage:    
End Select    
End Function
Y lo pegas en el módulo. Si sale algo por defecto en el módulo, lo borras y pegas este código. Sólo debe haber este código.
Cuando le pegas el código te vas arriba a file y lo guardas donde pone "Save"
Muchas gracias, lo probaré, y en cuanto tenga todo te contesto y te finalizo y puntúo la respuesta, pero por supuesto que entre la rapidez de la contestación y si funciona será muy buena.
Tranqui.
Eso no es lo importante.
Lo importante es que todos los conocimientos se hagan público en beneficio de toda la comunidad.
Hola, ya he creado el módulo y el cuadro de texto en el formulario con el nombre: txtImageNote
Ahora no entiendo qué quieres decir con Control Marco Imagen y lo siguiente, a ver si por favor me lo aclaras, pues no entiendo muy bien.
Gracias
Cuando estás en diseño de formularios es un control que tiene 2 montañas y el sol
Vale le doy al control de imagen y tengo que darle un tamaño al control y luego me sale el explorador para insertar una imagen, explícate un poco mejor, porque no se cómo hacerlo y tampoco el siguiente paso.
Por cierto el evento On Current supongo que será el primero de la lista que significa Al hacer clic.
Gracias
Cuando te sale el explorador para insertar una foto, lo cierras. No le insertes ninguna foto.
No es al hacer click. Es que yo lo tengo en inglés
A ver si me puedes decir los eventos que tienes.
Debe ser alguno parecido a On Current
Puede ser Al Activar.
Espero que no haya ningún problema, porque tu tienes la versión en castellano.
On Current es Al Activar Registro, que es el primer evento que sale en la lista
Hola, poco a poco nos vamos entendiendo, pero esto me está constando un poquito, ten paciencia
El Marco de Imagen, ya lo he creado como tú dices, pero dónde lo tengo que poner, encima del cuadro de texto 1º.
Y el 3º paso que dices Un cuadro de texto cuyo origen de datos será el correspondiente ..., tengo que crear otro cuadro de texto y dónde lo pongo.
En cuanto a los eventos dependiendo del cuadro que elija me sale:
En el 1º cuadro: txtImagenNote
1º Al hacer clic - 2º Antes de actualizar - 3º Después de actualizar - 4º en datos no guardados - 5º al cambiar - 6º al recibir el enfoque - 7º al perder el enfoque - 8º Al hacer doble clic - 9º al bajar el mouse -10º Al subir el mouse - 11º al mover el mouse - 12º al bajar una techa - 13º al subir una tecla - 14º al presionar una tecla - 15º al entrar - 16º al salir y 17º al deshacer.
En el cuadro de IMAGEN:
1º Al hacer clic - 2º al hacer doble clic - 3º al bajar el mouse - 4º al subir el mouse y 5º al mover el mouse.
¿Tienes email?. Casi sería mejor hacerlo por chat.
Tengo el de (xxxxxx) supongo que por medio del messenger, aunque yo no lo utilizo mucho, pero me conecto
Yo utilizo gmail
Pues no se que decirte, ya que encima me conecto al messenger y no me deja.
¿Es fácil y rápido crearse una cuenta en gmail? Porque si es así me creo una y me conecto.
Una pregunta más, desde dónde me estás ayudando, ya que yo estoy en España y ahora mismo en el trabajo y a las 13 h me voy y luego no podría conectarme hasta las 17,30 horas.
Actualmente son las 12, 25 am
Sí es rápido
Yo estoy en Barcelona. Yo sobre las 17 me iré. Y Hasta el lunes no me conectaré
Hola, ya me he creado la cuenta en gmail.
Es (xxxxxx),
ahora por favor cómo me conecto al chat
A la izquierda pone chat. Debe estar en color verde. Estoy intentando enviarte una invitación.
Donde pone chat, debe estar tu nombre, y en una flecha que hay al lado, le dices que debes estar conectado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas