【说明】
某学期成绩管理系统的“增、删、改数据表中的记录”对话框如图1-19所示。
图1-19对话框中共定义了6个标签、6个文本框、4个命令按钮和1个Data数据控件。其中Data数据控件是Visual Basic的标准控件。利用它能方便地创建应用程序与数据库之间的连接,并实现对数据资源的访问。【添加】(cmdAdd)按钮用于向学生成绩数据表添加一条空记录:【修改】(cmdEdit)按钮用于修改当前所显示的一条数据记录:命令按钮【删除】(cmdDelete)用于删除当前显示的一条数据记录;单击【退出】(cmdExit)按钮,系统将退出图1-19所示的对话框。
表1-13是学生成绩表结构的示例;表1-14是学生成绩表的示例。
图1-19将表1-14数据库中的记录信息显示到相应的文本框中。要在各文本框(txtStu(i),i=0,1,2,3,4,5)中显示Data数据控件所连接的数据表中的数据,必须将文本框与Data数据控件进行绑定。
表1-13 学生成绩表结构
字段名 | 类型 | 大小 |
| 字段名 | 类型 | 大小 |
班级 | Text | 6 | 语文 | Integer | 2(默认) | |
学号 | Text | 8 | 数学 | Integer | 2(默认) | |
姓名 | Text | 10 | 英语 | Integer | 2(默认) |
表1-14 学生成绩示例表
班级 | 学号 | 姓名 | 语文 | 数学 | 英语 |
A | A40001 | 张薇 | 95 | 86 | 90 |
B | B40001 | 谢新 | 67 | 71 | 81 |
A | A40002 | 刘红 | 94 | 89 | 86 |
C | C40001 | 张斌 | 78 | 88 | 86 |
… | … | … | … | … | … |
Private Sub Form_Load()
For i = 0 To 5
txtStu(i).Locked = True
Next i
End Sub
Private Sub cmdAdd Click()
cmdEdit.Enabled = Not cmdEdit.Enabled
(1)
For i = 0 To 5
txtStu(i) .Locked = Not txtStu(i).Locked
Next i
If cmdAdd. Caption = "添加" Then
(2)
Datal.Caption = "新记录"
cmdAdd.Caption = "保存"
cmdExit.Caption = "取消"
txtStu(0).SetFocus
Else
Datal.Recordset.Update
(3)
cmdAdd.Caption = "添加"
End If
End Sub
Private Sub cmdEdit_Click()
cmdAdd. Enabled = Not cmdAdd. Enabled
cmdDelete. Enabled = Not cmdDelete. Enabled
For i = 0 To 5
txtStu(i).Locked = Not txtStu(i).Locked
Next i
If cmdEdit.Caption = "修改" Then
Datal.Recordset.Edit
cmdEdit.Caption = "保存"
cmdExit.Caption = "取消"
Else
(4)
cmdEdit.Caption = "修改"
End If
End Sub
Private Sub cmdDelete_Click()
answer = MsgBox("确实删除该记录吗", vbYesNo + vbQuestion, "警告")
If answer = vbYes Then
Datal.Recordset.Delete
(5)
If Datal.Recordset.EOF Then
(6)
End If
End If
End Sub
Private Sub cmdExit_Click()
If cmdExit.Caption = "退出" Then
End
Else
(7)
cmdAdd. Enabled= True
cmdEdit.Enabled = True
cmdDelete. Enabled= True
For i = 0 To 5
txtStu(i).Locked = Not txtStu(i).Locked
Next i
cmdExit.Caption = "退出"
cmdAdd.Caption = "添加"
cmdEdit.Caption = "修改"
(8)
End If
End Sub
Private Sub Datal_Reposition()
Datal.Caption = "第" & (9) .AbsolutePosition + 1& "条记录"
End Sub
1. 【问题1】
请根据【说明】和图1-19的显示结果,从以下备选答案中为(1)~(9)空缺处选择正确的答案。(以下部分选项可重复选择)
【备选答案】
- A.Datal.Refresh
- B.Datal.Recordset.Update
- C.Datal.Recordset
- D.Datal.Recordset.CancelUpdate
- E.Datal.Recordset.AddNew
- F.Datal.Recordset.MoveNext
- G.Datal.Recordset.MoveLast
- H.cmdDelete.Enabled=NotcmdDelete.Enabled
参考答案:(1)H或cmdDelele.Enabled = Not cmdDelete.Enabled
(2)E或Datal.Recordset.AddNew
(3)G或Datal.Recordset.MoveLast
(4)B或Datal.Recordset.Update
(5)F中Datal.Recordset.MoveNext
(6)G或Datal.Recordset.MoveLast
(7)D或Datal.Recordset.CancelUpdate
(8)A或Datal.Refresh
(9)C或DataI.Recordset
解析:[要点解析]
这是一道要求读者掌握用Data数据控件访问数据库的综合应用题。本题的解答思路如下。
Data数据控件是Visual Basic的标准控件。利用它能方便地创建应用程序与数据库之间的连接,并实现对数据资源的访问。为了在程序运行时,使Data数据控件能够访问指定表中的记录信息,应设置该控件的DatabaseName属性和RecordSource属性。要在图1-19各文本框中显示Data控件所连接的数据表中的数据,必须将文本框与Data数据控件进行绑定。
本程序开始部分,通过以下语句设置文本框不可编辑,使某条记录成为当前记录后,触发此事件。
For i = 0 TO 5
txtStu(i).Locked = True
Next i
在程序运行中,应注意各命令按钮之间的互相制约关系。例如,单击【添加】按钮后,不允许再单击【修改】、【删除】等按钮。因此本案例在【添加】按钮的Click事件中,用“cmdEdit.Enabled = Not cmdEdit.Enabled”、“cmdDelete.Enabled=NotcmdDelete.Enabled”等语句分别实现【修改】、【删除】按钮不可用状态的设置。因此(1)空缺处所选择的语句是选项H的“cmdDelete.Enabled=Not cmdDelete.Enabled”。
对于添加记录的操作,需单击两次【添加】按钮才能完成。第1次单击该按钮时,执行(1)空缺处的语句。而该语句所要完成的功能是将一条空记录添加到记录集的末尾,因此(2)空缺处所选择的语句是选项E的“Datal.Recordset.AddNew”。由语句“txtStu(i).Locked=Not txtStu(i).Locked”可知,第1次单击【添加】按钮后,就可以在文本框(txtStu(i),i=0,1,2,3,4,5)中输入各字段的数值。
第2次单击【添加】按钮时,执行语句“Datal.Recordset.Update”,其作用是确认添加操作后,再将新记录添加到数据库中。通常,新添加的记录是数据表中的最后一条记录,因此(3)空缺处语句所要完成的功能是,将记录指针移到最后一条记录上,即该空缺处所选择的语句是选项G的“Datal.Recordset.MoveLast”。
对于修改记录中的语句“Datal.Recordset.Edit”,其作用是调用Recordset的Edit方法,使当前记录成为可编辑的状态。在完成修改操作后,还需执行语句“Datal.Recordset.Update”,以确认所要做的修改操作,即(4)空缺处所选择的语句是选项B的“Datal.Recordset.Update”。
对于删除记录的操作,删除当前记录的语句是“Datal.Recordset.Delete”。删除当前记录后应使下一条记录成为当前记录,因此(5)空缺处所选择的语句是选项F的“Datal.Recordset.MoveNext”。
删除当前记录后,如果记录指针指向最后一条记录的后面,则需要重新将记录指针移动到最后一条记录上,使之成为当前记录。语句“If Datal.Recordset.EOF Then”用于判断记录指针是否指向最后一条记录的后面。其中,EOF是Recordset的一个属性,当值为True时,表明记录指针已移到最后一条记录的后面。 (6)空缺处语句所要完成的功能是,使最后一条记录成为当前记录,即该空缺处所选择的语句是选项G的“Datal.Recordset.MoveLast”。(7)空缺处语句所要完成的功能是放弃添加的新记录(或对数据的修改),选择的语句是选项D的“Datal.Recordset.CancelUpdate”。取消所添加的新记录(或对数据修改)的操作后,还需要刷新与Datal相连接的记录集,同时把记录集中的第一条记录设置为当前记录。因此,(8)空缺处所选择的语句是选项 A的“Datal.Refresh”。
最后(9)空缺处所选择的语句用于设置当前记录数,即选项C的“Datal.Recordset”。在Datal的 Reposition事件中,Recordset是Datal控件所控制的记录集对象,通过此对象对数据表中的记录进行浏览和操作。访问数据库的记录集可用Datal.Recordset实现。
另外补充说明一点,对于本试题中,学生成绩表的建立步骤如下。
1)启动数据管理器,选择【外接程序】→【可视化数据管理器】命令。
2)建立数据库,即单击工具栏中的【数据库窗口】按钮。
3)建立数据表结构。在数据库窗口中单击鼠标右键,从弹出的快捷菜单中选择【新建表】命令,打开如图1-21所示的“表结构”对话框。“表名称”栏输入:学生成绩表。按表1-13给出的学生成绩表结构定义表中的各个字段。
[*]
4)编辑数据表中的数据。在数据库窗口的数据表名处单击鼠标右键,从弹出的快捷菜单中选择【打开】命令。在打开的记录操作对话框按表1-14所给出的信息添加各个学生的成绩。