在敲学生信息修改窗体时才第一次接触mybookmark=mrc.bookmark,当时不知道什么意思,也没在意,想着先让程序跑起来,把这的代码写完在说。
后来当我敲完之后,我发现了在“取消”按键的代码和“修改”案件的代码中都有类似的出现。
Private Sub cmdEdit_Click()
mcclean = False
cmdFirst.Enabled = False
cmdprevious.Enabled = False
cmdNext.Enabled = False
cmdLast.Enabled = False
txtSID.Enabled = True
txtName.Enabled = True
combosex.Enabled = True
txtBorndate.Enabled = True
comboClassNo.Enabled = True
txtRudate.Enabled = True
txtTel.Enabled = True
txtAddress.Enabled = True
txtComment.Enabled = True
'为取消该事件做标签
myBookmark = mrc.Bookmark
End Sub
Private Sub cmdCancel_Click()
If Not mcclean Then
'导航按钮有效
Frame2.Enabled = True
cmdFirst.Enabled = True
cmdprevious.Enabled = True
cmdNext.Enabled = True
cmdLast.Enabled = True
'文本按钮失效
txtSID.Enabled = False
txtName.Enabled = False
combosex.Enabled = False
txtBorndate.Enabled = False
comboClassNo.Enabled = False
txtRudate.Enabled = False
txtTel.Enabled = False
txtAddress.Enabled = False
txtComment.Enabled = False
'与修改事件中标签相呼应,回到修改前
mrc.Bookmark = myBookmark
Call viewData
Else
MsgBox "什么都没有修改 vbOKOnly + vbExclamation, "警告
End If
End Sub
通过网上查找我发现,大家说的都是将标签跟游标挂钩,就好像是一个面一样,恢复数据就是游标以前的位置,很明显这是二维的。为了更好的理解,我将标签看成空间地址,一个三维空间。
Dim mybookmark as Variant这是开头对mybookmark的声明。
mrc代表vb提取到的数据库信息
variant变量定义的一种变体类型。意思是:我现在定义了这个变量,但是我并不确定将来对他赋予什么类型来操作,所以就先暂时向内存借一个位置(空间)放下变量.等将来实际操作的时候动态的根据需要为该变量赋予相应类型。
在修改按钮事件中,mybookmark=mrc.bookmark。由于数据库中数据很多,有各种类型,那么让mybookmark为变体变量就容易理解了。事先让mybookmark占用一些数据空间来保存未更改前的数据库信息。
在取消修改事件中,mrc.bookmark=mybookmark。由于mybookmark是单独存在保存数据,数据库里的信息改变与它没有影响,当mrc.bookmark等于mybookmark时,数据库可以恢复到修改以前的数据。