我有一个包含OLE字段的表,我希望将某些字段的内容视为字节。到目前为止,我只能在带有BinData数组的Watch窗口中查看它。 我尝试使用CByte函数将其转换为字节数组,但它 给出了#34;类型不匹配"错误。
有没有办法将OLE字段内容作为字节数组获取?
我的代码将逐字节字段内容读入Bindata数组:
Sub DumpField()
Dim BinData(100) As Variant
Dim r As ADODB.Recordset
Dim i As Integer
Set r = New ADODB.Recordset
With r
.CursorType = adOpenStatic
.LockType = adLockReadOnly
.Open "SELECT [fBinary] FROM tbDesc WHERE ID=100", CurrentProject.Connection
If .BOF Then MsgBox "No Records"
Exit Sub
End If
For i = 0 To r.Fields(0).ActualSize - 1
BinData(i) = r.Fields(0).GetChunk(1)
Next i
End With
End Sub
答案 0 :(得分:1)
OLE字段内容是一个字节数组。但是,使用CByte
会尝试将某些内容转换为单个字节,然后失败。
您可以通过以下方式打印单个字节:
Debug.Print r.Fields(0).Value(0) 'First byte
或者以下列方式之一存储字节数组:
1:只使用变体
Dim BinData As Variant
BinData = r.Fields(0).Value
2:创建适当大小的字节数组,然后将字节数组设置为OLE对象值
Dim BinData() As Byte
Dim objSize As Long
objSize = UBound(r.Fields(0).Value)
Redim BinData(0 To objSize)
BinData = r.Fields(0).Value