SALVAR E RECUPERAR EM CAMPOS BLOB - MYSQL E FIREBI
Olá Galera, Boa Tarde!
Bem gostaria de saber se alguém já trabalhou ou trabalha com fotos salvas diretamente em um campo da tabela do tipo BLOB em MySQL ou Firebird. Como salver e como recuperar. Já que sei que o banco vai ficar bem maior dependo da quantidade de registros, mas fica mais profissional sem ter que salvar so o Path da foto em um campo da tabela.
Bem gostaria de saber se alguém já trabalhou ou trabalha com fotos salvas diretamente em um campo da tabela do tipo BLOB em MySQL ou Firebird. Como salver e como recuperar. Já que sei que o banco vai ficar bem maior dependo da quantidade de registros, mas fica mais profissional sem ter que salvar so o Path da foto em um campo da tabela.
Thiago, voce tem que tomar alguns cuidados quando se fala salvar path de imagem, primeira situaçao : se voce grava la o path por exemplo C:\FOTOS\IMAGEM.JPG, vai que amanha ou depois voce formata a maquina, reinstala seu sistema e depois de reinstalado vc coloca as fotos em outro diretorio?? ai começa a complicar, ou senao como uma maquina da rede vai ler essa pasta c:\fotos ? sempre que a pasta vai estar no servidor.. e nao local??? olha o que eu fiz para contornar isso, coloquei em um arquivo INI o caminho onde as fotos estao : ex : \\server\fotos\ , entao ele busca esse path para iniciar e depois eu pego a respectiva imagem, ex : \\server\fotos\foto.jpg, ai em qualquer maquina voce pode acessar normalmente.. ok??? e se formatar depois a maquina.. mesmo trocando o nome da maquina.. e so vc ir no arquivo ini e modificar o caminho de inicializacao.. tipo.. \\servidor\fotos.. mais ou menos entendeu ? outra alternativa e realmente gravar os dados no bdados.. faço assim.. :
e para recuperar a imagem.
Espero que isso te ajude
Private Sub CmDGrava_Click()
On Error GoTo ErrorLine
Conecta True
Set RsImagem = New ADODB.Recordset
Set mystream = New ADODB.Stream
mystream.Type = adTypeBinary
Sql = [Ô]SELECT id,catlogo,catlogopresente FROM cadcat where id=[ô][Ô] & TDBGrid1.TextMatrix(TDBGrid1.Row, 0) & [Ô][ô][Ô]
RsImagem.Open Sql, Conexao, adOpenStatic, adLockOptimistic
mystream.Open
mystream.LoadFromFile StrImagem
RsImagem!ID = TDBGrid1.TextMatrix(TDBGrid1.Row, 0)
RsImagem!catlogopresente = [Ô]1[Ô]
RsImagem!catlogo = mystream.Read
RsImagem.Update
mystream.Close
RsImagem.Close
Set RsImagem = Nothing
CmDGrava.Visible = False
btnImgAdd.Visible = True
Conecta False
Exit Sub
ErrorLine:
If Err = -2147217887 Then
msg1.MsgBox [Ô] Imagem muito grande para ser arquivada![Ô] & _
Chr(13) & [Ô] Selecione outra imagem ou redefina a mesma![Ô], vbExclamation, [Ô]Aviso[Ô]
Img.Picture = Picture1.Picture
Call btnImgAdd_Click
Else
MsgError
End If
End Sub
e para recuperar a imagem.
Private Sub PegarImagem()
On Error GoTo ErrorLine
Set RsImagem = New ADODB.Recordset
Dim mystream As New ADODB.Stream
With mystream
.Type = adTypeBinary
cSql = [Ô]SELECT catlogo FROM cadcat where id=[ô][Ô] & TDBGrid1.TextMatrix(TDBGrid1.Row, 0) & [Ô][ô][Ô]
RsImagem.Open cSql, Conexao, adOpenStatic, adLockReadOnly
.Open
.Write RsImagem!catlogo
.SaveToFile App.Path & [Ô] mp.bmp[Ô], adSaveCreateOverWrite
.Close
Img.Picture = LoadPicture(App.Path & [Ô] mp.bmp[Ô])
Kill (App.Path & [Ô] mp.bmp[Ô])
RsImagem.Close
Set RsImagem = Nothing
End With
Exit Sub
ErrorLine:
If Err.Number = 481 Then
Img.Picture = Picture1.Picture
Else
MsgError
End If
End Sub
Espero que isso te ajude
Amigo, dá para postar mais detalhes ?
o que é a variavel [Ô]StrImagem[Ô]...
antes de Setar a [Ô]mystream[Ô] tem de primeiro declarar (tipo: Dim mystream as New ADODB.Stream), certo ?!
gostei do script, quero entende-lo agora
o que é a variavel [Ô]StrImagem[Ô]...
antes de Setar a [Ô]mystream[Ô] tem de primeiro declarar (tipo: Dim mystream as New ADODB.Stream), certo ?!
gostei do script, quero entende-lo agora
Meu parceiro...
Acho que é isto que procuras...
http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=8273
Acho que é isto que procuras...
http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=8273
Serviu?
isso danleonhart, strimagem é uma string,
Dim StrImagem As String
Que recebe o valor da commondialog
Dim StrImagem As String
Que recebe o valor da commondialog
Sub btnImgAdd_Click()
On Error Resume Next
btnImgAdd.Visible = False
CmDGrava.Visible = True
With cmdAnexo
.InitDir = App.Path & [Ô]\Imagens[Ô]
.Filter = [Ô]Todas as Imagens| *.bmp;*.jpg;*.gif;*.wmf;*.emf[Ô]
.CancelError = True
.ShowOpen
Img.Picture = LoadPicture(.FileName)
StrImagem = [Ô][Ô] & cmdAnexo.FileName
CmDGrava.Visible = True
btnImgAdd.Visible = False
End With
End Sub
Tópico encerrado , respostas não são mais permitidas