Es mucho más sencillo hacerlo que explicarlo. Vamos a suponer que tengo una tabla Logos con los campos IdLogo, Ruta, Archivo(aunque éste último no sería necesario). Con ella construyo un formulario, da igual único o continuo( aprovecho para poner también el combinado ElegirLogo)
Cuando pongo el cursor en el control Ruta se abre un "explorador" para que localice el logo que sea
Elijo Adrián y automáticamente
En archivo me pone lo que creo que querías.
Me voy a otro registro
Ahora elijo, por ejemplo, a adrián en el combinado y
Importante, si vas a adaptar el código a tu base, en el editor de Vb pulsa Herramientas - Referencias y activa la casilla Microsoft Office XX.X Object Library. Lo de XX. X es por la versión del Office que tengas instalado.
En el editor de Vb tengo puesta esta función
Public Function buscaArchivo() As String
Dim fDialog As Office.FileDialog
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.AllowMultiSelect = False
.ButtonName = "Seleccionar"
.Title = "Seleccionar el archivo"
.InitialFileName = Application.CurrentProject.Path
.InitialView = msoFileDialogViewDetails
.Filters.Clear
.Filters.Add "All files", "*.*"
If .Show = True Then
buscaArchivo = .SelectedItems(1)
Else
MsgBox "Ha pulsado el botón <Cancelar>."
End If
End With
End Function
En el evento Al recibir el enfoque del control Ruta le tengo puesto
Private Sub Ruta_GotFocus()
If IsNull([Ruta]) Then
Ruta = buscaArchivo
Imagen3.Picture = Ruta
Archivo = Mid([Ruta], InStrRev([Ruta], "\") + 1)
Else
Exit Sub
End If
Archivo.SetFocus
End Sub
En el control Al recibir el enfoque del combinado Elegirlogo
Private Sub ElegirLogo_GotFocus()
ElegirLogo.RowSource = " select archivo from logos group by archivo"
End Sub
Y en el evento Después de actualizar del combinado
Private Sub ElegirLogo_AfterUpdate()
DoCmd.OpenReport "clientes", acPreview
End Sub
Y por último, en el informe Clientes, le tengo puesto un control imagen Imagen13, y en el evento Al dar formato de la sección donde esté ese control( yo lo he puesto en el encabezado de página, pero la puedes poner donde quieras) le tengo puesto
Private Sub SecciónEncabezadoDePágina_Format(Cancel As Integer, FormatCount As Integer)
If CurrentProject.AllForms("logos").IsLoaded Then
Imagen13.Picture = DLookup("ruta", "logos", "archivo=forms!logos!elegirlogo")
End If
End Sub
es decir, que si el formulario Logos( que podría ser en otro formulario cualquiera, pero como te dije aprovecho el mismo) está cargado, que sí lo está ya que "vienes" de él, entonces la imagen 13 "coja" la ruta que figura en la tabla Logos correspondientes al archivo que has elegido en el combinado.
De todas formas, si ves que parece liado, y quieres, repito, si quieres, mándame un mensaje, sólo el mensaje a [email protected] y te mando el ejemplo.
Si lo haces, en el asunto del mensaje pon tu alias Vagojr, ya que si no sé quien me escribe ni los abro.