Ir para o conteúdo
Green_BiRi

Imagem e base de dados

Mensagens Recomendadas

Green_BiRi    0
Green_BiRi

Ora então boas a todos... :D

Eu estou a fazer um programa tipo catálogo virtual, mas não sei como associar uma imagem a um registo (nem sei se é possível)... poderiam-me explicar como o faço?

Obrigado :D

P.S.: Sim, eu fiz um grande edit porque decidi reformular o meu projecto todo. Peço desculpa...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
asworm    1
asworm

nao percebi bem o que crias, mas se for o que penso , uma solução é guardr no registo o caminho

da imagem... apenas, e o programa depois vais buscar o caminho...

cumps

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
José Lopes    1
José Lopes

Tens duas hipóteses... ou usas uma bd que suporte a utilização de Blob's, e inseres os ficheiros directamente na tabela...ou então segues a solução do asworm

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
DanielAmorim    0
DanielAmorim

Podes também gravar a imagem em forma de Byte[] num campo do tipo VARBINARY.

A ideia de gravares o caminho das imagens na BD também dá, ficas é sempre agarrado a esses caminhos....

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Green_BiRi    0
Green_BiRi

Peço desculpa se não expliquei bem... deixem-me esclarecer com a imagem abaixo:

semttuloie4.png

Tal como diz na imagem, quando eu troco de registo, a imagem troca também.

P.S.: Estou a usar uma base de dados do tipo Access... nesta altura do campeonato já não posso andar com mudanças e isto é mesmo urgente.

P.S. 2: Experimentei a ideia do asworm mas dá-me erro no runtime quando mudo de registo. Diz-me "Invalid field data type."... eu usei o tipo de dados text. Será isso?

Obrigado pelas respostas pessoal ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
DanielAmorim    0
DanielAmorim

Como já foi dito, o que precisas é de juntar a cada registo a imagem. O melhor mesmo era acrescentares um campo à tabela Álbum (???) para guardares essa informação.

Não sei os tipos suportados por Access... se suportar VARBINARY aconselho-te a usares esse e guardas a representação binária da imagem. Caso não suporte podes guardar o caminho da imagem no sistema de ficheiros.

P.S. 2: Experimentei a ideia do asworm mas dá-me erro no runtime quando mudo de registo. Diz-me "Invalid field data type."... eu usei o tipo de dados text. Será isso?

Mostra o código onde esse erro ocorre.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Green_BiRi    0
Green_BiRi

Como já foi dito, o que precisas é de juntar a cada registo a imagem. O melhor mesmo era acrescentares um campo à tabela Álbum (???) para guardares essa informação.

Não sei os tipos suportados por Access... se suportar VARBINARY aconselho-te a usares esse e guardas a representação binária da imagem. Caso não suporte podes guardar o caminho da imagem no sistema de ficheiros.

Foi o que eu fiz, mas dá-me o erro que eu disse no post acima... "Invalid field data type." ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
José Lopes    1
José Lopes

O acess não dá para isso... e o campo para guardares o caminho deve ser texto.

Como é que estas a carregar depois essa imagem?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Green_BiRi    0
Green_BiRi

O acess não dá para isso... e o campo para guardares o caminho deve ser texto.

Como é que estas a carregar depois essa imagem?

Por picturebox... desculpem a ignorância, mas comecei a dar isto este ano e não me safo assim tanto.. estou a ver se aprendo ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
José Lopes    1
José Lopes

quer dizer..na verdade o acess suporta esse tipo de dados.. mas acho que so podem ser inseridos directamente na tabela ou no form...para além de que as bd ficam com um tamanho intragável ;-)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Green_BiRi    0
Green_BiRi

quer dizer..na verdade o acess suporta esse tipo de dados.. mas acho que so podem ser inseridos directamente na tabela ou no form...para além de que as bd ficam com um tamanho intragável ;-)

Eu sei, mas como foi o que me ensinaram, é o que eu uso... ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Green_BiRi    0
Green_BiRi

Ok...mas qual o codigo que estas a correr para carregares os dados da DB?

Neste form, só tenho em código os botões de navegação e de retrocesso... nada mais...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Green_BiRi    0
Green_BiRi

mas interajes com a BD, não?

Bem, tenho lá o controlo "Data" que faz o load automático... se quiseres, posso enviar o programa para veres melhor ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
José Lopes    1
José Lopes

Acrescenta isto no final do codigo do form

Private Sub CarregaImagem()
If Not IsNull(Data1.Recordset.Fields(7)) Then
PIC.Picture = LoadPicture(Data1.Recordset.Fields(7))
End If
End Sub

Depois em cada interacção com a base de dados chamas a função.

Por exemplo:

Private Sub CmdSeguinte_Click()
Data1.Recordset.MoveNext
CmdInicio.Enabled = True
CmdAnterior.Enabled = True
If Data1.Recordset.EOF Then
    Data1.Recordset.MoveLast
    CmdFim.Enabled = False
    CmdSeguinte.Enabled = False
End If
CarregaImagem
End Sub

So tens que escrever codigo para evitar os erros no caso de não existir imagem. Já agora... tens que criar uma picture Box ...eu chamei-lhe PIC

Espero que funcione

Resultado Final b.jpg

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Green_BiRi    0
Green_BiRi

Hum... obrigadíssimo, mas tu puseste a imagem na parte da administração... e é suposto aparecer na parte do cliente, mal o form carregue... não importas de ver isso sff?  ;)

Ou é a mesma coisa?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
José Lopes    1
José Lopes

Exactamente a mesma coisa...

Adicionei so um label... para ficar mais engraçado


Private Sub CarregaImagem()
    If Not IsNull(Data1.Recordset.Fields(7)) Then
        PIC.Picture = LoadPicture(Data1.Recordset.Fields(7))
        lblPHOTO.Visible = False
        lblPHOTO.Caption = ""
    Else
        lblPHOTO.Visible = True
        lblPHOTO.Caption = "Não existe Imagem"
        PIC.Picture = Nothing
    End If
End Sub

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Green_BiRi    0
Green_BiRi

Exactamente a mesma coisa...

Adicionei so um label... para ficar mais engraçado


Private Sub CarregaImagem()
    If Not IsNull(Data1.Recordset.Fields(7)) Then
        PIC.Picture = LoadPicture(Data1.Recordset.Fields(7))
        lblPHOTO.Visible = False
        lblPHOTO.Caption = ""
    Else
        lblPHOTO.Visible = True
        lblPHOTO.Caption = "Não existe Imagem"
        PIC.Picture = Nothing
    End If
End Sub

Oh amigo, obrigadíssimo... mas isto está a dar erro nesta parte

If Not IsNull(Data1.Recordset.Fields(7)) Then

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade