none
Guardar imagenes en carpetas RRS feed

  • Pregunta

  • Buenas

    Soy nuevo de VB y Acess

    Necesito guardar una imagen en una base de datos de acces pero que esta se guarde en una carpeta hecha con acces

    Ejemplo agrego una imagen y access genera una carpeta y la guarda en la carpeta generada.

    C:/BD/NOMBREDELCLIENTE/IMAGENES/IMAGEN.PNG

    Serian de mucha ayuda, por favor

    sábado, 7 de mayo de 2016 0:57

Respuestas

  • Hola,

    [-] .... pero que esta se guarde en una carpeta hecha con acces

    Tendrías que crear la carpeta con VB.Net, puedes usar : (Imports System.IO)

    Directory.CreateDirectory("C:\BD\NOMBREDELCLIENTE")

    Y en tu BD Access en un campo de tu tabla guardaría la ruta de la imagen apuntando a esa carpeta, algo así :

    IMAGENES\IMAGEN1.PNG"

    Y al mostrarlo combinas los path.

            'Este el directorio por defecto
            Dim rutaDirectorio = "C:\BD\NOMBREDELCLIENTE"
    
            'Esto tiene que venir de la consulta de tu campo de Access
            Dim rutaDeAccess = "IMAGENES\IMAGEN1.PNG"
    
            PictureBox1.Image = Image.FromFile(Path.Combine(rutaDirectorio, rutaDeAccess))

    Espero me haya hecho entender.

    Saludos.



    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    sábado, 7 de mayo de 2016 1:14
  • Hola,

    Pero todo eso lo tendrías que hacer por VB.

    Mira, supongo que tienes un formulario donde vas a registrar al cliente y tomar esos datos no?

    Puedes hacer esto :

    Private Sub btnRegistrarCliente_Click(sender As Object, e As EventArgs) Handles btnRegistrarCliente.Click
    
            'Variable que almacenará la ruta
            Dim ruta As String = String.Empty
    
            Using con As New OleDbConnection("MiCadenaConexion")
    
                Dim consulta As String = "insert into tb_cliente (nombre, documento, imagen) values (@nombre, @documento, @imagen)"
    
                Dim cmd As New OleDbCommand(consulta, con)
                cmd.Parameters.AddWithValue("@nombre", txtNomCliente.Text)
                cmd.Parameters.AddWithValue("@documento", txtTipoDoc.Text)
    
                'Aqui le doy el valor generado por los campos
                ruta = Path.Combine("C:\", txtNomCliente.Text.Replace(" ", ""), txtTipoDoc.Text, "Image.png")
    
                'En este parámetro enviamos la ruta
                cmd.Parameters.AddWithValue("@imagen", ruta)
    
                Try
                    con.Open()
    
                    'Primero guardo la imagen en la ruta creada
                    PictureBox1.Image.Save(ruta, ImageFormat.Png)
    
                    'Si ya creo la imagen en la ruta
                    'Ejecuta la consulta
                    cmd.ExecuteNonQuery()
    
                    con.Close()
                    MessageBox.Show("El cliente fue registrado correctamente.")
    
                Catch ex As Exception
                    MessageBox.Show("Se produjo un error : " & ex.Message)
                End Try
            End Using
        End Sub

    Básicamente, genero mi url con los datos que se está ingresando.

    Estoy asumiendo que guardas la imagen de un PictureBox, pero si usas un OpenFileDialog solo crearías una copia de la imagen seleccionada.

        Dim abrir As New OpenFileDialog
            abrir.Filter = "Archivos de imágenes |*.png;*.jpg;*.gif"
    
            'Si selecciona imagen
            If abrir.ShowDialog = DialogResult.OK Then
                'Creo una copia de la imagen y lo guardo en la ruta generada
                IO.File.Copy(abrir.FileName, ruta)
            End If

    Y tu BD Access quedará así :

    CLIENTE        DOCUMENTO     IMAGEN
    Juan Perez     Acta          C:\JuanPerez\Acta\Image.png

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    sábado, 7 de mayo de 2016 1:56
  • Hola

    Te recomendaría que guardes la imagen en al base de datos no la ruta donde se ubica. Por que pueden cambiar la ruta de la imagen o por error lo pueden eliminar.

    Revisa este link

    Almacenamiento de imágenes en Access


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    sábado, 7 de mayo de 2016 2:44

Todas las respuestas

  • Hola,

    [-] .... pero que esta se guarde en una carpeta hecha con acces

    Tendrías que crear la carpeta con VB.Net, puedes usar : (Imports System.IO)

    Directory.CreateDirectory("C:\BD\NOMBREDELCLIENTE")

    Y en tu BD Access en un campo de tu tabla guardaría la ruta de la imagen apuntando a esa carpeta, algo así :

    IMAGENES\IMAGEN1.PNG"

    Y al mostrarlo combinas los path.

            'Este el directorio por defecto
            Dim rutaDirectorio = "C:\BD\NOMBREDELCLIENTE"
    
            'Esto tiene que venir de la consulta de tu campo de Access
            Dim rutaDeAccess = "IMAGENES\IMAGEN1.PNG"
    
            PictureBox1.Image = Image.FromFile(Path.Combine(rutaDirectorio, rutaDeAccess))

    Espero me haya hecho entender.

    Saludos.



    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    sábado, 7 de mayo de 2016 1:14
  • Me sirve pero 

    NOMBREDELCLIENTE seria una variable para cada cliente que se genere una carpeta para cada cliente con su nombre.

    IMAGENES  seria el tipo de documento que guardaria

    Ahora como hacer que esto sea generado por la propia BD de access

    Si no me explico

    Nombre del cliente: Juan Perez

    Documento: Acta

    C:/JuanPerez/Acta/Image.png

    Seria asi, muchas gracias por responder

    sábado, 7 de mayo de 2016 1:21
  • Hola,

    Pero todo eso lo tendrías que hacer por VB.

    Mira, supongo que tienes un formulario donde vas a registrar al cliente y tomar esos datos no?

    Puedes hacer esto :

    Private Sub btnRegistrarCliente_Click(sender As Object, e As EventArgs) Handles btnRegistrarCliente.Click
    
            'Variable que almacenará la ruta
            Dim ruta As String = String.Empty
    
            Using con As New OleDbConnection("MiCadenaConexion")
    
                Dim consulta As String = "insert into tb_cliente (nombre, documento, imagen) values (@nombre, @documento, @imagen)"
    
                Dim cmd As New OleDbCommand(consulta, con)
                cmd.Parameters.AddWithValue("@nombre", txtNomCliente.Text)
                cmd.Parameters.AddWithValue("@documento", txtTipoDoc.Text)
    
                'Aqui le doy el valor generado por los campos
                ruta = Path.Combine("C:\", txtNomCliente.Text.Replace(" ", ""), txtTipoDoc.Text, "Image.png")
    
                'En este parámetro enviamos la ruta
                cmd.Parameters.AddWithValue("@imagen", ruta)
    
                Try
                    con.Open()
    
                    'Primero guardo la imagen en la ruta creada
                    PictureBox1.Image.Save(ruta, ImageFormat.Png)
    
                    'Si ya creo la imagen en la ruta
                    'Ejecuta la consulta
                    cmd.ExecuteNonQuery()
    
                    con.Close()
                    MessageBox.Show("El cliente fue registrado correctamente.")
    
                Catch ex As Exception
                    MessageBox.Show("Se produjo un error : " & ex.Message)
                End Try
            End Using
        End Sub

    Básicamente, genero mi url con los datos que se está ingresando.

    Estoy asumiendo que guardas la imagen de un PictureBox, pero si usas un OpenFileDialog solo crearías una copia de la imagen seleccionada.

        Dim abrir As New OpenFileDialog
            abrir.Filter = "Archivos de imágenes |*.png;*.jpg;*.gif"
    
            'Si selecciona imagen
            If abrir.ShowDialog = DialogResult.OK Then
                'Creo una copia de la imagen y lo guardo en la ruta generada
                IO.File.Copy(abrir.FileName, ruta)
            End If

    Y tu BD Access quedará así :

    CLIENTE        DOCUMENTO     IMAGEN
    Juan Perez     Acta          C:\JuanPerez\Acta\Image.png

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    sábado, 7 de mayo de 2016 1:56
  • Muchas Gracias.
    sábado, 7 de mayo de 2016 1:59
  • Hola

    Te recomendaría que guardes la imagen en al base de datos no la ruta donde se ubica. Por que pueden cambiar la ruta de la imagen o por error lo pueden eliminar.

    Revisa este link

    Almacenamiento de imágenes en Access


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    sábado, 7 de mayo de 2016 2:44