连接Provider从msdasql 改为 sqloledb 后,保存记录集时出错

sundy_RAO 2006-06-13 06:40:46
为了提高从外网连到内网的数据库的传输速度,我将连接方式从msdasql 改为 sqloledb 后,传输速度从原来的3k/s加快到30k/s,但保存记录集时出错错误:

出错信息:
row cannot be located for updating. some values may have been changed since it was last read.

我用原来的连接方式,程序已在局域网内运行了二年多,很正常,最近仓库搬到外面,需要从外网连到公司的数据库,才出现问题。并且,我新增采购单时,不会出错,只有更改保存过后的采购单时才出错。

保存的简要代码如下:
1. 首先删除记录集中所有的老记录
//M_FgRs 记录集
If M_FgRs.RecordCount > 0 Then
M_FgRs.MoveFirst
For i = 0 To M_FgRs.RecordCount - 1
M_FgRs.DELETE adAffectCurrent
M_FgRs.MoveNext
Next
End If
2.从MSHFlexGrid中添加编辑好的记录到记录集
//m_fg>>编辑数据的网格
//....
For i = m_fg.FixedRows To saveRows - 1
M_FgRs.addnew
For j = m_fg.FixedCols To m_fg.Cols - 1
//....
M_FgRs.Fields(j - m_fg.FixedCols).Value = m_fg.TextMatrix(i, j)
//....
Next
Next

3. 处理好记录集的记录后,提交更改到数据库
cn.BeginTrans
//....
//下面这句出错: 出错信息为:
//row cannot be located for updating.
some values may have been changed since it was last read.

M_FgRs.UpdateBatch adAffectAllChapters
//....

cn.CommitTrans
//....

4.连接字符串用我原来的:
cnsql = "DRIVER=SQL Server;SERVER=" & bserver & ";UID=" & buserid & ";PWD=" & bpassword & ";WSID=RECEPTION;DATABASE=" & bdataname & ";Network=DBMSSOCN;Address=" & bserver & "," & sqlPort
不出错,但从外网连接速度很慢
用您的连接字符串:
cnsql = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=" & buserid & ";Password=" & bpassword & ";Initial Catalog=" & bdataname & ";Data Source=" & bserver & "," & sqlPort
从外网连接速度较快,查询语句也正常但编辑数据时就出错了.

请指教。 谢谢。
...全文
166 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sundy_RAO 2006-06-13
  • 打赏
  • 举报
回复
谢谢,
现在的问题不是连接的问题了。 我按您的方式,已经能连通,新建采购单也正常运行,但是更改数据时,我用的是M_FgRs.UpdateBatch adAffectAllChapters,就会出错了,而我用odbc连接的方式,都很正常的,这个系统已经用了差不多三年了。
zjcxc 2006-06-13
  • 打赏
  • 举报
回复
先检查sql的补丁装了没有.

没有的话要打上补丁,检查的方法是在查询分析器中运行:
select @@version
如果出来的版本号是8.00.2039以下,则表明你未安装sp4的补丁,要装上.

SQL补丁下载:
全部补丁的位置(在下载页的中间部分,可以选择语言,以下载和sql server实例语言对应的补丁)
http://www.microsoft.com/downloads/details.aspx?FamilyId=8E2DFC8D-C20E-4446-99A9-B7F0213F8BC5&displaylang=zh-cn
应该安装的是
http://download.microsoft.com/download/9/b/f/9bff6646-2cdb-4069-ada0-548be9cb9338/SQL2000-KB884525-SP4-x86-CHS.EXE
注意下载后,执行的时候是解压,要在解压后的目录中执行setup.bat才是真正的安装


如果你的操作系统是xp,那么在安装xp sp2后,不管以前是否安装过sql sp4,都要再安装一次,并且在防火墙中开启1433端口,否则无法被其他电脑访问

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧