• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Elrosnum

ComboBox/PictureBox

16 posts in this topic

Bom dia a todos =]

Queria-vos pedir aqui uma ajuda para uma coisa que estou a desenvolver...

Então é assim, eu tenho um sistema de login um pouco diferente daquele que estou habituado a fazer.

O que eu tenho é um form com uma PictureBox, uma comboBox e uma textBox.

Se escolher o nome na combobox, gostava que aparecesse a fotografia na picturebox, mas não estou a conseguir fazer isso, eu pensei em criar um SELECT no evento da comboBox_SelectedIndexChanged e meti o seguinte código:

Dim sqlStrr = "SELECT Fotografia FROM dbo.Tbl_User WHERE Nome = '" & Me.ComboBox1.SelectedItem.ToString() & "'"

        Dim sqlComm2 As New SqlClient.SqlCommand(sqlStrr, sqlDB)

        sqlDB.Open()
        Dim reader = sqlComm2.ExecuteReader()

        While reader.Read
            PictureBox1.Image = Image.FromFile()' Aqui estava a meter uma coisa de outro site, mas não consegui perceber como se fazia =X
        End While
        sqlDB.Close()
    End Sub

Se alquém me puder ajudar, agradecia ;)

Cumpz...

0

Share this post


Link to post
Share on other sites

Boas.

Guardas a imagem na BD??

Ou guardas a imagem numa pasta e na BD, apenas guardas o caminho para a imagem?

0

Share this post


Link to post
Share on other sites

Eu meti para ela guardar na BD, mas agr é que me lembrei que pode ser esse o problema, eu quando vou ver o conteudo na tabela aparece no campo Fotografia (que é a imagem) um texto  dzr 0x =X

Sbs o que é isso?

Qual é que  conselhas mais?

Guardar na BD ou numa pasta ligada à app?

Obrigado =]

Cumpz

0

Share this post


Link to post
Share on other sites

Guardar na BD tem a vantagem de que basta pegar no Ficheiro da BD, que está la tudo dentro.

A desvantagem é que fica um ficheiro muito grande, e se tivermos necessidade de passar a BD de um lado para o outro, temos que passar as fotos todas, pois estão incorporadas.

Guardar as imagens numa pasta e guardar a localização na BD, é o Inverso. Temos que pegar na BD e na pasta das imagens

Mas se precisarmos de mudar apenas a BD, já é um ficheiro muito mais leve

Partindo do principio que já conseguiste guardar a imagem na BD em Binario, para ler basta fazer assim

Dim foto() As Byte = x.Item("Foto") 'valor que vem da BD
Dim foto_stream As New System.IO.MemoryStream(foto)
PictureBox1.Image = Image.FromStream(foto_stream)

0

Share this post


Link to post
Share on other sites

A minha forma de registar é esta:

Dim sqlStr = "INSERT INTO dbo.Tbl_User (Nome, Password, Fotografia, Nivel ) VALUES ('" & Me.TextBox1.Text & "', '" & Me.TextBox2.Text & "', '" & Me.PictureBox1.ImageLocation & "', '" & Nivel & "' )"

        Dim sqlComm As New SqlClient.SqlCommand(sqlStr, sqlDB)

        sqlDB.Open()
        Dim Inserir = sqlComm.ExecuteNonQuery
        sqlDB.Close()
        
        If Inserir Then
            MsgBox("Registo Inserido com Sucesso!", MsgBoxStyle.Information, "Sucesso")
        Else
            MsgBox("Falha na tentativa de Registo!", MsgBoxStyle.Information, "Erro")
        End If

Não sei se é a mais correcta ou não =X

Se me puderes ajudar =]

0

Share this post


Link to post
Share on other sites

O que estas a fazer é a guardar na BD a localização da imagem que está na PictureBox

Nesse caso, para apresentar a imagem, basta fazer

PictureBox1.Image = image.fromFile(x.item("Foto"))

0

Share this post


Link to post
Share on other sites

Mas este código meto a substituir o do picturebox.imagelocation?

0

Share this post


Link to post
Share on other sites

O PictureBox1.Image = image.fromFile(x.item("Foto")) é para mostrares a imagem que está guardada na BD.

O x foi a variavel que eu criei para ler os dados

dim x as sqldatareader = sqlComm.Executereader e o "foto" e o nome da tabela

Ou seja cria um leitor com os resultados da consulta e vai ler o item onde o nome da tabela seja Foto

0

Share this post


Link to post
Share on other sites

Boas tudo bem?

André estive a ver o teu código mas não consigo fazer com que ela apareça =X

Não sei se me ti o código no sitio certo, eu meti no load do formulário que vai fazer o login...

É esse o correcto?

Obrigado desde já =)

0

Share this post


Link to post
Share on other sites

Boas

Podes meter onde quiseres.

Apenas tens de ir buscar a localização da imagem à BD.

Estás a guardar na BD apenas a localização da imagem, em formato string?

Ou como é que estas a guardar na BD? Qual o tipo do campo da BD (varchar, byte,...)

BTW, se continuares a não conseguir, mostra o código que não está a funcionar

0

Share this post


Link to post
Share on other sites

O tipo de campo na BD e image =X

Eu vou meter código de como estou a inseri-la, para ir buscar estou a usar o select mas de certeza que falta mais qualquer coisa =X

Eis o código de Inserir:

Dim sqlStr = "INSERT INTO dbo.Tbl_User (Nome, Password, Fotografia, Nivel ) VALUES ('" & Me.TextBox1.Text & "', '" & Me.TextBox2.Text & "', '" & Me.PictureBox1.ImageLocation & "', '" & Nivel & "' )"

        Dim sqlComm As New SqlClient.SqlCommand(sqlStr, sqlDB)

        sqlDB.Open()
        Dim Inserir = sqlComm.ExecuteNonQuery
        sqlDB.Close()
        
        If Inserir Then
            MsgBox("Registo Inserido com Sucesso!", MsgBoxStyle.Information, "Sucesso")
            Login.ComboBox1.Items.Add("Nome")
        Else
            MsgBox("Falha na tentativa de Registo!", MsgBoxStyle.Information, "Erro")
        End If

O código do select:

Dim sqlStr = "SELECT Fotografia FROM dbo.Tbl_User WHERE Nome = '" & Me.ComboBox1.Text & "'"
        'MsgBox(sqlStr, MsgBoxStyle.OkOnly, "verificação de query")

        sqlDB.Open()
        Dim sqlComm As New SqlClient.SqlCommand(sqlStr, sqlDB)

        Dim reader = sqlComm.ExecuteReader()
        While reader.Read
            Nome = reader(0)
        End While

        sqlDB.Close()
        

O que eu também queria fazer era ligar de uma maneira a combobox para que quando eu registasse na BD um novo user, na combobox aparecesse o nome que eu tinha registado =X

Se me puderem ajudar =]

0

Share this post


Link to post
Share on other sites

O tipo de campo na BD e image =X

E estás a guardar lá uma string???

Altera para texto.

0

Share this post


Link to post
Share on other sites

Conforme o @Caça disse, estavas a guardar um localização da imagem que é texto num campo para imagens. Por isso é que não dava.

O que eu também queria fazer era ligar de uma maneira a combobox para que quando eu registasse na BD um novo user, na combobox aparecesse o nome que eu tinha registado =X

Podes. Depois de inserires o novo user, voltas a ler os dados da Bd e preenches novamente a combobox

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now