为什么?????为什么?????帮帮我!!!!!帮帮我!!!!!RecPicture.update时出错.......错误提示为:实时错误'-2147217887(80040e21)'!!!!有分散散
也许正如楼上的说的
我用这种方法
写引用ADO2.5以上Dim Auno As String '车辆号牌号码
Dim Row As Long '页码号
Dim FileName As String '
Dim stm As New ADODB.Stream '二进制流
Timer1.Enabled = False
While Not L_rs.EOF
Auno = L_rs!Auno
Row = L_rs!inrow
FileName = L_rs!fpath & L_rs!fname
If stm.State <> adStateClosed Then
stm.Close
End If
stm.Type = adTypeBinary
stm.Open
stm.LoadFromFile FileName
G_Rs.AddNew
G_Rs.Fields("Auno") = Trim(Auno)
G_Rs.Fields("InRow") = Row
G_Rs.Fields("APos") = Pos
G_Rs.Fields("PageN").AppendChunk stm.Read
G_Rs.Update
stm.Close
L_rs.MoveNext
Wend
Set stm = Nothing
Animation1.Stop
我用这种方法
写引用ADO2.5以上Dim Auno As String '车辆号牌号码
Dim Row As Long '页码号
Dim FileName As String '
Dim stm As New ADODB.Stream '二进制流
Timer1.Enabled = False
While Not L_rs.EOF
Auno = L_rs!Auno
Row = L_rs!inrow
FileName = L_rs!fpath & L_rs!fname
If stm.State <> adStateClosed Then
stm.Close
End If
stm.Type = adTypeBinary
stm.Open
stm.LoadFromFile FileName
G_Rs.AddNew
G_Rs.Fields("Auno") = Trim(Auno)
G_Rs.Fields("InRow") = Row
G_Rs.Fields("APos") = Pos
G_Rs.Fields("PageN").AppendChunk stm.Read
G_Rs.Update
stm.Close
L_rs.MoveNext
Wend
Set stm = Nothing
Animation1.Stop
解决方案 »
- 如何用vb打开一个报错的excel文件?
- 终于搞清楚了类模块的使用方法......可一点也不高兴
- 有个API函数,有返回值,但却读不到内存中的内容,请诸位大侠看看!
- 怎样得到鼠标滚轮的滚动事件
- 怎么没有miscrosoft data bound grid control 5.0这项?
- : vb开发三维图形编辑系统,有谁尝试过吗?
- 散分啦!散分啦!急需单纯形法原程序!
- POPUPMENU弹出后进入下一个表单,再popupmenu时菜单就出不来了,有办法解决吗?
- 我想实现像QQ里的使用代理服务器的功能,我应该怎么办?请各位大哥帮帮忙。
- 做高手不给菜鸟做主,不如回家卖红薯!!!!
- 积极请教:下面有几行与数据库相关的代码,很简单(但我是新手).请教几个问题.谢谢!!!
- 帮我找个控件
While Not G_Rs1.EOF
Set L_rs = G_Conn.Execute("select * from Au_vehicles where Auno='" & G_Rs1!c_hphm & "' order by inrow asc")
While Not L_rs.EOF
If stm.State <> adStateClosed Then
stm.Close
End If
stm.Type = adTypeBinary
stm.Open
stm.Write L_rs.Fields("PageN").GetChunk(L_rs.Fields("PageN").ActualSize)
stm.SaveToFile TmpPath & "\tmp" & G_Rs1!c_hphm & L_rs!inrow & ".jpg", IIf(Len(Trim(Dir(TmpPath & "\tmp" & G_Rs1!c_hphm & L_rs!inrow & ".jpg", vbNormal + vbHidden))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist)
Dim st As String
st = "insert into Au_temp values ('" & L_rs!Auno & "','" & TmpPath & "\','" & "tmp" & G_Rs1!c_hphm & Trim(Str(L_rs!inrow)) & ".jpg'," & L_rs!inrow & ")"
G_Conn.Execute (st)
L_rs.MoveNext
Wend
G_Rs1.MoveNext
Wend
但为什么RecPicture.Update会出错?
将 .gif 文件的内容移到 SQL Server 表的 Image 列。 更多信息
下面的代码示例所针对的数据存储在 SQL Server 7.0 pubs 示例数据库的 pub_info 表中。 您需要修改 ADO 连接字符串,使之指向您安装的 SQL Server。 示例 1: 将 SQL Server Image 列中的数据保存到硬盘文件中
该示例代码将打开在 pubs 数据库的 pub_info 表中的记录集,并将存储在第一条记录 logo 列中的二进制图像数据保存到硬盘文件中,如下所示:
新建一个标准 EXE Visual Basic 工程。
在工程菜单上,单击选择引用,然后设置一个到 Microsoft ActiveX Data Objects 2.5 Object Library 的引用。
将 CommandButton 控件放在 Form1 上。
在该窗体的常规声明段中作如下声明:
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim mstream As ADODB.Stream
将下面的代码剪切并粘贴到添加到该窗体的 CommandButton 所对应的 Click 事件中:
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB;data Source=<name of your SQL Server>;
Initial Catalog=pubs;User Id=<Your Userid>;Password=<Your Password>"Set rs = New ADODB.Recordset
rs.Open "Select * from pub_info", cn, adOpenKeyset, adLockOptimisticSet mstream = New ADODB.Stream
mstream.Type = adTypeBinary
mstream.Open
mstream.Write rs.Fields("logo").Value
mstream.SaveToFile "c:\publogo.gif", adSaveCreateOverWriters.Close
cn.Close
保存并运行该 Visual Basic 工程。
单击 CommandButton,即可将第一条记录的 logo 列所包含的二进制数据保存到文件 c:\publogo.gid 中。请用资源管理器找到并打开该文件,以查看所保存的图像。 该示例中的代码声明了一个 ADODB Stream 对象,并将它的 Type 属性设置为 adTypeBinary,以表示将使用该对象处理二进制数据。 然后,通过调用 Stream 对象的 Write 方法,存储在 pub_info 表第一条记录的 logo 列中的数据被写出到 Stream 对象中。 现在,Stream 对象包含了二进制数据,该二进制数据是通过调用该对象的 SaveToFile 方法并传入文件的路径保存到文件中的。 作为第二个参数被传入的常量 adSaveCreateOverWrite 则导致 SaveToFile 方法覆盖指定的文件(如果它已经存在)。
示例 2: 将以 .gif 文件格式存储的图像传输到 SQL Server 表的 Image 列
该示例代码将通过覆盖 pub_info 表的当前内容,将一个以 .gif 文件格式存储的图像保存到该表的第一条记录中,如下所示:
新建一个标准 EXE Visual Basic 工程。
在工程菜单上,单击选择引用,然后设置一个到 Microsoft ActiveX Data Objects 2.5 Object Library 的引用。
将 CommandButton 按钮放在 Form1 上。
在该窗体的常规声明段中作如下声明:
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim mstream As ADODB.Stream
将下面的代码剪切并粘贴到添加到该窗体的 CommandButton 所对应的 Click 事件中:
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB;data Source=<name of your SQL Server>;
Initial Catalog=pubs;User Id=<Your Userid>;Password=<Your Password>"Set rs = New ADODB.Recordset
rs.Open "Select * from pub_info", cn, adOpenKeyset, adLockOptimisticSet mstream = New ADODB.Stream
mstream.Type = adTypeBinary
mstream.Open
mstream.LoadFromFile "<path to .gif file>"
rs.Fields("logo").Value = mstream.Read
rs.Updaters.Close
cn.Close
保存并运行该 Visual Basic 工程。
单击 CommandButton 运行该代码,即可将 .gif 文件的内容以数据流的方式传输到 ADO Stream 对象中,并将 Stream 中的数据保存到记录集内第一条记录的 logo 列。
请使用示例 1 中的代码,确认 logo 列中的图像已被修改。
Close intFile
'错误出在这...
RecPicture.Update '错误出在这...
'错误出在这...
RecPicture.Close
这样试试:
RecPicture.Update '错误出在这...
'错误出在这...
Close intFile
'错误出在这...
RecPicture.Close我没怎么用你这种方法,现在都用的是Stream!
因为我看你的后面好象是说已经关闭,不能更新的意思!
后面在循环内更新是没问题的!
你试试!
Fragment = lngFileLen Mod ChunkSize
ReDim Chunk(Fragment)
Get intFile, , Chunk()
RecPicture.Fields("Picture").AppendChunk Chunk()
ReDim Chunk(ChunkSize)
For i = 1 To Chunks
Get intFile, , Chunk()
RecPicture.Fields("Picture").AppendChunk Chunk()
Next i
不明白你这段为什么这么写,你可以把整个文字读到一个数组里面呀
如
ReDim Chunk(LOF(intFile))
Get intFile, , Chunk()
RecPicture.Fields("Picture").AppendChunk Chunk()
我知道原因了。。这个函数用在sql server不会出错。
而用在mdb access 3.51的数据库时就会出错。。