当前位置:文档之家› MSFlexGrid控件

MSFlexGrid控件

MSFlexGrid控件
MSFlexGrid控件

MSFlexGrid控件概述

1、作用:该控件以表格形式显示二维字符数组中每个单元的数据。常用于处理复杂的二维数据表的问题。如校历表、学生宿舍表、学生班级成绩表等。

2、添加到控件箱

菜单命令:工程| 部件,在部件对话框中选择:Microsoft FlexGrid Control 6.0 (SP6)。

3、主要属性

(1)Rows与Cols属性:分别用于设置或返回MSFlexGrid控件的行数与列数。(2)Row与Col属性:分别用于设置或返回MSFlexGrid控件中活动单元的行号与列号。

(3)TextMatrix属性:该属性用于表示MSFlexGrid控件中单元格的内容。

格式为:TextMatrix (Row, Col);

其中Row与Col分别表示单元格在MSFlexGrid控件中的行号与列号。

(4)FixedRows属性:用于设置表格显示过程中固定不变的行数。如FixedRows=1,则表示固定行为1,如图8.3中第1行。

(5)FixedCols属性:用于设置表格中固定不变的列数。如FixedCols=1,则表示固定列为1,如图8.3中第1列。

(6)FixedColor属性:用于设置固定行与固定列的颜色。

(7)MouseRow与MouseCol属性:用于返回鼠标光标所在单元格的行号与列号。(8)ColWidth(Col)、RowHigh(Row)属性:用于设置与返回第Col列的宽度与第Row行的高度,例如设置第0列的宽度为1500,第0行的高度为300的赋值语句为:ColWidth(0) = 1500 RowHeight(0) = 300

(9)DataSource属性:用于选择数据表,只能通过Data数据源控件选择数据表。

说明,若要用ADO Data控件作为数据源,则应使用MSHFlexGrid控件。(10)MousePointer属性:用于设置鼠标光标形状,属性取值与光标形状如表8.1所示。

【例8.1】编写程序,定义MSFlexGrid1控件为10行、5列表格,给每一个单元格赋值为Row+Col,其中Row与Col分别表示控件单元格的行号与列号。

新建一个工程(ex8_1.vbp),窗体名为Form_ex81.frm。在窗体上添加一个MSFlexGrid控件与一个Command控件,双击Command控件,输入如下程序:Private Sub Command1_Click()

Dim Row, Col As Integer'定义两个变量用于接收表格的行与列

With MSFlexGrid1

.Rows = 10'定义表格为10行

.Cols = 5'定义表格为5列

For Row = 0 To .Rows - 1

For Col = 0 To .Cols - 1

.TextMatrix(Row, Col) = Row + Col'将表格中的每一个单元格赋值为Row+Col

Next Col

Next Row

End With

End Sub

运行程序后的界面如图8.3所示。

MSFlexGrid控件的事件与方法

1、MSFlexGrid控件的事件

(1)KeyPress事件:当用户按下或释放任何一个ANSI键(字母或数字等键)时触发。

定义:Private Sub <控件名>_KeyPress(KeyAscii As Integer)

其中,形参KeyAscii用于将用户按下或释放的ANSI键值传送给KeyPress过程。

表8.2字母或数字键的KeyAscii代码、键值与含义

(2)KeyDown事件:当用户按下一个键时触发。

定义:Private Sub <控件名>_KeyDown(KeyCode As Integer, Shift As Integer) 其中,形参KeyCode用于表示用户按键的类型,取值如表8.3所示。形参Shift 用于表示用户所按组合键(Ctrl、Alt、Shilt)的键值,取值如表8.4所示。

表8.3 形参KeyCode返回键值与按键键名的对应关系表

表8.4 Shift取值类型

(3)KeyUp事件:当用户放开任何一个键时触发。

定义:Private Sub <控件名>_KeyUp(KeyCode As Integer, Shift As Integer) 其中参数KeyCode与Shift的取值见表8.3与表8.4。

(4)MouseDown事件:当用户按下鼠标触发。

定义:Private Sub <控件名>_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

其中,形参Button表示用户按下的是鼠标左键、中键还是右键,取值如表8.5所示。

形参Shift取值类型见表8.4。x、y为鼠标光标在控件内的位置坐标,单位为缇。

表8.5 Button取值类型

(5)MouseUp事件:当用户放开鼠标时触发。

MouseUp事件处理过程的原型定义与MouseDown过程原型定义类似,此处不再叙述。

(6)EnterCell与LeaveCell事件:在进入一个单元格时触发EnterCell事件,在离开一个单元格时触发LeaveCell事件。这两个事件过程均无参数。

2、MSFlexGrid控件的方法

(1)Clear方法:清除MSFlexGrid控件所有单元格中内容。

语句格式:MSFlexGrid.Clear

(2)AddItem方法:在MSFlexGrid控件中添加一个新行。

语句格式:MSFlexGrid.AddItem(String,Index,Number)

String为新增行中的字符串,用Tab键作为一行中各单元格字符串的分隔符。

Index为新增行的行号,若省略则添加到最后一行。

Number为添加行的带区号。

(3)RemoveItem方法:在MSFlexGrid控件中删除一行。

语句格式:MSFlexGrid. RemoveItem (Index,Number)

Index为要删除行的行号。

Number为要删除行的带区号。

【例8.2】在MSFlexGrid控件上实现九九乘法表,并实现鼠标拖弋功能,即用鼠标拖动方法,将某单元格内容移动到另一个单元格中,或复制到另一个单元格中,如图8.4所示。

图8.4 用MSFLexGrid控件实现九九乘法表

设计步骤:

1、新建工程与窗体,在窗体上放置一个“退出”按钮、一个“计算九九乘法表”按钮和一个MSFlexGrid控件,设计步骤与属性设置演示:

2、编写代码实现九九乘法表及鼠标拖弋功能

(1)定义全局变量

在窗体的通用与声明部分定义四个全局变量:

Dim Cell As String, Ctrl As Boolean, Col As Long, Row As Long

其中:Cell:用于传送单元格内容;

Ctrl:用于判断是否按下“Ctrl”键;

Col,Row:用于记录原单元格行号与列号。

(2)编写“计算九九乘法表”命令按钮事件处理过程

双击“创建九九乘法表”按钮,编写如下事件处理过程。

Private Sub Command_Calculate_Click()

Dim I As Integer, J As Integer

With MSFlexGrid1

.Clear ‘清除所有单元格内容

For J = 1 To 9

.TextMatrix(0, J) = J ‘在第0行赋数字1~9

Next J

For I = 1 To 9

.TextMatrix(I, 0) = I ‘在第0列赋数字1~9

For J = 1 To 9

.TextMatrix(I, J) = CStr(I) & "*" & CStr(J) & "=" & CStr(I * J) ‘赋九九乘法表的内容

Next J

Next I

End With

End Sub

(3)编写鼠标拖弋程序

在某单元格按下鼠标左键时,触发MouseDown事件处理过程,在该过程中将光标形状改为“flexArrow ”,并将该单元格内容存放在全局变量Cell中。

拖弋鼠标到另一个单元格,放开鼠标左键,触发MouseUp事件处理过程。在该过程中将光标形状恢复为“flexCross ”,并将全局变量Cell中内容赋给现单元格,另将前单元格内容删除。于是前单元格的内容被移动到后单元格中,从而实现鼠标的拖弋功能。

若按下“Ctrl”键拖动鼠标时,光标形状改为“flexHourglass”,松开鼠标后。前一个单元格的内容被复制到后一个单元格中。

①键按下事件处理过程KeyDown

该过程用于判断是否按下“Ctrl”键。若按下“Ctrl”键则将全局变量

Ctrl赋True值,表示用户按下了“Ctrl”键。Private Sub

MSFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = vbKeyControl Then

Ctrl = True

End If

End Sub

②键松开事件处理过程KeyUp

该过程用于判断是否松开“Ctrl”键。若松开“Ctrl”键则将全局变量

Ctrl赋Flase值,表示用户松开“Ctrl”键。

Private Sub MSFlexGrid1_KeyUp(KeyCode As Integer, Shift As Integer)

If KeyCode = vbKeyControl Then ‘也可用Shift= vbCtrlMask 作为松开Ctrl键的判断条件

Ctrl = False

End If

End Sub

③鼠标按下事件处理过程MouseDown

在该过程中将光标形状改为“flexArrow ”,并将该单元格内容存放在全局变量Cell中,将单元格的行号与列号赋给全局变量Row与Col。

Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

With MSFlexGrid1

Row = .MouseRow ‘单元格的行号赋给Row

Col = .MouseCol ‘单元格的列号赋给Col

Cell = .TextMatrix(.MouseRow, .MouseCol) ‘单元格的内容赋给Cell

If Ctrl = False Then

.MousePointer = flexArrow ‘若未按Ctrl键则光标为箭头形

Else

.MousePointer = flexHourglass ‘若按下Ctrl键则光标为杯形

End If

End With

End Sub

④鼠标松开事件处理过程MouseUp

在该事件中将Cell中内容赋给当前单元格,当Ctrl=False时清除行号、列号为Row与Col的原单元格内容,完成一次单元格内容的移动操作(Move);否则不清除原单元格内容完成一次复制操作(Copy),最后将光标恢复成“flexCross”(十字型)。

Private Sub MSFlexGrid1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)

With MSFlexGrid1

If Ctrl = Flase Then

.TextMatrix(Row, Col) = "" ‘若未按Ctrl

键则原单格清空

End If

.TextMatrix(.MouseRow, .MouseCol) = Cell ‘将Cell中原单元格内容赋给当前单元格

.MousePointer = flexCross‘光标恢复十字型

End With

End Sub

学生宿舍录入程序设计

【例8.3】在学生档案管理系统(xsdagl.vbp)中,编写学生宿舍录入程序,如图8.5所示。要求用命令对象与MSFlexGrid控件实现学生宿舍录入工作。

1、程序设计思路

(1)用数据源控件Data_XA01打开学生档案表XA01中指定班级的学生记录。(2)将MSFlexGrid控件的DataSource属性设置为Data_XA01,使MSFlexGrid 控件能显示学生的班内序号、学号、姓名、性别与宿舍号。

(3)用一个TextBox控件跟随MSFlexGrid控件单元格移动,实现学生宿舍号的输入。

(4)用命令对象Cmd执行Update语句,将MSFlexGrid控件中宿舍号写入学生档案表的宿舍字段中去。

2、程序设计步骤

3、重要代码

(1)编写单击班级显示学生信息(班内序号、学号、姓名、性别、宿舍号)程序

Private Sub DataGrid_TB03_Click()

Dim BJ As String

BJ = Adodc_TB03.Recordset("TB0301")

Data_XA01.RecordSource = "Select XA0103,XA0102,XA0104,GC0102,XA0119 from XA01,GC01" & _

" Where XA0106=GC0101 and XA0114 ='" & BJ & "'"‘选择指定班级的学生信息

Data_XA01.Refresh

With MSFlexGrid_XA01

.Refresh

.TextMatrix(0, 0) = "序号"‘表格控件第1行赋上列标题

.TextMatrix(0, 1) = "学号"

.TextMatrix(0, 2) = "姓名"

.TextMatrix(0, 3) = "性别"

.TextMatrix(0, 4) = "宿舍"

End With

End Sub

(2)编写文本框跟随光标在字符表格控件中移动的程序。当用户用鼠标单击字符表格控件的某个单元格时,文本框跟随光标移动到该单元格且与单元格同大小同位置,其中,TextBox控件的Name属性为Text。

Private Sub MSFlexGrid_XA01_Click()

With MSFlexGrid_XA01

If .Col = 4 And .Row >= 1 Then ‘若光标在字符表格控件的第4列(且≥第1行),则

Text.Width = .CellWidth ‘使文本框与单元格同宽度

Text.Height = .CellHeight ‘使文本框与单元格同高度

Text.Left = .CellLeft + .Left ‘使文本框与单元格左对齐

Text.Top = .CellTop + .Top ‘使文本框与单元格顶对齐

Text.Text = .Text ‘将单元格内容赋给文本框

Text.Visible = True ‘显示文本框

Text.SetFocus ‘设置文本框为当前焦点

End If

End With

End Sub

(3)在字符表格控件上按回车键,将光标与文本框下移一行的程序

Private Sub MSFlexGrid_XA01_KeyDown(KeyCode As Integer, Shift As Integer) With MSFlexGrid_XA01

If .Row < .Rows - 1 Then ‘当前行号Row小于总行数时,使行号Row加1

.Row = .Row + 1

End If

If KeyAscii = vbKeyReturn Then ‘若按回车键,则调用文本框跟随光标移动的程序

Call MSFlexGrid_XA01_Click

Else

Text.Visible = False ‘否则,不显示文本框

.SetFocus ‘焦点返回

MSFlexGrid_XA01控件

End If

End With

End Sub

(4)文本框上按键处理程序

Private Sub Text_KeyPress(KeyAscii As Integer)

With MSFlexGrid_XA01

Select Case KeyAscii

Case vbKeyEscape ‘在文本框上按ESC键,文本框不显示

Text_XA01.Visible = False

.SetFocus

Case vbKeyReturn ‘在文本框上按回车键.Text = Text.Text ‘则将文本框内容赋给单元格If .Row < .Rows - 1 Then ‘若当前行号未到最后一行.Row = .Row + 1 ‘则当前行号Row加1,使文本框下移一行

Call MSFlexGrid_XA01_Click ‘调用文本框跟随光标移动的程序

End If

End Select

End With

End Sub

(5)将MSFlexGrid_XA01中宿舍号保存到XA01中去的程序

Private Sub Save()

Dim SH As String, SS As String, Row As Integer

With MSFlexGrid_XA01

For Row = 1 To .Rows – 1 ‘从第1行到最后一行SH = .TextMatrix(Row, 1) ‘将学号赋给SH

SS = .TextMatrix(Row, 4) ‘将宿舍号赋给SS

https://www.doczj.com/doc/469256746.html,mandText = " Update XA01 Set XA0119='" & SS & "'" & _

" Where XA0102='" & SH & "' " ‘用命令对象Cmd执行Update 语句,

Cmd.Execute ‘将SH指定学号的学生记录中宿舍号更新为SS的内容

Next Row

End With

End Sub

(6)工具栏按钮单击事件

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button.key

Case "Exit"

Unload Me ‘退出

Case "Save"

Call Save ‘调用保存过程,将新宿舍号存入学生档案表XA01中。

End Select

End Sub

树形结构控件TreeView

TreeView是一种能以树形目录结构形式显示数据的高级控件,显示方式类似于Windows的资源管理器,能分层展开各结点的子目录,也能收缩各结点的子目录。本节将先介绍TreeView控件的一些基本概念、属性与方法,再举例说明TreeView控件的应用。

TreeView控件概述、属性与方法

1、作用:用于显示Node结点的分层列表。

2、添加到控件箱

菜单命令:工程 | 部件,在部件对话框中选择:Microsoft Windows Common Controls 6.0

3、TreeView控件的属性

(1)属性对话框

用鼠标右键单击TreeView控件,在弹出式菜单中选择属性,进入属性设置对话框,该对话框分为通用、字体、图片三个选项卡,如图8.6所示。

①样式(Style):返回或设置在Node结点之间显示的线样式,如表8.6所示。

②鼠标指针(MousePoint):可选择不同鼠标样式,如表8.1所示。

③线条样式(LineStyle):0-tvwTreeLine 无根结点的树形结构,1-tvwRootLines 有根结点的树形结构。

④标签编辑(LabelEdit):0-tvwAutomatic 自动,1-tvwManual 手工;

⑤图像列表(ImageList):结点图标所用ImageList控件;

⑥边框样式(BorderStyle):0-ccNone无边框,1-ccFixedSingle单边框;

⑦外观(Appearence):0-ccFlat平面效果,1-cc3D 3D效果;

⑧缩进:父子结点的水平间距。

(2)其它属性

① SelectedItem.Text属性:用于返回或设置当前Node结点的内容。

② CheckBoxes属性:该属性只能取逻辑值,若取True值,则每个Node结点前出现一个复选框,否则不出现复选框。

4、TreeView控件的方法

(1)Node结点

① Node结点:是TreeView控件中的一项,它包含图像与文本。

② Nodes结点集合:包含一个或多个Node结点。

(2)Add方法

①作用:为TreeView控件添加节点和子节点。

②定义格式

TreeView1.nodes.Add(Relative,Relationship,Key,Text, Image,SelectedImage) 其中:

◆ Rel ative参数:添加新结点时,其父结点键值Key。添加根结点时,此项为空。

◆Relationship参数:新结点的相对位置:

tvwlast—1:新节点位于同级别所有节点之后;

tvwNext—2:新节点位于当前节点之后;

tvwPrevious—3:新节点位于当前节点之前;

tvwChild—4:新节点成为当前节点的子节点。

◆Key:Node结点关键字(唯一标识符),用于检索Node结点。同时也作为其新建子结点的Relative值,即新建子结点的Relative=父结点Key。

◆Text:Node结点文本。

◆Image:Node结点位图,是关联ImageList控件中位图的索引。

在这些参数中,只有Text参数是必需的,其它参数都是可选的。

例如,在TreeView1控件的根结点上添加“计算机系”结点的程序段如下:

Dim Nod As Node

Key= "计算机系"

Text= "计算机系"

Set Nod = TreeView1.Nodes.Add(, tvwChild, Key, Text)

而在计算机系结点下添加“计算机30331”班子结点的程序段如下:

Key1= "计算机30331 "

Text1= "计算机30331 "

Set Nod = TreeView1.Nodes.Add(Key, tvwChild, Key1, Text1)

上述程序段运行后,屏幕显示如图8.7所示

2)Clear方法:用于删除TreeView控件的所有Node结点。

(3)Remove方法:用于移动TreeView控件的结点位置。

用树形控件TreeView设计学生档案查询程序

【例8.4】在学生档案管理系统(xsdagl.vbp)中,用树形控件TreeView设计学生档案查询程序。要求用记录集对象Rs_TB06打开系部编码表,用记录集对象

Rs_TB03打开班级编码表,将系部名称用Add方法添加到TreeView的根结点中去,然后将各系所属班级名称添加到该系子结点中中去,单击班级子结点能显示班所属

学生档案信息,如图8.8所示。

1、设计查询程序界面

2、编写程序代码

(1)在窗体通用与声明部分,定义记录集对象Rs_TB06与Rs_TB03。

Dim Rs_TB06 As New ADODB.Recordset

Dim Rs_TB03 As New ADODB.Recordset

用Rs_TB06打开系部编码表TB06,向树形控件的主结点添加系部名称。用

Rs_TB03打开指定系部所属班级记录表TB03,用于在系部主结点中添加班级子结点。该项工作可在窗体的Load过程中自动完成。

(2)编写窗体Load事件过程,在该过程中应完成如下工作。

?初始化窗体的大小与位置;

?用Rs_TB06打开系部编码表TB06,向树形控件的主结点添加系部名称;

?用Rs_TB03打开各系部所属班级记录表TB03,向系部主结点中添加班级子结点。

事件过程代码如下。

Private Sub Form_Load()

Dim key As String, Text As String, key1 As String, Text1 As String

Dim nod As Node

Dim str As String, DataSource As String

Height = 7180

Width = 11800

Top = 0

Left = 0

Rs_TB06.Open "TB06", Con, adOpenKeyset, adLockPessimistic '打开TB06表

If Rs_TB06.RecordCount > 0 Then '判断TB06表中有系部记录

With Rs_TB06

Do While Not .EOF

key = .Fields("TB0602") '将TB0602(系部名称)字段设置为要添加结点的关键字

Text = .Fields("TB0602") '将TB0602(系部名称)字段设置为要添加结点的文本

str = .Fields("TB0601") '将TB0601(系部编码)字段保存在str中

Set nod = TreeView_TB03.Nodes.Add(, tvwChild, key, Text) '将系部名称添加到树形控件上

DataSource = "Select * from TB03 where TB0309='" & str & "'" '该查询语句实现根据系部选班级

Rs_TB03.Open DataSource, Con, adOpenKeyset, adLockPessimistic '将该系部下的班级记录打开

With Rs_TB03

Do While Not .EOF

key1 = .Fields("tb0302") '将TB0302(班级名称)字段设置为要添加结点的关键字

Text1 = .Fields("tb0302") '将TB0302(班级名称)

字段设置为要添加结点的文本

'以上面系部名称结点为父结点,添加该系下的班级名称结点

Set nod = TreeView_TB03.Nodes.Add(key, tvwChild, key1, Text1)

.MoveNext '添加下一个班级Loop

.Close

End With

.MoveNext'添加下一个系部

Loop

.Close

End With

End If

End Sub

(3)编写单击树形控件中班级节点,查询该班所有学生信息的事件过程

Private Sub TreeView_TB03_NodeClick(ByVal Node As MSComctlLib.Node)

Dim I As Integer, Sum1 As Integer, Sum2 As Integer, BJ As String With Adodc_XA01

BJ = TreeView_TB03.SelectedItem.Text '获得树形控件所选择的结点的文本,即班级名称

.CommandType = adCmdText

.RecordSource = "Select A.*,GC0102,GC0202,GC0302,GC0402,TB0302 " & _ "From XA01 As A ,GC01,GC02,GC03,GC04 ,TB03 " & _

"Where XA0106 = GC0101 And XA0108 = GC0301 And XA0109 = GC0201 and XA0110=GC0401 " & _

"and XA0114=TB0301 and TB0302='" & BJ & "'" '通过该条查询语句查询出该班级的学生信息

.Refresh

End With

DataGrid_XA01.Refresh '在DataGrid控件上显示最新的记录

With Adodc_XA01.Recordset

If Not .BOF Then .MoveFirst

Do While Not .EOF '访问所选择出来的每一条学生记录

If .Fields("XA0106").Value = "1" Then Sum1 = Sum1 + 1 '如果是男生,则男生人数加1

If .Fields("XA0106").Value = "2" Then Sum2 = Sum2 + 1 '

如果是女生,则女生人数加1

.MoveNext

Loop

If Not .BOF Then .MoveFirst

End With

StatusBar1.Panels(2).Text = "男生人数:" & Sum1 '在状态栏上显示男生人数

StatusBar1.Panels(3).Text = "女生人数:" & Sum2 '在状态栏上显示女生人数

StatusBar1.Panels(4).Text = "合计人数:" & Sum1 + Sum2 '在状态栏上显示总人数

End Sub

分页控件SSTab

一、分页控件SSTab概述

1、作用:采用分页形式查询或编辑数据表中数据。

2、添加到控件箱

菜单命令:工程 | 部件,选择:Microsoft Tabbed Dialog Control 6.0 (SP6.0) 3、页(或选项卡)

SSTab控件由若干个页(或选项卡)组成,在每个页(或选项卡)中可按需要添加控件构成不同的程序界面。

二、分页控件SSTab的属性

用鼠标右键单击SSTab控件,在弹出式菜单中选择属性,进入属性设置对话框,如图8.9所示。分页控件的属性设置对话框由通用、颜色、字体、图片四个选项卡组成。现介绍通用选项卡中的属性设置。

(1)当前选项卡:用按钮选择卡号,如选择0表示第0页。

(2)选项卡标题:输入页标题,如“按班级查询”。

(3)选择卡数:输入选项卡的页数,如输入3表示SSTab控件共有3页。

(4)方向:选择选项卡的位置,选择参数与对应标题位置如下。

0-ssTabOrientationTop:选项卡在SSTab控件的顶部

1-ssTabOrientationBotton:选项卡在SSTab控件的底部

2-ssTabOrientationLeft:选项卡在SSTab控件的左边

3-ssTabOrientation Right:选项卡在SSTab控件的右边

(5)每行选项卡数:SSTab控件每行的选项卡数,如输入3表示每行3个选项卡。(6)样式:用于选择选择卡的宽度,有两种选择方式。

0-ssStyleTabbedDialog:每行选项卡与SSTab控件等宽;

1-ssStylePropertyPage:每行选项卡自动适应标题宽度。

(6)选项卡高度:用于输入选项卡的高度。

(7)选择卡最大宽度:用于输入选项卡的宽度,0表示没有限止宽度。

(8)鼠标指针:用于选择鼠标的形状,参数的含义与表8.1类似,只要将表8.1中的Flex换成ss即可,如FlexDefault换成ssDefault。

说明:上述“选项卡”都是指选项卡的标题部分。

有关颜色、字体、图片三个选项卡中的内容较简单,此处不再叙述。

三、用分页控件SSTab设计学生档案查询程序

【例8.5】在学生档案管理系统(xsdagl.vbp)中,用分页控件SStab设计学生档案查询程序,如图8.10所示。

1、界面设计步骤如下:

2、代码设计

(4)在窗体第一页内(按班级查询),用记录集对象Rs_TB06、Rs_TB03与树形控件TreeView_TB03选择系、班级,用Adodc_XA01与DataGrid_XA01显示指定班级学生档案表。设计过程与例8.5类似,由读者自己完成。

(5)在第二页(按姓名查询)内添加Adodc_XA01_2、DataGrid_XA01_2控件,使用这两个控件与学生档案编码表XA01连接。再添加Lable1与TextBox1,将TextBox1的Name属性改为Text_Name,当用户在文本框Text_Name输入学生姓名时,在DataGrid_XA01_2控件中只显示该姓名学生记录。文本框Text_Name内容改变时触发事件如下。

Private Sub Text_Name_Change()

With Adodc_XA01_2

.CommandType = adCmdText

'下面查询语句实现根据学生姓名查找学生记录

.RecordSource = "Select A.*,GC0102,GC0202,GC0302,GC0402,TB0302 " & _ " From XA01 As A ,GC01,GC02,GC03,GC04 ,TB03 " & _

" Where XA0106 = GC0101 And XA0108 = GC0301 And XA0109 = GC0201 And XA0110=GC0401 " & _

" And XA0114=TB0301 and XA0104 Like '" & Text_Name.text & "%'"

.Refresh

End With

相关主题
文本预览
相关文档 最新文档