当前位置: 代码迷 >> VFP >> 怎么才能使记录号不移动
  详细解决方案

怎么才能使记录号不移动

热度:7698   发布时间:2013-02-26 00:00:00.0
如何才能使记录号不移动
有一个表单,表单上有一个自由表

表单里的init里有如下命令:


CALCULATE Sum(值) To nMaxID 或 此条命令改成 sum all 值 to nMaxID
thisform.label1.caption=alltrim(str(nMaxID))

运行表单时,指录指针却直接到最后一行了.


在对表的操作中,如:现在对第N行记录进行删除操作,同样要运行上述二条命令,

可是一旦运行上述二行后,记录指针又一下到末行了....而不能保持原来的第N行.

不知如何改,才能不让记录指针移动...请老师指导.

------解决方案--------------------------------------------------------
前面获取记录号

m.Number = recno()

你的语句

go (m.Number)

如果进行删除操作,还要判断一下m.Number是否大于表的总条数
------解决方案--------------------------------------------------------
oldrecn=recno() &&保存当前记录号
*----如果是进行统计操作,统计结束后回到原位置
go oldrecn
*----如果是进行删除操作,还要判断删除操作前记录的位置
do case
case recno()=reccount() &&当前记录是最后一条记录
delete next 1
pack
skip -1
case recno()<reccount() and recno()>1 &&当前记录不是最后一条记录,也不是第一条记录
delete next 1
pack
*----此时有两种情况,一种是记录向后移动,一种是记录向前移动
skip -1 &&向后移动
或者
skip 1 &&向前移动
case recno()=1 &&当前记录是第一条记录
delete next 1
pack
skip 1 &&记录向前移动
endcase
只有这样删除操作后,才不会发生错误(前提是不使用数据缓冲区)
  相关解决方案