Foros del Web » Soporte técnico » Ofimática »

vincular fotos en access 2013 por medio de VBA

Estas en el tema de vincular fotos en access 2013 por medio de VBA en el foro de Ofimática en Foros del Web. Buenas noches, estoy intentando elaborar me una base de datos para la cocina manejando recetas, escandallos de platos, etc. y para ello necesito poner fotos ...
  #1 (permalink)  
Antiguo 07/08/2014, 16:48
 
Fecha de Ingreso: agosto-2014
Ubicación: murcia
Mensajes: 2
Antigüedad: 10 años, 4 meses
Puntos: 0
vincular fotos en access 2013 por medio de VBA

Buenas noches, estoy intentando elaborar me una base de datos para la cocina manejando recetas, escandallos de platos, etc. y para ello necesito poner fotos de cada receta. Según he leído ha esto se le denomina vincular fotos al formulario. Tengo el código creado en vba pero cuando ejecuto sale un mensaje que pone "error 7 en tiempo de ejecución: memoria insuficiente". Os pego el código conforme lo tengo hasta hora:

Option Compare Database
Option Explicit

Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type


Public Const OFN_READONLY = &H1
Public Const OFN_OVERWRITEPROMPT = &H2
Public Const OFN_HIDEREADONLY = &H4
Public Const OFN_NOCHANGEDIR = &H8
Public Const OFN_SHOWHELP = &H10
Public Const OFN_ENABLEHOOK = &H20
Public Const OFN_ENABLETEMPLATE = &H40
Public Const OFN_ENABLETEMPLATEHANDLE = &H80
Public Const OFN_NOVALIDATE = &H100
Public Const OFN_ALLOWMULTISELECT = &H200
Public Const OFN_EXTENSIONDIFFERENT = &H400
Public Const OFN_PATHMUSTEXIST = &H800
Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_CREATEPROMPT = &H2000
Public Const OFN_SHAREAWARE = &H4000
Public Const OFN_NOREADONLYRETURN = &H8000
Public Const OFN_NOTESTFILECREATE = &H10000
Public Const OFN_NONETWORKBUTTON = &H20000
Public Const OFN_NOLONGNAMES = &H40000
Public Const OFN_EXPLORER = &H80000
Public Const OFN_NODEREFERENCELINKS = &H100000
Public Const OFN_LONGNAMES = &H200000

Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOPENFILENAME As OPENFILENAME) As Long
Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOPENFILENAME As OPENFILENAME) As Long
Declare Function GetFileTitle Lib "comdlg32.dll" Alias "GetFileTitleA" (ByVal lpszFile As String, ByVal lpszTitle As String, ByVal cbBuf As Integer) As Integer
Public Const OFN_SHAREFALLTHROUGH = 2
Public Const OFN_SHARENOWARN = 1
Public Const OFN_SHAREWARN = 0

Function DialogoComun(ObjForm As Form, FiltroArch As String, TipoArch As String, DirectIni As String) As String
Dim file As OPENFILENAME, sFile As String, sFileTitle As String, lResult As Long, iDelim As Integer

file.lStructSize = Len(file)
file.hwndOwner = ObjForm.Hwnd
file.flags = OFN_HIDEREADONLY + OFN_PATHMUSTEXIST + OFN_FILEMUSTEXIST
file.lpstrFile = FiltroArch & String$(250, 0)
file.nMaxFile = 255
file.lpstrFileTitle = String$(255, 0)
file.nMaxFileTitle = 255
'Path Inicial
file.lpstrInitialDir = ObjForm.RutaInicial 'Environ$(DirectIni)
'Filtro
file.lpstrFilter = TipoArch & Chr$(0) & FiltroArch & Chr$(0)
file.nFilterIndex = 1
'Título del diálogo
file.lpstrTitle = "Open"
lResult = GetOpenFileName(file)
If lResult <> 0 Then
iDelim = InStr(file.lpstrFile, Chr$(0)) esta linea aparece en color amarillo
If iDelim > 0 Then
sFile = Left$(file.lpstrFile, iDelim - 1)
End If
DialogoComun = sFile
End If

End Function

si alguien me pudiera ayudar se lo agradeceré ya que estoy un poco atascado en este proceso
  #2 (permalink)  
Antiguo 07/08/2014, 17:29
Avatar de AtilioNaler  
Fecha de Ingreso: junio-2014
Ubicación: Montevideo
Mensajes: 69
Antigüedad: 10 años, 6 meses
Puntos: 9
Respuesta: vincular fotos en access 2013 por medio de VBA

Yo he creado varias aplicaciones en Access utilizando formularios en los que muestro fotografías. Estos formularios están basados en tablas. Y a las tablas que contendrán imágenes les he creado un campo de tipo Objeto OLE.

Al formulario que mostrará las fotografías hay que insertarle un marco de objeto dependiente. En las propiedades de este marco, en la ficha Datos hay que indicar el Origen del Control que será el campo Objeto OLE de la tabla correspondiente. En las propiedades también se puede especificar si la imagen estará incrustada (formará parte indisoluble del formulario) o vinculada (cualquier modificación en la imagen original se reflejará en la que se vea en el formulario).

Una vez en la vista formulario se hace clic dentro de ese marco y se ejecuta el comando Objeto... del menú Insertar y con la opción Crear desde archivo se indica la ruta del lugar en donde esté almacenada la imagen.

Para hacer esto no es necesario ningún código VBA. A menos, que quieras disponer de un botón que al pulsarlo te ejecute el comando y en ese caso con crear una macro utilizando acciones de Enviar Teclas es todo mucho más sencillo.

Sinceramente no manejo lenguaje VBA por lo que no puedo opinar de esa enorme cantidad de líneas que mostraste. Creo, en mi modesta opinión, que es mucho más sencillo hacerlo con Insertar Objeto.

Espero haber sido de utilidad.
__________________
Leer atenta y detenidamente los mensajes permite una mejor comprensión.

Última edición por AtilioNaler; 07/08/2014 a las 17:32 Razón: Ampliación de la respuesta
  #3 (permalink)  
Antiguo 08/08/2014, 02:45
 
Fecha de Ingreso: agosto-2014
Ubicación: murcia
Mensajes: 2
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: vincular fotos en access 2013 por medio de VBA

Buenos días gracias por tu ayuda, pero te comento para que lo tengas en cuenta cuando vuelvas ha realizar otra tabla con imágenes, los objeto ole que ponemos en las tablas, cuando vamos a manejar datos le va a costar trabajo manipular tanta imagen y datos, por lo que se suele hacer es lo que estoy intentando resolver que es vincular la imagen, es decir, que el usuario seleccione él la imagen como si insertaras una imagen en word por ejemplo.

Muchas gracias de todos modos
  #4 (permalink)  
Antiguo 08/08/2014, 03:35
Avatar de AtilioNaler  
Fecha de Ingreso: junio-2014
Ubicación: Montevideo
Mensajes: 69
Antigüedad: 10 años, 6 meses
Puntos: 9
Respuesta: vincular fotos en access 2013 por medio de VBA

Si lees atentamente mi respuesta verás que la vinculación puede hacerse a través de las propiedades del objeto dependiente:

Código HTML:
En las propiedades también se puede especificar si la imagen estará incrustada (formará parte indisoluble del formulario) o vinculada (cualquier modificación en la imagen original se reflejará en la que se vea en el formulario).
En este caso, la creación de la tabla con su campo Objeto OLE es al solo efecto de que el formulario pueda cargar la imagen y, dentro de sí mismo a través de las propiedades de sus objetos, decidir si la misma será incrustada o vinculada.

Te mando un abrazo y reafirmo mi firma...

PD: ¿Alguien podrá explicarme cómo hacer para que en mis mensajes debajo de la firma aparezca lo que se muestra en los mensajes del resto de los participantes del foro: la expresión Este mensaje: me gustó, ¡gracias!?
__________________
Leer atenta y detenidamente los mensajes permite una mejor comprensión.

Última edición por AtilioNaler; 08/08/2014 a las 03:36 Razón: Error ortográfico

Etiquetas: 2013, access, formula, fotos, medio, vba, vincular
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:23.