好,言归正传,下面就来看看笔者是怎么样实现记录删除后自动调整记录编号这一功能的。
首先大家来看一下我的这个人事管理系统的删除表单:见图1,这里面的各个控件我想大家一看就知道是干什么用的了,在此我就不再介绍,有一点要说明的是,数据库(或表)打开的时候是不能带除了编号以外的索引的,也就是说必须要以编号排序的方式。
在图1的表单中,“取消”,“确定”这两个按钮的代码笔者就不详细介绍了,根据程序作用的不同这两个按钮的代码可能会有一些出入。“上一个”和“下一个”按钮的代码也很简单,主要是一些判断记录有没有到头或到尾的代码和跳转记录时刷新的代码,在此也不多做介绍。下面我们主要来看看“删除”这个按钮的代码,整个“删除”按钮的代码如图2所示:下面我来介绍一下各段代码的作用:
| =========================================== scyesno=messagebox("真的要删除吗?",4+32,"确认") &&这一句不用我多说吧?产生一个“确认”对话框。 if scyesno=6 &&如果用户按下“确定”按钮。 b=recno() &&首先把要删除的记录号储存下来,以下要用到。 delete &&把选定的记录作删除标记。 pack &&把选定的记录从数据库中彻底删除。 messagebox("已经搞定!",0+64,"删除完毕") &&产生一个“删除完毕”的对话框。 go bottom &&数据库的记录指针移到尾部。 if reccount()>0 &&判断表中的记录个数是不是大于0,即还有没有记录。如果刚才删除的是数据库中最后 一条记录,不加这条判断语句截止的话 再向下执行会出错!所以这是一条相当重要的判断代码。 if b<recno() .or. b=recno() &&如果刚才删除的记录号小于或等于最后一条记录的记录号。(在此注意 一下上面“go bottom”这句代码的作用。) go b &&跳转到刚才删除的记录的记录号上,从这一条记录开始修改记录的编号。 do whil .not. eof() &&如里不到数据库结尾则重复执行以下修改编号的代码: replace 编号 with 编号-1 &&把当前记录的编号减1并保存。 skip &&跳转到下一条记录。 enddo &&结束假设和循环。 go b &&这句要不要都行,主要是为了方便在表单里显示删除的那条记录的下一条记录的内容的。 endif &&结束判断。 endif &&结束判断。 endif &&结束判断。 |
| thisform.text1.refresh thisform.text2.refresh thisform.combo1.refresh thisform.text4.refresh thisform.text5.refresh thisform.text6.refresh thisform.text7.refresh thisform.edit1.refresh thisform.oleboundcontrol1.refresh =============================================== |
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器