Recorrer registros de un subformulario

Necesito sacar un código que me vaya recorriendo los registros de un subformulario. El motivo es que necesito comprobar si un campo es nulo, para que me ponga un valor en otro campo. El campo que tiene que mirar si es nulo es Imagen1, y el campo a poner el valor "" es ImagenFoto1.

Si necesitáis que os pase la base de datos, me lo decís. He intentado implementar algún código que he visto por ahí, pero no me ha funcionado.

1 respuesta

Respuesta
1

No necesitas ningún código, puedes hacerlo "de un tacada" con una consulta de actualización.

Creas una consulta de selección sobre la tabla

Seleccionas el campo

Cambias a consulta de Actualización

En Actualizar a, pones ""

Y en criterio pones Nulo, o EsNulo, o Es Nulo, o como quiera que te lo admita tu versión de Access.

Un saludo.


Me falló la respuesta: tienes que seleccionar los dos campos, en Imagen1 pones el criterio y en el otro el valor a actualizar ("")

¡Hola! Muchas gracias por tu respuesta. La he probado, pero no es lo que busco. Mi problema es que me muestra una mariposa como imagen predeterminada, y por eso de buscar una solución. Si pongo "", me muestra la maldita mariposa. Además, esta imagen aparece en los nuevos registros. No sé cómo hacer para que no aparezca. Si tu tuvieras idea, te lo agradecería. Si necesitas la base de datos para que sepas cómo lo tengo hecho, la adjunto.

Saludos.

Por lo que comentas, me parece que tu problema no está en que el campo sea nulo o esté en blanco (""), sino más bien en el código que usas para mostrar las imágenes, que por lo que intuyo, hace que si el campo está vacío o en blanco, te pone la imagen por defecto...

¿Y eso cómo lo arreglo? Este es el código que tengo ahora mismo:

Public Function buscaruta() As String
Dim fDialog As Office.FileDialog
Dim puntoCorte As Integer
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.AllowMultiSelect = False
.ButtonName = "Seleccionar"
.Title = "Seleccionar la ruta"
.InitialFileName = Application.CurrentProject.Path & "\Imagenes\"
.InitialView = msoFileDialogViewDetails
.Filters.Clear
.Filters.Add "Imagenes", "*.jpg; *.png; *.bmp"
If .Show = True Then
buscaruta = .SelectedItems(1)
Else
MsgBox "Ha pulsado el botón <Cancelar>."
End If
End With
puntoCorte = InStrRev(buscaruta, "\")
buscaruta = Right(buscaruta, Len(buscaruta) - puntoCorte)
End Function

NO, ese no es el código al que me refiero. Es es para abrir una ventana de dialogo y seleccionar un archivo de imagen, no para mostrar la imagen en el control imagen.

Deberías tener un código parecido a este:

If Nz(Me.RutaFoto,"")="" Then

Me.Imagen.Picture="Mariposas.jpg" 'Carga la imagen por defecto

Else

Me.Imagen.Picture=Me.RutaFoto

End If

Tengo puesto, en ImagenFoto1, en el origen de control, =fncRutaCarpetaImg() & [Imagen1], tal y como puedes ver en la imagen. Ese módulo es este:

Public Function fncRutaCarpetaImg() As String
Const nombreCarpetaImagenes As String = "Imagenes"
'Simplemente creamos la ruta relativa a la carpeta de imágenes, que será
'el valor que nos devolverá la función
fncRutaCarpetaImg = Application.CurrentProject.Path & "\Imagenes\" & "" & ""
End Function

El código que propones, ¿dónde tendría que ponerlo?

Yo no te propongo ningún código, simplemente hago suposiciones, porque desconozco tu BD...

La función que pones, simplemente devuelve una cadena de texto con la Ruta a la carpeta donde tienes tu archivo Access y le añade "\Imagenes\ (por cierto, lo que le sigue (& "" & "") te sobra), por ejemplo: C:\Mis Cosas\Imagenes\

Como en el origen de control le pones lo que comentas, le estás diciendo que te muestre la foto que está en esa carpeta con el nombre que contiene el campo, por ejemplo:

C:\Mis Cosas\Imagenes\Ferrrari.jpg

Si el campo Imagen1 contiene un Nulo o una cadena vacía (""), no te debería mostrar nada, salvo que en algún sitio le tengas como imagen predeterminada la de la mariposa, o se la asignes en algún otro código o macro.

MI presunción es que tienes algo en la propiedad Imagen de la pestaña Formato de tu control ImagenFoto1. Con borrarlo, ya lo solucionas

Sí, ya lo he arreglado. Como te decía, tenía en el origen de control. Al final, he añadido ese código que me has dicho al cargar en el subformulario, quitando la parte de Else, y ya funciona.

Muchas gracias. Un saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas