OI!!!
Desenvolvi vários soft´s na área contábil e comercial, e agora quero colocar fotos de funcionários, produtos, vendedores, etc. nos cadastros.
Devido a uma peculiaridade da lógica utilizada nos sistemas, não posso utilizar as propriedades DATA FIEL, DATA SOURCE, etc.
Apos os preenchimentos dos campos, envio os dados a uma procedure e lá eu mando as informações para o BD mais ou menos desta forma:
10 Formulario!DtVendedor.Recordset.Fields("nome") = UCase(Formulario!TxVenNom.Text)
20 Formulario!DtVendedor.Recordset.Fields("código") = UCase(Formulario!TxVenCod.Text)
30 Formulario!DtVendedor.Recordset.Fields("cpf") = UCase(Formulario!TxVenCpf.Text)
40 Formulario!DtVendedor.Recordset.Fields("rg") = UCase(Formulario!TxVenRg.Text)
Mas não consigo gravar as fotos desta forma, pois não sei como transformar a imagem que está no IMAGEBOX (que é colada de outro soft ou direto da máquina digital) em binário para poder enviar para BD. e tambem não tenho ideia de como fazer quando ler esta informação binária para poder prencher o campo da imagem. a lógica que utilizo para ler os dados do BD e enviar para os campos é mais ou menos assim:
10 Formulario!TxVenNom.Text = Formulario!DtVendedor.Recordset.Fields("nome").Value
20 Formulario!TxVenCod.Text = Formulario!DtVendedor.Recordset.Fields("código").Value
30 Formulario!TxVenCpf.Text = Formulario!DtVendedor.Recordset.Fields("cpf").Value
40 Formulario!TxVenRg.Text = Formulario!DtVendedor.Recordset.Fields("rg").Value
Como falei antes, devido a peculiaridades da lógica utilizada, não posso mudar este envio/recebimento de dados.
Já tentei com campos OLE, picturebox, imagebox, etc. mas na hora de enviar para o bd, não consegui transformar em binário.
Uma outra tentativa utilizada, foi gravar as fotos em uma pasta separada, o que achei muito estranho, pois seria mais interessante um bando de dados com todas as informações (inclusive as imagens). Mas tive outro problema: o VB grava as imagens em formato BMP, o que as torna imensas (Entre 1 a 3 mega) e impossibilita um cadastro de produtos com mais de 4000 intens como acontece com a maioria de meus clientes (supermercados, casas de importação, farmacias, etc). Quando as mesmas imagens são transformadas em JPG, elas não passam de 100 Kb de tamanho.O comando utilizado para gravar a imagem do imagebox para um arquivo (cada foto, um arquivo...) e mais ou menos assim:
210 SavePicture Formulario!TxVenFoto, DriveTrabalho + "Arquivos de programasDown_Upsdados" + Viniciais + "fotosVendedores" + Formulario!TxVenCod + ".bmp"
O comando utilizado para ler a imagem do imagebox para um arquivo (cada foto, um arquivo...) e mais ou menos assim:
210 Formulario!TxVenFoto.Picture = LoadPicture(DriveTrabalho + "Arquivos de programasDown_Upsdados" + Viniciais + "fotosVendedores" + Formulario!TxVenCod + ".bmp")
Se eu mudar a extensao para JPG, ele funciona, mas o tamanho do arquivo continua como se fosse um BMP.
As pergunta são:
01. Como converter uma imagem para binário, para poder gravar ela junto com o restante dos dados no BD?
02. Como "desconverter" essa imagem na hora de ler o BD?
03. Como fazer para quando gravar uma imagem atraves do comando SAVEPICTURE, a imagem ser gravada no formato JPG?
Obrigado.