请教!用的是VB 6.0
把已有数据(数据大于20行)的RS(recordset)的第10行数据与第11行数据做加法后,删除第11行的数据,然后把后面的数据向前移。
RS的话修改数据是会更新数据库,现在的问题是RS里的已有数据是用SQL语句分类统计出来的,无法更新。我也不需要更新数据,只要能做到第10行数据与第11行数据做加法后,删除第11行的数据,然后把后面的数据向前移就行了。不更新数据。
之前我用双重循环
但是运行到rs1.fields(z)=rs1.fields(z)+rs2.fields(i) z=10 i=11
就会出错。原因是一旦赋值就会更新数据库,有什么办法解决或绕开这个问题伐?如有知道的,请帮个忙。
简单点说就是能对返回的结果进行编辑但又不会更新数据库的控件有伐?
[解决办法]
就是 5 楼说的方法,在 while 前面加
set rsCopy7.ActiveConnection = Nothingset Module2.rs.ActiveConnection = Nothing
[解决办法]
set rsCopy7.ActiveConnection = Nothing
set Module2.rs.ActiveConnection = Nothing
[解决办法]
For Z = 2 To 13 '从第三个字段到第14个字段?
rsCopy7.Fields(Z) = rsCopy7.Fields(Z) + Module2.rs.Fields(Z) '检查数据类型是否匹配,能否相加
Next
[解决办法]
说明你的记录根本不支持更新。
不能使用 Clone,应该用这个帖子中的函数进行复制,而且不再需要设置 ActiveConnection 了
set rsCopy7=CopyRecordSetUpdatable(Module2.rs)While Not rsCopy7.EOF ...
[解决办法]
'移动到第一行记录if Not Module2.rs.EOF then Module2.rs.movefirst'cloneSet rsCopy7 = Module2.rs.Clone Module2.rs.Requery Set rsCopy7.ActiveConnection = Nothing rsCopy7.move 9 '第十条记录(向下移动9行) Module2.rs.move 10 '第十一条记录(向下移动10行) For Z = 2 To 13 rsCopy7.Fields(Z) = rsCopy7.Fields(Z) + Module2.rs.Fields(Z) Next Z '.....
[解决办法]
在 CopyRecordSetUpdatable() 的循环中加一行
debug.print fld.Name, fld.Type, fld.DefinedSize, fld.Attributes
[解决办法]
只有6个字段,怎么循环要 For Z = 2 To 13 ?
[解决办法]
赋值出错时 Z 是多少,至少将这个字段贴出来。
[解决办法]
CopyRecordSetUpdatable() 第一个循环中改成下面的形式试试,或者去掉最后一个参数试试
rsReturn.Fields.Append fld.Name, fld.Type, fld.DefinedSize, (fld.Attributes and (not adFldUnknownUpdatable)) or adFldUpdatable