Office中国论坛/Access中国论坛
标题:
用ADO参数查询添加OLE字段值出错[已解决]
[打印本页]
作者:
t小宝
时间:
2011-12-8 21:50
标题:
用ADO参数查询添加OLE字段值出错[已解决]
本帖最后由 t小宝 于 2011-12-10 11:49 编辑
表1中有OLE字段oo,以下代码用ADO的参数查询向oo字段添加一个二进制文件,
在 prmByRoyalty.AppendChunk ByteData() 句出错,望各路高手指点。
Public Function AppendFile()
Dim cmdByRoyalty As ADODB.Command
Dim prmByRoyalty As ADODB.Parameter
Dim FileLength As Long
Dim ByteData() As Byte
Open "C:\test.rar" For Binary Access Read Lock Write As #1
FileLength = LOF(1)
ReDim ByteData(FileLength)
Get #1, , ByteData()
Close #1
Set cmdByRoyalty = New ADODB.Command
With cmdByRoyalty
.CommandText = "PARAMETERS oleA LongBinary;INSERT INTO 表1 ( oo ) VALUES([oleA]);" '
.CommandType = adCmdText
Set prmByRoyalty = .CreateParameter("oleA", adLongVarBinary, adParamInput, FileLength)
cmdByRoyalty.Parameters.Append prmByRoyalty
prmByRoyalty.AppendChunk ByteData() ' 出错,
Set .ActiveConnection = CurrentProject.Connection
.Execute
End With
End Function
问题已经解决,是ReDim ByteData(FileLength) 多声明了一个字节,改为ReDim ByteData(FileLength-1)
,完整代码见4楼。
作者:
xuwenning
时间:
2011-12-9 08:16
谢谢分享
学习了
作者:
鱼儿游游
时间:
2011-12-9 23:33
本帖最后由 鱼儿游游 于 2011-12-9 23:45 编辑
binary是定长的数组,应该用text,image等好些。
AppendChunk 好象不支持binary类型。
作者:
t小宝
时间:
2011-12-10 10:04
本帖最后由 t小宝 于 2011-12-10 11:48 编辑
鱼儿游游 发表于 2011-12-9 23:33
binary是定长的数组,应该用text,image等好些。
AppendChunk 好象不支持binary类型。
字段类型没有错,问题已经找到,是ReDim ByteData(FileLength) 多声明了一个字节,改为ReDim ByteData(FileLength-1)
就可以了。
正确的代码如下:
Public Function AppendFile()
Dim cmdByRoyalty As ADODB.Command
Dim prmByRoyalty As ADODB.Parameter
Dim FileLength As Long
Dim ByteData() As Byte
Open "C:\test.rar" For Binary Access Read Lock Write As #1
FileLength = LOF(1)
ReDim ByteData(FileLength-1)
Get #1, , ByteData()
Close #1
Set cmdByRoyalty = New ADODB.Command
With cmdByRoyalty
.CommandText = "PARAMETERS oleA LongBinary;INSERT INTO 表1 ( oo ) VALUES([oleA]);"
.CommandType = adCmdText
Set prmByRoyalty = .CreateParameter("oleA", adLongVarBinary, adParamInput, FileLength)
.Parameters.Append prmByRoyalty
prmByRoyalty.AppendChunk ByteData()
Set .ActiveConnection = CurrentProject.Connection
.Execute
End With
End Function
复制代码
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3