Usando a ADO, tente o seguinte para salvar a imagem:
Dim cmpoBOB() as Byte
Open strImagePath For Binary As #1
ReDim cmpoBLOB(FileLen(NomeDoArquivoImagem.jpg))
Get #1, , cmpotBLOB
Close #1
Tabela.Fields("Imagem").AppendChunk cmpoBLOB
Tabela.Update
Para carregar, tente isto:
Set Picture1.DataSource = SeuRecordset
Picture1.DataField = "Imagem"
Ou, um método mais complexo, porém mais rápido:
Dim TamImagem As Long, OffSet As Long
Dim Bloco() As Byte
Dim strTempPic As String
Const TamBloco = 100
strTempPic = App.Path & "TempPic.jpg"
If Len(Dir(strTempPic)) > 0 Then
Kill strTempPic
End If
Open strTempPic For Binary As #1
TamImagem = SeuRecordset("Imagem").ActualSize
Do While OffSet < TamImagem
Bloco() = SeuRecordset("Imagem").GetChunk(TamBloco)
Put #1, , Bloco()
OffSet = OffSet + TamBloco
Loop
Close #1
Picture1.Picture = LoadPicture(strTempPic)
Kill strTempPic
O funcionamento é relativamente simples: imagens são blocos de bytes armazenados dentro do banco de dados, assim, para gravar uma imagem você deve abrir o arquivo de imagem em modo binário e quebrá-la em um vetor de bytes em memória, depois, acessando o campo, usar o método AppendChunk. Para carregar, você deverá ler o campo também em modo binário e criar um arquivo temporário em disco com os bytes do campo, depois, deverá usar o método LoadPicture da PictureBox para exibir a imagem.
Mas atenção fique prevenido de que seu banco de dados irá crescer em progressão geométrica com a gravação das imagens dentro dele.
Um abraço,
Sandro.