Guardar imágenes en access y cagar en vba

Necesito de vuestra ayuda.

Como crear un código para que me guarde la imagen en una base de datos (Access) y un código para que me devuelva la imagen a VBA.

Os adjunto el código, supongo que debo hacer algo mal, me puede ayudar alguien por favor.

Private Sub cmd_Anterior_Click()

Rs.MovePrevious 'Nos movemos al registro anterior

    If Rs.BOF Then Rs.MoveFirst: MsgBox "Primer Registro", vbInformation, "Clientes"

        'Image1.Picture = Rs.Fields("Imagen")

End Sub

Private Sub cmd_Eliminar_Click()

Dim Registro As String

If txtNombre.Text = "" And txtDireccion.Text = "" And txtTel.Text = "" And txtCel.Text = "" _

And txtEmail.Text = "" And Image1.Picture = "" Then

        MsgBox "Debe seleccionar un registro", , "Clientes"

    Exit Sub

End If

Registro = txtNombre.Text

    If MsgBox("¿Seguro que desea eliminar a " & Registro & "?" + Chr(13) + "¿Desea proceder?", vbOKCancel) = vbOK Then

        Rs.Delete

        MsgBox Registro & " ha sido eliminado", vbInformation, "Clientes"

        cmd_Primero_Click

    Else

        Exit Sub

End If

End Sub

Private Sub cmd_Guardar_Click()

If txtNombre.Text = "" And txtDireccion.Text = "" And txtTel.Text = "" And txtCel.Text = "" And txtEmail.Text = "" And Image1.Picture = "" Then

        MsgBox "Debe completar todos los campos", , "Clientes"

    Exit Sub

End If

    Rs.AddNew

    Rs.Fields("Imagen") = Image1.Picture

    Rs.Update

    MsgBox "Registro Guardado correctamente", vbInformation, "Clientes"

    cmd_Primero_Click

cmd_Nuevo.Enabled = True

cmd_Guardar.Enabled = False

cmd_Modificar.Enabled = True

cmd_Eliminar.Enabled = True

cmd_Primero.Enabled = True

cmd_Anterior.Enabled = True

cmd_Siguiente.Enabled = True

cmd_Ultimo.Enabled = True

End Sub

Private Sub cmd_Modificar_Click()

If txtNombre.Text = "" And txtDireccion.Text = "" _

    And txtTel.Text = "" And txtCel.Text = "" _

    And txtEmail.Text = "" And Image1.Picture = "" Then

        MsgBox "Debe seleccionar un registro", , "Clientes"

    Exit Sub

End If

    'Rs.Fields("Imagen") = Image1.Picture

    Rs.Update

    MsgBox "Registro Modificado correctamente", vbInformation, "Clientes"

    cmd_Primero_Click

End Sub

Private Sub cmd_Nuevo_Click()

Dim i As Control

    For Each i In Controls

        If i.Name Like "txt*" Then i = Empty

    Next

txtNombre.SetFocus

cmd_Guardar.Enabled = True

cmd_Nuevo.Enabled = False

cmd_Modificar.Enabled = False

cmd_Eliminar.Enabled = False

cmd_Primero.Enabled = False

cmd_Anterior.Enabled = False

cmd_Siguiente.Enabled = False

cmd_Ultimo.Enabled = False

End Sub

Private Sub cmd_Primero_Click()

    Rs.MoveFirst 'Nos movemos al primer registro

        'Image1.Picture = Rs.Fields("Imagen")

End Sub

Private Sub cmd_Siguiente_Click()

Rs.MoveNext 'Nos movemos al siguiente registro

    If Rs.EOF Then Rs.MoveLast: MsgBox "Último Registro", vbInformation, "Clientes"

        'Image1.Picture = Rs.Fields("Imagen")

End Sub

Private Sub cmd_Ultimo_Click()

Rs.MoveLast 'Nos movemos al último registro

        'Image1.Picture = Rs.Fields("Imagen")

End Sub

Private Sub CommandButton1_Click()

'Private Sub cmd_Imagen_Click()

On Error Resume Next

        ArchivoIMG = Application.GetOpenFilename("Imágenes jpg,*.jpg,Imágenes bmp,*.bmp", 0, "Seleccionar Imágen para Reegistro de Clientes")

        Image1.Picture = LoadPicture("")

        Image1.Picture = LoadPicture(ArchivoIMG)

End Sub

        'imag = ThisWorkbook.Path & "\img\" & TextBox1 & ".jpg"

        'On Error Resume Next 'si hay error se saltea la siguiente linea

            'Image1.Picture = LoadPicture(imag)

'End Sub

Private Sub UserForm_Initialize()

Call Conecta 'Crea la conexion

Set Rs = New ADODB.Recordset

Rs. Open "SELECT * FROM Productos", miConexion, adOpenKeyset, adLockOptimistic, adCmdText

        txtNombre.Text = Rs.Fields("Nombre")

        txtDireccion.Text = Rs.Fields("Direccion")

        'Image1.Picture = Rs.Fields("Imagen")

cmd_Guardar.Enabled = False

End Sub

Añade tu respuesta

Haz clic para o