Como insertar imágenes en un registro de access 2003

Quisiera saber como hacer para colocar una imagen en un registro en access 2003, ta que en una base de datos que tengo de empleados quisiera colocar sus fotos.
Lo he tratado de hacer mediante OLE pero se me ha hecho imposible debido a que se me genera un mensaje de tratar de iniciarl el servidor OLE fuera del servidor.
Cualquier apunte o referencia será agradecida ya que no dispongo de material ni tampoco ningún dato de la red ya esta solamente hace referencia a OLE.
Respuesta
1
No tengo ni idea de visual basic pero hace tiempo encontré este código en la página de microsoft y te aseguro que funciona, es más complicado que tu código. Lo utilizo para mis bases de datos:
Lo único que tienes que hacer es crear en la tabla un campo que contiene la ruta de las imágenes almacenadas en una carpeta externa (p. ej. un pendrive, es lo que utilizo yo).
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, siempre y 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.
Si lo quieres más fácil utiliza este:
imagen.picture=ruta
Imagen es el cuadro de imagen que tienes que crear en el formulario.
Ruta es el nombre del campo que contiene la dirección donde se encuentra la imagen.
Con el programa acdsee puedes copiar las rutas fácilmente: seleccionando la imagen ctr+c y ctrl+v en el campo ruta.
Y acuérdate de poner en origen de datos del cuadro de imagen el nombre del campo que contiene la ruta, es decir, ruta.

3 respuestas más de otros expertos

Respuesta
3

Supongamos que tienes una tabla Empleados, con(por ejemplo) Idempleado, Nombre, etc, Foto, Si en una carpeta(muy aconsejable, luego te digo porqué) tienes las fotos de ellos asi, Pepe.Jpg, Carlos.Jpg, etc en el campo Foto de cada registro pon simplemente Pepe, Carlos. Luego en el formulario añade un control imagen y en sus propiedades-otras-nombre ponle ImagenFoto. Luego, en las propiedades-eventos-Al activar registro del formulario, crea un procedimiento de evento y entre Private Sub y End Sub escribe

Dim Ruta As String
Ruta = "c:\users\cabarcos\documents\borrar\" & [Foto] & ".jpg"

If Not IsNull(Me.Foto) Then

   Me.Imagenfoto.Picture = Ruta

Else

    Me.Imagenfoto.Picture = ""

End If

Lógicamente la ruta la tienes que cambiar por la tuya, a la carpeta donde están las fotos.

Te decía que es aconsejable poner las fotos en otra carpeta, ya que si las pones directamente en la tabla como objeto OLE, "engorda" mucho y cuanto más gorda más lenta.

También podrías poner un objeto filedialog(explorador) para localizar la foto e insertar el nombre directamente en el campo, o insertar la ruta, etc. Si te interesa dímelo

Respuesta
1
Hay otra manera
Pon la dirección de la foto en un campo en la misma tabla de personal
Y en el form pon un control picture y llamalo imagen
coloca en el evento current del form
imagen.picture = campopath
Hola gracias por tu respuesta resulta que al hacer eso me pasa lo siguiente:
Coloco la dirección de la foto en un campo extra en la tabla empleados:
D:\Proyecto dvd (también probé agregando el nombre de la foto)
En el diseño agrego una imagen y en generar evento coloco en current del formulario
image22.picture = campopath
Y resulta que en el diseño esta la imagen, pero cuando lo ejecuto no.
¿Sabe de alguna página donde haya un tutorial o ejemplo?
Desde ya le agradezco su disposición
Recuerda usar el nombre de tu campo en vez de campopath
Respuesta
1

Usa imágenes GIF

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas