carlosrenatopl Postado Maio 31, 2004 Denunciar Share Postado Maio 31, 2004 Alguém pode me dizer todos os passos que eu devo seguir para inserir uma foto do cliente no formulário e salvá-la na tabela? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 William Rodrigues Postado Maio 31, 2004 Denunciar Share Postado Maio 31, 2004 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 SubObs: Você deve substituir o nome do campo Imagem na rotina quando for adaptar o código ao seu casoAcho que ajudou um pouco né?Mude, faça um teste e veja se dá certo. PS: estou sem VB aqui !Abraços,William Rodrigues Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
carlosrenatopl
Alguém pode me dizer todos os passos que eu devo seguir para inserir uma foto do cliente no formulário e salvá-la na tabela?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.