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

Green_BiRi

Imagem e base de dados

37 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois... pouco mexi em Access e não conheço as limitações

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mostra o código onde dá o erro que referiste... a ver se olhando para o código conseguimos ajudar-te

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens que ver qual o indice do recordset que corresponde a path da imagem.

atenção que começa em 0

0

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