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

Registro Com Foto


carlosrenatopl

Pergunta

1 resposta a esta questão

Posts Recomendados

  • 0

Ok...

Acho que posso te ajudar...

Existem duas maneiras básicas de trabalhar com imagens em banco de dados :

1 - Você salva no arquivo a localização da imagem e a carrega toda vez que quer exibí-la.

2 - Você salva a imagem diretamente no seu banco de dados.

Você não pode salvar um arquivo imagem apenas atribuindo o nome da imagem ao campo e usando o comando Update. Um arquivo imagem geralmente é um arquivo do tipo binário que precisa ser tratado antes de ser gravado. Vamos usar o método AppendChunck() da ADO para fazer isso.

Inicie um novo projeto aí no VB6 e faça a referência para Microsoft ADO Ext. 2.X for DDL and Security

Coloque um controle Image. Um controle ADO Data Control (faça a referência antes). Um botão (CommandButton) e o CommonDialog (Microsoft Common Dialog Control 6.0). Ah...e uma caixa de texto também !

Mude a propriedade DataSource do controle Image e Text para o ADODC1 e coloque o seguinte código:

Private Sub Form_Load()
Dim dbNome$, tbNome$

dbNome = "c:\teste\DBImg.mdb"
tbNome = "Imagens"

If Dir(dbNome) = "" Then
  Dim cn$
  Dim cat As New ADOX.Catalog
  Dim tImagens As New ADOX.Table

  cn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & dbNome & ";"
  cat.Create cn

 With tImagens
     .Name = tbNome
     .Columns.Append "Nome", adVarWChar
     .Columns!Nome.Attributes = adColNullable
     .Columns.Append "Imagem", adLongVarBinary
  End With

  cat.Tables.Append tImagens
  Set tImagens = Nothing
  Set cat = Nothing
End If

 With Adodc1
  .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbNome & ";Persist Security Info=False"
  .RecordSource = "SELECT * FROM " & tbNome
  .Refresh
 End With

'vinculando os controles text1 e image1 ao adodc1
Text1.DataField = "Nome"
Command1.Caption = "&Incluir Imagem"
Image1.DataField = "Imagem"

End Sub
estou usando o banco de dados chamado DBImg.mdb que tem a tabela Imagens com a seguinte extrutura: 1 Nome - Tipo Texto 2 Imagem - Tipo Binário Longo Vamos criar uma conexão com o banco de dados e definimos o recordset atual como sendo igual a todos os registros da tabela. ("SELECT * FROM " & tbNome )
Private Sub Command1_Click()
Dim f as String
Dim L as String
dim  Imagem as String
On Error GoTo trata_erro

With CommonDialog1
   .CancelError = True
   .Filter = FLTR
   .ShowOpen
   Imagem$ = .FileName
End With

f = FreeFile
Open Imagem For Binary Access Read As f

L = LOF(f)
ReDim B(L) As Byte
Get f, , B()
Close f

'inclui o registro no banco de dados
With Adodc1.Recordset
  .AddNew
  !Imagem.AppendChunk B()
  !Nome = Imagem
  .Update
End With

'mostra imagem no controle image1
Image1.Picture = LoadPicture(Imagem)
Exit Sub

trata_erro:
MsgBox Err.Description

End Sub
Quando o usuário selecionar uma imagem ativamos a rotina que guarda a imagem no vetor B() ,e , em seguida gravamos o banco de dados o nome da imagem e a imagem , usando o método AppenChunck() Mas, se você quer tratar imagens sem o ADO Data control vai precisar da rotina para ler a imagem do banco de dados e exibí-la. Segue abaixo:
Private Sub LeImagem_Click()
Dim L as string
Dim t as string
dim f as string

L = Adodc1.Recordset!Imagem.ActualSize
ReDim B(L) As Byte
B = Adodc1.Recordset!Imagem.GetChunk(L)

t = "tmp"
f = FreeFile
Open t For Binary Access Write As f
Put f, , B()
Close f

Set Image2.Picture = LoadPicture(t)
End Sub

Obs: Você deve substituir o nome do campo Imagem na rotina quando for adaptar o código ao seu caso

Acho que ajudou um pouco né?

Mude, faça um teste e veja se dá certo.

PS: estou sem VB aqui !

Abraços,

William Rodrigues

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,2k
    • Posts
      652k
×
×
  • Criar Novo...