Jump to content
Elrosnum

ComboBox/PictureBox

Recommended Posts

Elrosnum

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...

Share this post


Link to post
Share on other sites
Andrepereira9

Boas.

Guardas a imagem na BD??

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


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Elrosnum

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

Share this post


Link to post
Share on other sites
Andrepereira9

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)


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Elrosnum

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 =]

Share this post


Link to post
Share on other sites
Andrepereira9

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"))


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Andrepereira9

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


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Elrosnum

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á =)

Share this post


Link to post
Share on other sites
Andrepereira9

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


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Elrosnum

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 =]

Share this post


Link to post
Share on other sites
Caça

O tipo de campo na BD e image =X

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

Altera para texto.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Andrepereira9

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


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

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

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.