内容正文:
第五单元 VB访问Access数据库
1.下列VB程序段用于读取某数据库中的数据,相应数据表结构如第1题图所示。
Dim adoConn As New ADODB.Connection
Dim adoRs As New ADODB.Recordset
Dim a(1 To 1000) As String, b(1 To 1000) As Integer
adoConn.ConnectionString = "Provider = Microsoft.ACE.0LEDB.
12.0;DATA source = "&App.Path&"\mydata.accdb"
adoConn.Open
Set adoRs.ActiveConnection = adoConn
adoRs.Open"Select*From Score"
n = 0
Do While Not adoRs.EOF
n = n+1
a(n) = adoRs.Fields("学号").Value
b(n) = adoRs.Fields(3).Value.
adoRs.MoveNext
Loop
adoRs.Close∶adoConn.Close
下列对于该程序段的理解正确的有( B )
①程序连接的数据库文件名是“\mydata.accdb”
②程序打开的数据表名称是“Score”
③程序将数据表中的数学成绩存入数组b
④程序运行后,变量n的值表示该数据表中记录的总数
⑤关闭数据表的语句为adoConn.close
A.①②④ B.②③④
C.②④⑤ D.②③④⑤
解析:本题主要考查对利用数据库提取数据程序段的理解。程序连接的数据库文件名为“mydata.accdb”,其中的“\”表示路径,故选项①不正确;由“select*From Score”可知,程序打开的数据表为“Score”,故选项②正确;记录集的字段编号是从0开始的,所以由“b(n) = adoRs.Fields(3).value”可知,数组b中存放的数据表中第4个字段的值,再观察数据表的结构,数学成绩对应的是第4个字段,故选项③正确;变量n的初值为0,每读取一条记录,该值进行加1处理,所以选项④正确;语句“adoConn.close”的作用是关闭数据库连接,故选项⑤不正确。故选B。
2.小王用VB编写了一个考场座位编排程序,实现从考生数据库里读出所有学生的姓名和前一次考试成绩,分别存入数组Xm和数组cj中,并按成绩从高到低排序后 显示在List1中。输入考场规格和考场号,单击“考场座位编排”按钮command1后,从第一位考生开始按S型(如第2题图a所示)依次安排座位,并在List2中输出该考场的座位表。每个姓名输出占4个汉字字符宽度,不足4个字符的在姓名后面补充空格(如第2题图b所示),尾试场多余位置显示“空”字。
程序的部分代码如下,请回答下列问题:
(1)当考生总人数为141人,考场规格为6行5列时,第3考场的第6位考生是List1中第 位考生。
(2)从下面代码可以看出,姓名和成绩数据取自数据库中名为 的数据表。
(3)实现上述功能的VB程序如下,请补充完善代码。
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim n As Integer
Dim xm(l To 1000)As String
Dim cj(1 To 1000)As Integer
Function fm(s As String, k As Integer)As String
x=Len(s)
fm=s+Mid(" ", 1,(k-x)*2) ′此处空格字符串长度足够
End Function
Private Sub Form_Load()
Dim i As Integer, j As Integer, tl As Integer, t2 As String
conn.ConnectionString="Provider=Microsoft.ACE.0LEDB.12.0;DATA Source=" & App.Path & "\cjk.accdb"
conn.Open
Set rs.ActiveConnection=conn
rs.Open "select * from 总分表"
n=0
Do While Not rs.EOF
n=n+l
xm(n)=rs.Fields(1) ︰cj(n)=rs.Fields(2)
rs.MoveNext
Loop
rs.Close
conn.Close
Text4.Text="共有考生" & n & "人"
′此处代码