USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Salvar imagem em Banco de dados
Thiago
não registrado
Postada em 18/01/2006 20:06 hs   
Eu tenho um form que faz o cadastro de funcionários, onde tem um picturebox que armazena a foto do funcionário!
Preciso salvar esta imagem no BD através de uma instrução SQL (INSERT), porém não sei como fazer ! 
Vejam bem, não é salvar o caminho no BD e sim a imagem, certo ? Obrigado!  
     
Geronimo
Pontos: 2843
JOINVILLE
SC - BRASIL
ENUNCIADA !
Postada em 19/01/2006 16:07 hs            
Este código mostra imagens num banco de dados access ou SQL Server, a diferença está somente na connection string no evento form_load.

Crie um projeto vazio e desenhe um image control, na sua propriedade DataField coloque o nome do seu campo imagem do banco de dados. Crie também 2 commandbuttons e um ADO Data Control, este último pode ser deletado logo após ser criado. Fazemos isso para criar as referências a objetos necessários ao ADO.

Cole o seguinte código no form:

Dim adoRS As ADODB.Recordset

Private Sub Command1_Click()

    On Error GoTo GoNextError

    If Not adoRS.EOF Then adoRS.MoveNext
    If adoRS.EOF And adoRS.RecordCount > 0 Then adoRS.MoveMax
  
    mbDataChanged = False

    Exit Sub

GoNextError:
    MsgBox Err.Description
    
End Sub

Private Sub Command2_Click()

    On Error GoTo GoPrevError

    If Not adoRS.BOF Then adoRS.MovePrevious
    If adoRS.BOF And adoRS.RecordCount > 0 Then adoRS.MoveMin
  
    mbDataChanged = False

    Exit Sub

GoPrevError:
    MsgBox Err.Description

End Sub

Private Sub Form_Load()

    Dim db As Connection
    Set db = New Connection
    db.CursorLocation = adUseClient
  
    'Connection String
    'Altere para o seu banco de dados
    db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:Meu Banco de Dados.mdb;"
  
            
    Set adoRS = New Recordset
    adoRS.Open "Minha Tabela", db, adOpenStatic, adLockOptimistic

    'Bind Image Control
    Set Image1.DataSource = adoRS

    Command1.Caption = "==>"
    Command2.Caption = "<=="
  
End Sub

"O pior inimigo que você poderá encontrar será sempre você mesmo."
   
Geronimo
Pontos: 2843
JOINVILLE
SC - BRASIL
Postada em 19/01/2006 16:09 hs            
Crie um form com 2 commandbuttons, 1 commondialog e um picturebox 
e cole o código abaixo mudando onde necessário.


Dim cn As ADODB.Connection
Dim RS As ADODB.Recordset

Private Sub SalvaEmArquivo(FLD As Field, FN As String, Optional PIC As PictureBox)

    ' Salva a imagem passada em FLD num arquivo cujo caminho está em FN e
    ' opcionalmente mostra a imagem no picturebox PIC
    Dim MStream As ADODB.Stream
    
    Set MStream = New ADODB.Stream
    MStream.Type = adTypeBinary
    MStream.Open
    MStream.Write FLD.Value
    
    MStream.SaveToFile FN, adSaveCreateOverWrite
    If IsMissing(PIC) = False Then
        PIC.Picture = LoadPicture(FN)
    End If

    MStream.Close
    Set MStream = Nothing
    
End Sub

Private Sub SalvaEmBanco(RS As Recordset, FN As String, IMGField As String)

    ' Salva o conteúdo de um arquivo de imagem no banco
     Dim MStream As ADODB.Stream
    
    Set MStream = New ADODB.Stream
    MStream.Type = adTypeBinary
    MStream.Open
    
    MStream.LoadFromFile FN
    RS(IMGField) = MStream.Read
    
    MStream.Close
    Set MStream = Nothing
    
End Sub

Sub command1_click()

    ' Salva imagem do banco em arquivo
    Set cn = New ADODB.Connection
    cn.Open "Provider=SQLOLEDB.1;Data Source=local_server;Initial Catalog=codex;User ID=sa;Persist Security Info=True"
    
    Set RS = New ADODB.Recordset
    RS.Open "Select * FROM Imagens", cn, adOpenKeyset, adLockOptimistic
    ' Buscando sempre a última imagem, mude de acordo com a sua necessidade
    RS.MoveMax
    
    With commondialog1
        .FileName = ""
        .Filter = "Image (*.gif)|*.gif"
        .ShowSave
        
        If Len(.FileName) <> 0 Then
            SalvaEmArquivo RS("Imagem"), .FileName, Picture1
        End If
    End With
    RS.Close
    cn.Close
    
    MsgBox "Imagem salva do banco para: " & cdOpen.FileName
    
End Sub

Private Sub Command2_Click()

    ' Salva imagem no banco
    Set cn = New ADODB.Connection
    cn.Open "Minha Connection String"
    
    Set RS = New ADODB.Recordset
    RS.Open "Select * from Minha_Tabela", cn, adOpenKeyset, adLockOptimistic
    
    With cdOpen
        .FileName = ""
        .Filter = "Image (*.gif)|*.gif"
         .ShowOpen
       
        RS.AddNew
        ' Na hora de salvar a imagem use a sub abaixo
        SalvaEmBanco RS, .FileName, "Imagem"
        RS.Fields("Arquivo") = Right(.FileName, Len(.FileName) - InStrRev(.FileName, ""))
        RS.Update
    End With
    
    RS.Close
    cn.Close
    MsgBox "Imagem " & cdOpen.FileName & " salva!"

End Sub

Private Sub Form_Load()

    Picture1.AutoSize = True
    Command1.Caption = "Salva em Arquivo"
    Command2.Caption = "Salva no Banco"
    
End Sub



"O pior inimigo que você poderá encontrar será sempre você mesmo."
     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2026   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página