Сохранить BLOB в док - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь сохранить oracle blob в файл с расширением .doc , но получаю ошибку: несоответствие типов в строке oFile. Напишите «blob content»

Пытался изменить метод, но не повезло

 BlobToFile
    WriteFromBinary
    WriteFromUnsizedBinary
    WriteFromText 
    WriteFromUnsizedText

Мой код:

Private Sub cmdOpenWord_Click()

 oraFile.Connect = Name & "/" & code
 oraFile.DatabaseName = OraDatabase.DatabaseName
 oraFile.RecordSource = SQL
 oraFile.Refresh
 If oraFile.Recordset.RecordCount > 0 Then
     Dim oFile As Object
     Set oFile = fso.CreateTextFile("C:\vba.doc", True, True)
     oFile.Write oraFile.Recordset(1).Value
     oFile.Close
     Set oFile = Nothing
 Else
     No_object.Visible = True
 End If
 End Sub

В вахте объект типа oracleblob

Watch :: oraFile.Recordset(1).Value :: Variant/Object/IOraBlob :         frmDelete.cmdOpenWord_Click

Если я пытаюсь переписать, получаю еще одну ошибку, похоже на язык Visual Basic, не поддерживаемый в Visual Basic.

Sub BlobToFile(ByVal dr As IDataReader, ByVal fieldIndex As Integer, ByVal filename As String)
Const CHUNK_SIZE As Integer = 200
Dim buffer(CHUNK_SIZE - 1) As Byte
Set stream = CreateObject("Scripting.FileSystemObject")
Dim index As Long
index = 0
Try
    Do
        ' Get the next chunk, exit if no more bytes.
        Dim length As Integer
        length = CInt(dr.GetBytes(fieldIndex, index, buffer, 0, CHUNK_SIZE))
        If length = 0 Then Exit Do
        ' Write to file and increment index in field data.
        stream.Write (buffer, 0, length)
        index = index + length
    Loop
Finally
    stream.Close
    End
End Sub

Сообщение об ошибке: Ошибка компиляции: пользовательский тип не определен

1 Ответ

0 голосов
/ 31 мая 2019

Попробуйте ADODB.Stream

Dim stm As New ADODB.Stream
With stm
    .Open
    .Type = adTypeBinary
    .Write oraFile.Recordset(1)
    .SaveToFile "D:\vba.doc", adSaveCreateOverWrite
End With
stm.Close
Set stm = Nothing

и попробуйте сохранить в другой папке или на диске, иногда Windows не позволяет сохранить на системном диске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...