none
salvando imagem sem ser no banco mais em uma pasta RRS feed

  • Pergunta

  • Bom gente estou em um projeto que preciso salvar muitas imagem, ex: a pessoa digitaliza ou tira foto de uma imagem e salva em uma pasta ok. quando eu fizer o cadastro vou colocar  o caminha da foto em um textbox e salvo terminando o cadastro ai quando eu vou consultar esse cadastro quero que a imagem apareça em um picturebox, assim não salvo a imagem no banco, só fica no banco o caminho da imagem, como vai ser muitas imagem não pode ser salva todas elas no banco.  vou colocar os códigos dos botões abaixo. 

    desde ja agradeço a ajunda.

    botão salvar:

    Private Sub cmdSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSalvar.Click

            Dim con As New OleDb.OleDbConnection

            con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Users\User\Documents\Visual Studio 2010\Projects\Cartorio\Cartorio\cartorio.accdb'"
            con.Open()

            
            If txtTermo.Text = String.Empty Then
                MsgBox("Termo Invalido!")
                txtTermo.Focus()
                Return
            End If

            If txtLivro.Text = String.Empty Then
                MsgBox("Livro Invalido!")
                txtLivro.Focus()
                Return
            End If

            If txtDevedor.Text = String.Empty Then
                MsgBox("Devedor Invalido!")
                txtDevedor.Focus()
                Return
            End If

            If txtCaminho.Text = String.Empty Then
                MsgBox("Caminho da imagem invalido!")
                txtCaminho.Focus()
                Return
            End If
            

            Dim comando As New OleDb.OleDbCommand
            comando.Connection = con
            comando.CommandText = "INSERT INTO Distribuicao (Termo, Livro, Devedor, imagem) " & _
                                " VALUES( ?, ?, ?, ? )"

            comando.Parameters.Clear()
            comando.Parameters.Add("@Termo", OleDb.OleDbType.VarChar).Value = txtTermo.Text
            comando.Parameters.Add("@Livro", OleDb.OleDbType.VarChar).Value = txtLivro.Text
            comando.Parameters.Add("@Devedor", OleDb.OleDbType.VarChar).Value = txtDevedor.Text
            comando.Parameters.Add("@imagem", OleDb.OleDbType.VarChar).Value = txtCaminho.Text

            comando.CommandType = CommandType.Text

            Try
                comando.ExecuteNonQuery()
            Catch ex As Exception
                MessageBox.Show(" Registro cadastrado." & ex.Message)
                Return
            End Try

            MsgBox("Dados Salvos com sucesso!")

            con.Close()
            CarregaDados()
            Limpa_Campos()
        End Sub

    botão consultar.

    Private Sub cmdConTermo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdConTermo.Click

            Dim con As New OleDb.OleDbConnection

            con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Users\User\Documents\Visual Studio 2010\Projects\Cartorio\Cartorio\cartorio.accdb'"
            con.Open()

            If txtTermo.Text = String.Empty Then
                MsgBox("Termo Invalido!")
                txtTermo.Focus()
                Return
            End If

            Dim comando As New OleDbCommand
            comando.CommandText = "SELECT Termo,Livro,Devedor,Imagem FROM Distribuicao WHERE Termo = '" & txtTermo.Text & "'"
            comando.CommandType = CommandType.Text

            comando.Connection = con

            Dim leitor As OleDbDataReader

            Try
                leitor = comando.ExecuteReader
            Catch ex As Exception
                MessageBox.Show(" Distribuição não existente." & ex.Message)
                Return
            End Try

            leitor.Read()

            Try

                txtLivro.Text = leitor("Livro")
                txtDevedor.Text = leitor("Devedor")
                txtCaminho.Text = leitor("Imagem")
                'termo = leitor("Termo")

            Catch ex As Exception
                MessageBox.Show(" Distribuição não existente." & ex.Message)
                Limpa_Campos()
                Return
            End Try

            cmdAlterar.Enabled = True
            cmdExcluir.Enabled = True
            cmdSalvar.Enabled = False

            con.Close()
            CarregaDados()

        End Sub


    • Editado Edlenilson segunda-feira, 23 de dezembro de 2013 03:41
    segunda-feira, 23 de dezembro de 2013 03:37

Respostas

Todas as Respostas

  • Primeiro coisa, é ASP.NET OU WEBFORMS OU MVC ASP.NET ?

    Fulvio Cezar Canducci Dias

    segunda-feira, 23 de dezembro de 2013 12:49
  • é visual basic 2010 banco access. a aplicação é windows form. obrigado pela atenção...


    • Editado Edlenilson terça-feira, 24 de dezembro de 2013 01:59
    terça-feira, 24 de dezembro de 2013 01:56
  • Na sua aplicação vai ter um diretório responsável pelas fotos e ao escolhe elas com o componente OpenFileDialog

    você pode configura-lo para abrir o caminho da imagem e grava no diretório passando tipo uma identificação a essa foto referente ao registro do banco!!!

    OpenFileDialog: 

    http://msdn.microsoft.com/pt-br/library/61097ykx(v=vs.110).aspx

    http://www.macoratti.net/10/11/c_opfd1.htm

    Tente começar a fazer por esses exemplos acredito que a intenção é você fazer !!!

    Mas, fica ai a nossa ajuda se precisar ... !!!


    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Edlenilson terça-feira, 24 de dezembro de 2013 04:33
    terça-feira, 24 de dezembro de 2013 03:09
  • Cezar meu irmão desde ja agradeço por esta mim ajudando, usar OpenFileDialog beleza isso eu já estou usando, já salvo o caminho no banco, eu só não estou conseguido é trazer a imagem para o FlowLayoutPanel1 quando faço uma consulta. Ex. coloco o código e mando consultar mim traz todos os outros campos só a imagem que não aparece. Sei que tenho que busca fazer lógico o problema é que estou sem tempo. Eu fiz o projeto como esse a alguns anos atrás em vb6 só que mudou tudo e eu não lembro. fazia tempo q não programava e estou voltando agora e apareceu esse projeto... mais uma vez obrigado. 
    terça-feira, 24 de dezembro de 2013 04:38
  • Use PictureBox para visualizar a imagem que está com o caminho no seu tabela do banco de dados!

    Ao trazer os outros dados consequentemente você ta trazendo um item que é o caminho que foi guardado a referencia da foto ...

    Para visualizar a foto com o caminho faça os seguintes comandos:

    PictureBox1.Image = Image.FromFile("caminho_salvo_no_banco")
    Aonde está caminho_salvo_no_banco passe o caminho que ta na sua tabela ... pronto a imagem será carregada!


    Fulvio Cezar Canducci Dias

    terça-feira, 24 de dezembro de 2013 11:13
  • Cesar deu certo com o Picturebox só q tem mais duas coisa:

    1º quando a imagem aparece ela vem muito grande tem como determinar um tamanho para ela pq passa muito do formulário.

    2º esse é meu botão novo.

    Private Sub Limpa_Campos()
            txtTermo.Text = ""
            txtLivro.Text = ""
            txtDevedor.Text = ""
            txtCaminho.Text = ""
            'PictureBox1
            cmdSalvar.Text = "&Salvar"
            cmdSalvar.Tag = "Incluir"
            cmdSalvar.Enabled = True
            cmdExcluir.Enabled = False
            cmdAlterar.Enabled = False
            txtTermo.Focus()
        End Sub

    Como faço para limpar o 'PictureBox1 quando uso o botão em novo.

    mais uma vez obrigado.

    terça-feira, 24 de dezembro de 2013 19:23
  • Configurar Tamanho Imagem!
    PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
    Limpar!
    PictureBox1.Image = Nothing



    Fulvio Cezar Canducci Dias

    terça-feira, 24 de dezembro de 2013 19:31
  • Fulvio meu irmão mais uma vez obrigado deu certo. Para finalizar esse formulário eu preciso de um botão para abri a imagem que vem na busca no visualizador do win 7 ou imprimir a imagem direto quando eu usar o botão. Entendo se caso vc não poder ajudar afinal vc mim ajudou de mais obrigado. Ao todo esse projeto vai ter 30 formulários para cada vai imagens de documentos diferente. falou

    sexta-feira, 27 de dezembro de 2013 02:25
  • Não entendi!

    Fulvio Cezar Canducci Dias

    sexta-feira, 27 de dezembro de 2013 13:11
  • Eu faço uma consulta de um registro e na consulta mim traz o registro e a imagem, em algum momento o usuário vai precisar imprimir essa imagem, ai eu preciso visualizar ela no visualizador de foto do Windows para ai imprimir a imagem. assim tem como abri o visualizador já com a imagem da consulta ou é melhor ter um botão que ao usar ele já imprima direto sem usar o visualizador. ok. Obrigado pela atenção irmão ...

    • Editado Edlenilson sábado, 28 de dezembro de 2013 00:19
    sábado, 28 de dezembro de 2013 00:15
  • Eu faço uma consulta de um registro e na consulta mim traz o registro e a imagem, em algum momento o usuário vai precisar imprimir essa imagem, ai eu preciso visualizar ela no visualizador de foto do Windows para ai imprimir a imagem. assim tem como abri o visualizador já com a imagem da consulta ou é melhor ter um botão que ao usar ele já imprima direto sem usar o visualizador. ok. Obrigado pela atenção irmão ...

    Se você fizer essa linha ele vai abrir no Visualizador Padrão do seu Windows

    System.Diagnostics.Process.Start(Application.StartupPath + "\1.jpg")

    Ou assim que é mais profissa

     Dim proc = New System.Diagnostics.Process()
     proc.EnableRaisingEvents = False
     proc.StartInfo.FileName = "rundll32.exe"
     proc.StartInfo.UseShellExecute = True
     proc.StartInfo.Arguments = "c:/windows/system32/shimgvw.dll,ImageView_Fullscreen " + Application.StartupPath + "\1.jpg"
     proc.Start()

    Sendo que a imagem ta na raiz do seu projeto!!! e 

    Application.StartupPath => significa a pasta aonde ta o executavel do seu projeto 

    mas, você pode colocar ali depois do + um caminho que deseja que apareça

    exemplo

    c:\1.jpg ou c:\temp\1.jpg


    Fulvio Cezar Canducci Dias

    sábado, 28 de dezembro de 2013 00:56
  • irmão visualizar a imagem não deu certo ainda.  Mais tenho uma duvida no meu botão salvar, quando eu salvo o registro ele zera os campo mais não limpa o Picture Box, nos botões alterar, excluir limpa direitinho, eu coloquei no botão novo   a linha que limpa o Picture Box q vc mim ensinou, mais quando uso o botão salvar não limpa, lá em cima tem o código do meu botão salvar tem como vc dar uma olhada.
     obrigado novamente irmão.

    • Editado Edlenilson domingo, 29 de dezembro de 2013 19:48
    domingo, 29 de dezembro de 2013 19:46
  • irmão visualizar a imagem não deu certo ainda.  Mais tenho uma duvida no meu botão salvar, quando eu salvo o registro ele zera os campo mais não limpa o Picture Box, nos botões alterar, excluir limpa direitinho, eu coloquei no botão novo   a linha que limpa o Picture Box q vc mim ensinou, mais quando uso o botão salvar não limpa, lá em cima tem o código do meu botão salvar tem como vc dar uma olhada.
     obrigado novamente irmão.

    Primeiro,

    Porque não deu certo visualizar a imagem? O Que aconteceu, o que foi elaborado por você ???

    Para limpar o PictureBox é o nome dele mais Image = nothing

    PictureBox1.Image = Nothing


    Fulvio Cezar Canducci Dias

    domingo, 29 de dezembro de 2013 19:55
  • Fulvio irmão, eu coloquei no botão novo do jeito que vc ensinou é tanto que nos outros botões funciona perfeito limpa o Picture Box, só quando eu uso o botão salvar q não limpa, os outros campos e limpa. Olha se eu digitar adicionar a imagem e clicar em novo ele limpar perfeito mais se clicar em salvar não limpa rarara.

    voltando a visualizar a imagem veja como eu coloquei o código.

     Dim proc = New System.Diagnostics.Process()
            proc.EnableRaisingEvents = False
            proc.StartInfo.FileName = "rundll32.exe"
            proc.StartInfo.UseShellExecute = True
            proc.StartInfo.Arguments = "c:/windows/system32/shimgvw.dll,ImageView_Fullscreen " + Application.StartupPath + "C:\ImagemCart\Distribuicao\DSC00152.JPG"
            proc.Start() 

    quando eu clico no botão não faz nada não aparece mensagem de erro nada como se não tivesse nada escrito no botão. Fulvio no código tem q ter algum puxando do  Picture Box para dizer ao visualizador q é para mostra  a imagem q está mostrando no Picture Box atualmente pq no código é como tivesse q colocar o nome do arquivo e vai ser muito arquivos.

    Obrigado irmão por está mim ajudando.


    • Editado Edlenilson segunda-feira, 30 de dezembro de 2013 01:50
    segunda-feira, 30 de dezembro de 2013 01:48
  • Fulvio irmão, eu coloquei no botão novo do jeito que vc ensinou é tanto que nos outros botões funciona perfeito limpa o Picture Box, só quando eu uso o botão salvar q não limpa, os outros campos e limpa. Olha se eu digitar adicionar a imagem e clicar em novo ele limpar perfeito mais se clicar em salvar não limpa rarara.

    voltando a visualizar a imagem veja como eu coloquei o código.

     Dim proc = New System.Diagnostics.Process()
            proc.EnableRaisingEvents = False
            proc.StartInfo.FileName = "rundll32.exe"
            proc.StartInfo.UseShellExecute = True
            proc.StartInfo.Arguments = "c:/windows/system32/shimgvw.dll,ImageView_Fullscreen " + Application.StartupPath + "C:\ImagemCart\Distribuicao\DSC00152.JPG"
            proc.Start() 

    quando eu clico no botão não faz nada não aparece mensagem de erro nada como se não tivesse nada escrito no botão. Fulvio no código tem q ter algum puxando do  Picture Box para dizer ao visualizador q é para mostra  a imagem q está mostrando no Picture Box atualmente pq no código é como tivesse q colocar o nome do arquivo e vai ser muito arquivos.

    Obrigado irmão por está mim ajudando.


    1 - Cade o código do Salvar, porque, se funcionou no outro tem que funcionar nesse compreende e é assim não tem outra formula!

    2 - Utilize assim System.Diagnostics.Process.Start("C:\ImagemCart\Distribuicao\DSC00152.JPG"), vai funcionar !!!


    Fulvio Cezar Canducci Dias

    segunda-feira, 30 de dezembro de 2013 12:00
  • Fulvio abrio o visualizador, só quando faço outra busca e vem outra imagem e quando mando visualizar só aparece o arquivo q determinei no código.

    Veja o código do meu botão salvar, e mais uma vez obrigado irmão.

    Private Sub cmdSalvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSalvar.Click

            Dim con As New OleDb.OleDbConnection

            con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Users\User\Documents\Visual Studio 2010\Projects\Cartorio\Cartorio\cartorio.accdb'"
            con.Open()

            
            If txtTermo.Text = String.Empty Then
                MsgBox("Termo Invalido!")
                txtTermo.Focus()
                Return
            End If

            If txtLivro.Text = String.Empty Then
                MsgBox("Livro Invalido!")
                txtLivro.Focus()
                Return
            End If

            If txtDevedor.Text = String.Empty Then
                MsgBox("Devedor Invalido!")
                txtDevedor.Focus()
                Return
            End If

            If txtCaminho.Text = String.Empty Then
                MsgBox("Caminho da imagem invalido!")
                txtCaminho.Focus()
                Return
            End If
            

            Dim comando As New OleDb.OleDbCommand
            comando.Connection = con
            comando.CommandText = "INSERT INTO Distribuicao (Termo, Livro, Devedor, imagem) " & _
                                " VALUES( ?, ?, ?, ? )"

            comando.Parameters.Clear()
            comando.Parameters.Add("@Termo", OleDb.OleDbType.VarChar).Value = txtTermo.Text
            comando.Parameters.Add("@Livro", OleDb.OleDbType.VarChar).Value = txtLivro.Text
            comando.Parameters.Add("@Devedor", OleDb.OleDbType.VarChar).Value = txtDevedor.Text
            comando.Parameters.Add("@imagem", OleDb.OleDbType.VarChar).Value = txtCaminho.Text

            comando.CommandType = CommandType.Text

            Try
                comando.ExecuteNonQuery()
            Catch ex As Exception
                MessageBox.Show(" Registro cadastrado." & ex.Message)
                Return
            End Try

            MsgBox("Dados Salvos com sucesso!")


            con.Close()

            PictureBox1.Image = Nothing
            Limpa_Campos()
            CarregaDados()

        End Sub

    sexta-feira, 3 de janeiro de 2014 01:49
  • esta correto?

    segunda-feira, 6 de janeiro de 2014 00:56
  • esta correto?

    Desculpa não sei!!!

    Fulvio Cezar Canducci Dias

    segunda-feira, 6 de janeiro de 2014 13:03
  • ok muito obrigado pela sua ajuda meu irmão... vou continuar tentando...


    • Editado Edlenilson sexta-feira, 10 de janeiro de 2014 02:40
    sexta-feira, 10 de janeiro de 2014 02:00