Para Nilharto. Respuesta de BD con imágenes
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.
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.
1 Respuesta
Respuesta de nilharto
1