数据库记录自动插入及排序的子程序

Author: 寿永斌 Date: 1997-01-01

  在对数据库进行记录修改操作时,往往需要插入新的记录,同时需要将所有记录的序号字段重新设置。例如:当在原序号3与4的记录之间插入一个新的记录时,需要将新记录登记为4号,并将原4号记录及以后的所有记录的序号顺延加1,即改为5、6、7等。上述操作,当数据库记录量较大时,如果全部用手工修改的话,工作量是不小的。下面的子程序段利用SORT和REPLACE命令,可自动快速完成上述修改过程。
  SORT ON NUMB TO LSWJ
  *“NUMB”——所需处理数据库序号的字段名,数值型,小数点1位
  *“LSWJ”——存放数据的临时文件
  ZAP
  APPEND FROM LSWJ
  DO WHILE .NOT. EOF()
  M_NUMB=INT(NUMB+0.9)
  IF M_NUMB>NUMB
  REPLACE NUMB WITH INT(NUMB)+1
  DO WHILE .NOT. EOF(0)
  SKIP
  REPLACE NUMB WITH NUMB+1
  LOOP
  ENDDO
  ENDIF
  SKIP
  LOOP
  ENDDO
  程序运行时,当需要插入新的记录时,只要将序号登记为插入点前后序号之间的一个带小数的数字即可。例如:要在原记录4号和5号间插入一个新的记录,将新记录号登记为4.5,上述子程序运行后,新记录即改为5号,而原记录5号及以后各数据均顺延加1。如果要同时插入两个或以上记录的话,新记录序号顺次登记为4.1、4.2、4.3等即可。