今天敲学生信息管理系统修改班级信息窗体时,当敲到删除记录的代码时,突然对“功能块”这一概念理解的非常深。
下面拿这段代码来解释一下:
If str2$ = vbOKThen
mrc.MoveNext '找到删除后要显示的下一条,显示出来
If mrc.EOF Then
mrc.MoveFirst
mybookmark = mrc.Bookmark
mrc.MoveLast '??
If mrc.RecordCount = 1 Then
mrc.Delete
Unload Me
Exit Sub
Else
mrc.Delete
mrc.Bookmark = mybookmark
Call viewdata '显示删除后的记录
End If
Else
mybookmark = mrc.Bookmark
mrc.MovePrevious '记录集指针,指向要删除的记录
mrc.Bookmark = mybookmark '记录集指针指向被删除的下一个
Call viewdata ' 显示被删除的下一个记录。
End If
Else
mrc.Bookmark = mybookmarkf
Call viewdata
End If
这是删除记录的代码,那么这段代码究竟是什么意思那现在给大家解释一下
‘bookmark是标当前dbgrid的位置,这里的作用就是当点删除时,先记录下当前dbgrid的位置,
‘如果确定删除,判断是不是到最后了,
'如果是就回到第一行,删除,位置留在第一行,
'如果不是最后则删除数据后保持bookmark在当前位置;
'如果没有执行删除,则bookmark也保持在当前位置不变
这么说大家肯定可以理解,但是代码又究竟该怎么理解那??现在来看一下。
这个代码又三个if语句也就是有三个功能块
先来看最里面的一个:
If mrc.RecordCount = 1 Then '这段代码是记录只有一条的特殊情况
mrc.Delete
Unload Me
Exit Sub
End If
再来看第二个:
If mrc.EOF Then ‘删除记录在最后位置
mrc.MoveFirst
mybookmark = mrc.Bookmark
mrc.MoveLlast
mrc.Delete
mrc.Bookmark = mybookmark
Call viewdata
Else ‘删除的记录不在最后一条
mybookmark = mrc.Bookmark
mrc.MovePrevious
mrc.Delete
mrc.Bookmark = mybookmark
Call viewdata
End If
再来看最外围的情况,就容易多了。
If str2$ = vbOKThen
mrc.MoveNext
.......
Else
mrc.Bookmark = mybookmarkf
Call viewdata
End If
我认为功能块的主要功能是①把这个功能的代码连接起来一次性看完或写完,这样很利于理解,不至于一会看这个功能的代码一段,一会看那个功能的代码一段,导致代码理解混乱。
②在写代码时,也不至于丢句子。