Ir para conteúdo
Fórum Script Brasil
  • 0

Colocar imagem em BD com aplicativo VB-6


Danleonhart

Pergunta

Pessoal...

Como faço para salvar imagem carregada em aplicativo VB-6 em BD SQL ?

e como carregá-la novamente do BD para o aplicativo ?

Tentei com BD Access convertendo a imagem para Binário, configurando o "Type" da Coluna como "Objeto OLE"... até aí tudo bem...salva no BD beleza.

Mas na hora de carregar do BD (Access) para o aplicativo dá "erro '53' File not Found".

Uso esta string para carregar os dados...lí um pouco sobre o "GetChunk", que segundo o que entendí ele trás de volta de binário para o tipo inicial (seja foto, mp3 ou o que for...), e que antes disso, precisa ser primeiro carregado em uma variável temporária :

Private Sub Carregar()
Dim USR As String
Dim strFoto
USR = InputBox("Digite o Nome do Usuário que deseja carregar as informações.")
If USR <> Empty Then
abb
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open "select * from Table01 where Nome='" & USR & "'", con, adOpenKeyset, adLockReadOnly
strFoto = rs("Foto").GetChunk(rs("Foto").ActualSize)
txt1.Text = rs("Nome")
txt2.Text = rs("Cidade")
ima1.Picture = LoadPicture(strFoto)
txt1.SetFocus
End If
End Sub
Bem, este mesmo script utilizo para o SQL... e o de "inserir" os dados no BD também... aqui ele:
Private Sub Inserir()
Dim vID As Double
If txt1.Text = "" Or txt2.Text = "" Then
MsgBox "Coloque as informações necessárias.", vbExclamation, "ATENÇÃO !"
Else
vID = FG1.Rows
inserir = "insert into Table01 (ID, Nome, Cidade, Foto)" & "Values('" & vID & "','" & txt1.Text & "','" & txt2.Text & "','" & ima1.Picture & "')"
con.Execute inserir

MsgBox "Informações inclusas", vbInformation
Limpar
End If
txt1.SetFocus
Form_Load
End Sub

Sendo que, este só inclui no BD Access...no SQL ele dá erro (Requested conversion is not supported.), justamente na parte de incluir a imagem...pois alterei o script sem a inclusão da imagem no BD SQL e funcionou beleza.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Eu não gosto de converter para binário, não sei se te ajudaria, mas vou falar como eu utilizo para salvar imagem...

No bd access, tenho uma tabela chamada Imagem com uma unica coluna(numero integer), então, vamos supor que la esteja 0...

Quando o usuario for registrar ele atualiza isso para +1... no caso ficaria 1 agora... e pela função filecopy, ele copia a imagem para pasta dentro do aplicativo... e no cadastro do usuario, uma coluna chamada "Imagem" registra o numero da foto dele, no caso seria 1...

vou postar o código que uso:

abrebanco
Set rsdados = New Recordset
rsdados.Open "SELECT * FROM imagem", cn
numero = rsdados("numero") + 1
FileCopy cd.FileName, ("" & App.Path & "" & "\fotos\" & numero & ".jpg")
inserir2 = "update imagem2 set Imagem='" & numero & "'"
no cadastro do usuario, na coluna fotos, poe a variavel numero....
cn.execute inserir '(cadastro)
cn.execute inserir2 '(soma 1 na imagem para o proximo usuario)

Link para o comentário
Compartilhar em outros sites

  • 0

@Matheus :

Valeu cara !

tenho esse teu projeto da "Agenda Telefônica" que me enviaste ano passado :)

Mas minha finalidade é gravar tudo no BD mesmo...até por uma questão de aprendizado.

Me passaram um projeto que estou a estudar...bem interessante...ficaria mais fácil com comentários.

Link para quem quiser ver:

http://www.4shared.com/file/lCNc0bjw/visualizador.html

:closedeyes:

Link para o comentário
Compartilhar em outros sites

  • 0

esse tutorial do macoratti tem as funcoes prontas td certinho e funcionando: http://www.macoratti.net/img_bd.htm

o metodo .GetChunk() retorna partes do conteudo binario do campo.

primeiro de tudo, o certo seria usar o retorno num array de byte em vez de numa string, já q na string, ele deve trocar os caracteres 10 e 13 quando aparecerem separadamentes por 13 e 10 juntos (o crlf, pra dar quebra de linha) e vai corromper a imagem.

na verdade, o q você tem q fazer é, depois q ler a imagem do banco de dados, você salva-a no hd em um arquivo de imagem mesmo, porque a funcao LoadPicture() carrega do arquivo (depois você pode excluir o arquivo do hd).

a propriedade .Value já retorna o conteudo completo, você poderia recuperar dela em vez do GetChunk.

entretanto, o .GetChunk() é usado, no caso de a imagem ser muito gde, pra evitar de alocar um array de 10 megas na memoria, por exemplo. assim, ele vai lendo parte por parte do campo, e salvando num arquivo temporario sem sobrecarregar a memoria.

se você reparar o macoratti fez duas funcoes, uma pra imagens gdes e outra pra pequenas, por causa disso mesmo.

então, de uma olhada q o codigo do macoratti faz exatamente isso q você precisa.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...