Manejar imágenes en la base de datos

Ojala me puedan ayudar en lo siguiente:
Pasa que, bueno, empecé a manejar access 2007 y es muy útil al momento de subir imágenes porque está la opción de adjuntar. En esa opción puedo adjuntar más de una imagen para un solo registro, cosa que me es muy útil.
Pero resulta que ahora tengo dos problemas: el primero es que quiero compartir esta base de datos con algunas personas que manejan access 2003, y no es compatible, por lo mismo que no tienen las mismas funcionalidades, y además, como deben saber, al momento de guardar como un archivo *.mdb, o sea 2002-2003, no lo deja guardar. Averigüé sin éxito un paquete de compatibilidad, pero sólo encontré el runtime access y algo para expertos... En fin no me sirvió...
El otro problema que tengo a raíz de este mismo, es que intento montar las imágenes como "objetos OLE", pero la verdad es mi primera vez con access, y necesito montar más de una imagen para un sólo registro y no lo he logrado. Quisiera tener una manito ayuda, es bastante urgente e importante saber esto lo más pronto posible.
Agradezco muchísimo la colaboración y ayuda que me puedan brindar.
Respuesta
1
Lo único que tienes que hacer es crear otra tabla que vincule cada registro con las imágenes, de esa forma podrás agregar diferentes imágenes para cada registro.
Te aconsejo que en lugar de insertar las imágenes como objeto ole, lo hagas almacenándolas en una carpeta externa, la ruta de la imagen se guarda en un campo de la tabla. Si las insertas como objeto ole, el volumen de la base de datos se te disparará mucho si tienes muchas imágenes.
Ahí va el código que hace posible que la imagen se vea en el formulario mediante la ruta almacenada en un campo:
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.
Gracias mkelangelo, intentaré hacerlo. Te cuento que antes de que me respondieras, de nuevo cree las tablas en 2003 y las adjunté como objetos OLE, y cuando lo voy a probar en otro PC que tiene ese office, pasa que se abre las tablas pero cuando voy a intentar ver las imágenes me sale lo siguiente: "Microsoft Office Access no puede encontrar un servidor OLE o una biblioteca de vínculos dinámicos (DLL) indispensable para la operación OLE. Es posible que el servidor OLE o el archivo DLL no estén registrados. Para registrarlos vuelva a Instalarlos". Yo supongo, aunque no sé mucho del asunto, que tiene que ver con la instalación del Office.
Creo que ya estoy sobre el tiempo y esto me tiene un poco estresada. Agradezco muchísimo tu ayuda, de verdad.
Soy autodidacta y algunas cosas tampoco las tengo muy claras. Quizás el fallo se deba a lo que tu dices. Pero si de verdad quieres adjuntar imágenes, la mejor forma es la que te he explicado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas