我在做一个图纸更改登记程序,所有查询、添加、修改、删除、排序等操作都很正常,但在导出记录完毕时出现文本框一片空白,好像文本框与记录集失去了绑定一样。
我用了一个ListView控件来显示按条件查询到的记录集,并将相关文本框与记录集邦定来显示单个记录字段值。在窗体上设有“导出当前记录”和“导出全部记录”按钮。在导出按条件查询到的ListView显示的当前记录的过程中,我使用了一个记录集Cr,在单击ListView时,Cr记录集将会根据ListView的行数移动,相应文本框显示值也跟随Cr移动而变化。
我做了一个数据库操作类模块DbOperation并在Form中引用,类模块DbOperation中有一个ExportToAccess函数,在“导出当前记录”和“导出全部记录”按钮的单击事件中使用了DbOperation的ExportToAccess函数,并将Cr传递给函数的参数Rs,并使用了Byval来传递。在导出时用到了
Rs.MoveFirst
Do Rs.EoF
“此处为导出语句”
Rs.MoveNext
Loop
最终Rs被移动到了最后一条记录之后,此时弹出“数据到处完毕”提示框,在这时我发现所有文本框一片空白,没有任何内容显示,但ListView无任何变化。所以我非常疑惑,难道Rs发生变化也会影响到Cr记录集?我还做了一个试验:
Dim mRs as new Adodb.Recordset
set mRs=Cr
mRs.MoveFirst
Do mRs.Eof
mRs.MoveNext
Loop
此时mRs也被移到了最后一条记录之后,mRs.AbsolutePosition=-3,-3的值=adPosUnknown,同时我也检查Cr,其指针与mRs一样。我很郁闷。因为mRS已被实例化了,是一个新对象,Cr是另一个对象,按理说mRs与Cr互不相干,但事实证明它们之间是关联的,我觉得用了Byval就不应该,传过来的Rs是Cr的一个副本(书上是这么说的),副本与原件是两个对象,各是各的。
所以,我恳请大家发表你的高解帮我解惑!
[此贴子已经被作者于2006-5-13 22:00:22编辑过]