Tengo el problema de manejar muchas imágenes en access 2007, los datos adjuntos no me resuelven el problema ya que de todas formas cargan la base de datos, ¿hay alguna forma de jalar las imágenes desde el disco duro sin que se recargue la base?
1 Respuesta
Respuesta de mkelangelo
1
1
mkelangelo, -Experto en Hard Rock, Rock progresivo
Sí que se puede. Consiste en almacenar la ruta de la imagen en un campo. Es algo complicado, pero yo sé hacerlo, aunque explicarlo por escrito puede ser difícil de entender.
mkelangelo, muchas gracias por haber tomado mi pregunta, si te fuera posible escribirmelo te lo agradecería, si no lo entiendo te lo hago saber. Marpor
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.