(共29张PPT)
00|作业讲解
3.某同学用VB编码如下程序:
Private Sub Command1_Click()
Dim k As Integer, a As Integer, b As Integer
a = Val(Text1.Text) : b = Val(Text2.Text)
Label1.Caption = trans(a, b)
End Sub
Function trans (m As Integer, n As Integer) As Stirng
If m <> 0 Then
r = m Mod n
trans = trans(m\n , n )+Str(r)
Else
trans = 0
End If
End Function
程序运行时,在文本框Text1和Text2中分别输入11和2,则Label1中的输出结果是( )
A. 01011 B.1011 C.01101 D.11010
正确率:54.34%
00|作业讲解
4.某个进行素数判断的VB程序段如下:
Private Sub Command1_Click()
Dim x As Integer
x= Val(Text1.Text)
Label1.Caption=Str(x)+prime(x,2)
End Sub
Function prime(n As Integer, m As Integer) As String
If n=m Then
prime =”是素数。”
Elself n<2 0r n Mod m =0 Then
prime =”不是素数。”
Else
prime = prime (n, m+l)
End IF
End Function
在文本框Textl中输入的值是123,并执行程序后,自定义函数prime被执行的次数是( )
A.1次 B.2次 C.122次 D.123次
正确率:26.59%
00|作业讲解
5.有如下VB程序段 :
Private Sub Command1_Click()
Dim i As Integer, s As Integer
s=0
For i = 1 To 3 step 2
s = s + f(i)
Next i
Text1.Text = Str(s)
End Sub
Function f(n As Integer) As Integer
If n = 1 Then f = 2 Else f = f(n - 1) + n
End Function
执行该程序段后,s的值为( )
A.2 B.7 C.9 D.13
正确率:20.29%
00|作业讲解
6.猴子摘桃:一群猴子摘了n个桃子,第2天吃了一半后又多吃了一个;以后每天吃剩余的桃子的一半后又再多吃一个;直到第10天,只余下最后一个桃子。请问它们第1天摘了多少个桃子?
Private Sub Command1_Click()
Dim n As Integer
Label1.Caption = "一共摘了:" + (1)
End Sub
Private Function zt(n As Integer) As Integer
If n = 10 Then
zt = 1 '第10天的桃子为1个
Else
zt = (2)
End If
End Function
Application of algorithm in data management
12
01|问题引入
VB从Access数据文件中读取数据要经历哪些步骤?
02|VB连接数据库的基本步骤
VB连接数据库的基本步骤
①打开(连接)数据库
②打开数据库中的记录集(数据表)
③读取记录集中对应字段对应记录的数据
④利用VB中的数组变量存储这些数据
⑤对存储好的数组元素进行查找、排序
lggz.accdb
03|前期准备
关于ADO
ADO是微软公司提供的一种应用程序访问数据库的编程接口。通过ADO的相关对象,可建立VB与ACCESS的数据连接。
VB使用ADO时要添加ADO的引用,具体方法:工程-引用-勾选“Microsoft ActiveX Data Objects 6.0 Library”
04|打开(连接)数据库
打开(连接)数据库
步骤:①定义连接数据库的对象
②确定连接的数据库位置和名称
③打开(关闭)到数据库的连接
①定义连接数据库的对象
例:Dim conn As New ADODB.Connection
连接实例的名称
释义:定义了一个新的ADO数据库连接,该实例的名称为conn
04|打开(连接)数据库
打开(连接)数据库
步骤:①定义连接数据库的对象
②确定连接的数据库位置和名称
③打开(关闭)到数据库的连接
②确定连接的数据库位置和名称
conn.ConnectionString =
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
+ App.Path + "\lggz.accdb"
释义:将数据库连接实例conn的ConnectionString(连接字符串)设置为数据库文件对应的地址。其中APP.Path返回当前VB程序所在的绝对路径。
lggz.accdb
04|打开(连接)数据库
打开(连接)数据库
步骤:①定义连接数据库的对象
②确定连接的数据库位置和名称
③打开(关闭)到数据库的连接
③打开(关闭)到数据库的连接
conn.Open
conn.Close
释义:数据库连接实例conn调用Open(打开)或Close(关闭)
04|打开(连接)数据库
打开(连接)数据库
补充:连接对象实例的State属性
连接对象实例conn的State属性用来反映其是否连接成功
If conn.State = adStateOpen Then
Label2.Caption = "数据库连接打开成功"
Else
Label2.Caption = "数据库连接打开失败"
End If
adStateOpen:表示对象已经打开
adStateClosed:表示对象已经关闭
04|打开(连接)数据库
打开(关闭)数据库
Dim conn As New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + App.Path + "\lggz.accdb“
conn.Open
If conn.State = adStateOpen Then
Label2.Caption = "数据库连接打开成功"
Else
Label2.Caption = "数据库连接打开失败"
End If
conn.Close
If conn.State = adStateClosed Then
Label2.Caption = "数据库连接关闭成功"
Else
Label2.Caption = "数据库连接关闭失败"
End If
05|打开数据库中的记录集(数据表)
打开数据库中的记录集(数据表)
步骤:①定义一个数据集
②设置记录集的连接属性
③打开(关闭)记录集
①定义一个数据集
例: Dim rs As New ADODB.Recordset
数据集实例的名称
释义:定义了一个新的ADO数据库数据集,该实例的名称为rs
05|打开数据库中的记录集(数据表)
打开数据库中的记录集(数据表)
步骤:①定义一个数据集
②设置记录集的连接属性
③打开(关闭)记录集
②设置记录集的连接属性
例: Set rs.ActiveConnection = conn
释义:设置记录集rs的连接属性,使该记录集连接到连接对象conn上,以便从对应的数据库中读取数据。
05|打开数据库中的记录集(数据表)
打开数据库中的记录集(数据表)
步骤:①定义一个数据集
②设置记录集的连接属性
③打开(关闭)记录集
③打开(关闭)记录集
rs.Open "SELECT*FROM qmcj "
释义:打开记录集并读取qmcj表中的所有内容
rs.Close
释义:关闭记录集
补充:连接对象实例的State属性
记录集对象实例rs的State属性用来反映其是否打开(关闭)成功
If rs.State = adStateOpen Then
Label2.Caption = “记录集打开成功"
Else
Label2.Caption = “记录集打开失败"
End If
adStateOpen:表示对象已经打开
adStateClosed:表示对象已经关闭
05|打开数据库中的记录集(数据表)
打开数据库中的记录集(数据表)
05|打开数据库中的记录集(数据表)
打开数据库中的记录集(数据表)
Dim rs As New ADODB.Recordset
Set rs.ActiveConnection = conn
rs.Open "SELECT*FROM student"
If rs.State = adStateOpen Then
Label2.Caption = "打开数据集成功"
Else
Label2.Caption = "打开数据集失败"
End If
rs.Close
If rs.State = adStateClosed Then
Label2.Caption = "关闭数据集成功"
Else
Label2.Caption = "关闭数据集失败"
End If
05|打开数据库中的记录集(数据表)
RecordSet对象的基本属性和方法
方法或属性 含义 格式
Open方法 打开记录集对象 rs.open [sql字符串],[connection对象]
Close方法 关闭打开的记录集对象 rs.close
MoveNext方法 移到下一条记录 rs. MoveNext
MovePrevious方法 移到上一条记录 rs. MovePrevious
MoveFirst方法 移到第一条记录 rs. MoveFirst
MoveLast方法 移到最后一条记录 rs. MoveLast
Fields集合 记录集对象的字段集合 rs. Fields("字段名")或rs. Fields(字段索
引)注意:索引从0开始
EOF(end of file)属性 判断是否到记录集结尾 rs.EOF
BOF(begin of file)属性 判断是否到记录集开始 rs.BOF
06|读取记录集中对应字段对应记录的数据
读取记录集中的数据
ID 姓名 班级 考号
1 叶方豪 12 180309100496
2 金素素 14 180309100522
3 欧阳子丹 12 180309100578
当前记录
0
1
2
3
①返回当前记录中的数据
Fields:用于返回当前记录中的数据
1、rs.Fields(3)----------------------字段序号
2、rs.Fields(“考号”)--------------字段名称
06|读取记录集中对应字段对应记录的数据
读取记录集中的数据
ID 姓名 班级 考号
1 叶方豪 12 180309100496
2 金素素 14 180309100522
3 欧阳子丹 12 180309100578
2
②记录指针的移动
MoveNext:记录向下一条移动
EOF:End of File 可利用其判断是否已经移动到记录集的结尾
1
3
EOF
06|读取记录集中对应字段对应记录的数据
读取记录集中的数据,并存放于数组中
Dim id(1 To 1000) As Integer
Dim xm(1 To 1000) As String
Dim bj(1 To 1000) As String
Dim kh(1 To 1000) As String
…………………………………… ‘定义多个数组分别存放各科成绩
Dim n As Integer, i As Integer
n = 0
Do While Not rs.EOF ‘如果没有到达记录集的末尾,就执行下面的循环语句
n = n + 1 ‘利用n的值来控制数组元素的存放
id(n) = rs.Fields(0)
xm(n) = rs.Fields(1) ‘将相应的字段内容分别存放到不同的数组中
bj(n) = rs.Fields(2)
kh(n) = rs.Fields(3)
…………………… ’将其他数据同理放到不同的数组中
rs.MoveNext ‘记录指针下移
Loop
07|对存储好的数组元素进行查找、排序
对存储好的数组元素进行查找、排序
i = 1:m = 0
Do While i <= n
If Text1.Text = xm(i) Then
m = i
Exit Do
Else
i = i + 1
End If
Loop
If m <> 0 Then
Text2.Text = bj(m)
Text3.Text = kh(m)
Else
Text2.Text = "查无此人"
Text3.Text = "查无此人"
End If
利用查找算法,在xm数组中查找姓名符合输入值的数组元素,并利用m记录该元素的数组下标。
输入数组下标m所对应的bj数组以及kh数组中的班级和考号信息。
08|小结——VB读取数据表中记录到数组的典型程序段
Dim conn As New ADODB.Connection ‘定义一个Connection的对象实例
Dim rs As New ADODB.Recordset ‘定义一个Recordset的对象实例
Dim sql As String
conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source=" + App.Path + "\数据库文件名"
conn.Open
sql = "select * from 数据表文件名"
rs.Open sql, conn, adOpenDynamic, adLockOptimistic
‘以下程序段需重点关注
c = 0
Do While Not rs.EOF ‘数据表未读完
c = c + 1
数组名1(c) = rs.Fields("字段名1") ‘或写成数组名1(c) = rs.Fields(0)
数组名2(c) = rs.Fields("字段名2") ‘或写成数组名2(c) = rs.Fields(1)
......
rs.MoveNext
Loop
rs.Close ‘关闭Recordset的连接
conn.Close ‘关闭Connection的连接
09|课堂练习
1.通过ADO的Connection对象建立与Access数据库连接的基本过程有以下几个步骤:
①设置实例的连接字符串ConnectionString的属性值。
②通过实例的Open方法打开到数据库的连接。
③定义ADO的Connection对象实例。
正确的操作顺序是( )
A. ①②③ B.①③② C.②①③ D.③①②
08|课堂练习
2.通过ADO的Connection对象建立与Access数据库连接,有以下程序段:
Dim abc As New ADODB.Connection
abc.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=“+ App.Path + "\ Schools.accdb"
abc.Open
则定义的ADO的Connection对象实例名称为( )
A.Connection B.ADODB C. abc D. Schools.accdb
08|课堂练习
3.通过ADO的Connection对象建立与Access数据库连接,有以下程序段:
Dim conn As New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.O;Data Source=" + App.Path + "\Students.accdb"
conn.Open
则连接的数据库文件名称为( )
08|课堂练习
4.通过ADO的Recordset对象实例rs打开了如表所示的记录集。
当前记录是第2条,rs.Fields(1)返回的数据是 ( )
A.2 B.G144720 C.高中英语重点难点解析 D.G234724