Senhores
Estou tentando implementar uma rotina que extraia a imagem de um campo OLE e salve em diretório temporário, no exemplo que estou fazendo até extrai mas o arquivo corrompe e não consigo abri-lo.
Uso ACCESS 2010 32 Bits
copiei o código do site : ammara.com/access_image_faq/read_write_blob.html
O código do módulo é esse :
No botão de comando coloquei o código abaixo :
Basicamente preciso salvar o conteúdo de um campo OLE em uma pasta temporária.
Poderia ser outro código andei lendo sobre filestream, mas neste caso teria que usar ado eu este bicho é meio estranho pra mim. se alguém puder me ajudar agradeço.
Estou tentando implementar uma rotina que extraia a imagem de um campo OLE e salve em diretório temporário, no exemplo que estou fazendo até extrai mas o arquivo corrompe e não consigo abri-lo.
Uso ACCESS 2010 32 Bits
copiei o código do site : ammara.com/access_image_faq/read_write_blob.html
O código do módulo é esse :
- Código:
Option Compare Database
'Function: BlobToFile - Extracts the data in a binary field to a disk file.
'Parameter: strFile - Full path and filename of the destination file.
'Parameter: Field - The field containing the blob.
'Return: The length of the data extracted.
Public Function BlobToFile(strFile As String, ByRef Field As Object) As Long
On Error GoTo BlobToFileError
Dim nFileNum As Integer
Dim abytData() As Byte
BlobToFile = 0
nFileNum = FreeFile
Open strFile For Binary Access Write As nFileNum
abytData = Field
Put #nFileNum, , abytData
BlobToFile = LOF(nFileNum)
BlobToFileExit:
If nFileNum > 0 Then Close nFileNum
Exit Function
BlobToFileError:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritical, _
"Error writing file in BlobToFile"
BlobToFile = 0
Resume BlobToFileExit
End Function
'Function: FileToBlob - Loads a file into a binary field.
'Parameter: strFile - Full path and filename of the source file.
'Parameter: Field - The binary field into which the file is to be loaded.
Public Function FileToBlob(strFile As String, ByRef Field As Object)
On Error GoTo FileToBlobError
If Len(Dir(strFile)) > 0 Then
Dim nFileNum As Integer
Dim byteData() As Byte
nFileNum = FreeFile()
Open strFile For Binary Access Read As nFileNum
If LOF(nFileNum) > 0 Then
ReDim byteData(1 To LOF(nFileNum))
Get #nFileNum, , byteData
Field = byteData
End If
Else
MsgBox "Error: File not found", vbCritical, _
"Error reading file in FileToBlob"
End If
FileToBlobExit:
If nFileNum > 0 Then Close nFileNum
Exit Function
FileToBlobError:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritical, _
"Error reading file in FileToBlob"
Resume FileToBlobExit
End Function
No botão de comando coloquei o código abaixo :
- Código:
Private Sub SALVAR_OBJETO_Click()
'Extraia o arquivo contido no campo denominado' Image 'para um arquivo referenciado ao campo ' [caminho] '.
BlobToFile [caminho], [Image]
End Sub
Basicamente preciso salvar o conteúdo de um campo OLE em uma pasta temporária.
Poderia ser outro código andei lendo sobre filestream, mas neste caso teria que usar ado eu este bicho é meio estranho pra mim. se alguém puder me ajudar agradeço.