• 沒有找到結果。

信息查询系统的设计与实现

在前面几节中,我们多次接触到了“记录集”这个概念,知道了记录集是从一个或多个 数据库表中提取的数据子集。在创建记录集的时候,只要设置一个或多个筛选条件,就可以在 数据库表中查询到满足条件的所有记录,这个查询到的记录就构成了这个记录集。

这个查询实际上就是一个“结构化查询语言(SQL)”,设置“记录集”对话框选项的过程,

就是生成 SQL 语句的过程。

在本节中,我们将通过对教员用户的查询,详细讲解通过“记录集”对复杂条件进行查 询,来达到查询满足指定条件教员的目的。

7.7.1 信息查询系统分析

以教员查询为例,要查询满足条件的教员,首先需要一个输入和提交条件的表单。当查 询所在页面接收到表单所提交的条件后,使建立一个查询记录集,设置记录集的筛选条件所接 收到的数据变量。

在具体设计之前,我们以一个实例来分析查询记录集的设置方法。

如我们要查询新闻数据表中“发布者”为管理员 Admin,“新闻栏目”为 1 的所有记录。

如图 7-122 所示,添加一个记录集,从新闻数据表 News 中查询 News_User 字段值为=“输 入的值”为 Admin,然后点击对话框右侧的“测试”按钮,在弹出的“测试 SQL 命令”对话 框中,我们可以以看到新闻数据表中 News_User 字段为 Admin 的所有记录。

图 7-122 “记录集”测试

但这个查询只能查询到满足其中一个条件的记录集,并不能满足我们的需求。单击“记 录集”对话框中的“高级”按钮,切换至如图 7-123 所示的“记录集”高级模式,可以看到在

SQL 文本区域中显示的即是刚才所设置的 SQL 查询语句。

图 7-123 “记录集”对话框高级模式 z SELECT 表示此 SQL 语句为查询语句。

z “ * ” 表 示 数 据 表 中 的 所 有 字 段 , 也 可 以 使 用 具 体 字 段 名 来 代 替 “ * ”, 如 News_ID,News_Topic,News_Text,多个字段中间使用英文逗号隔开。

z FROM News 表示从新闻表 News 中查询记录。

z WHERE 表示筛选条件,News_User 为筛选的字段,MMColParam 为筛选的值,它是 一个变量,具有默认值 Admin 和运行值 Request("MM_EmptyValue")。

此 SQL 语句的意思是:从数据库的新闻表 News 中查询字段 News_User 的值与变量值完 全相同的所有字段记录。

如果要查询新闻数据表中“发布者”为 Admin,“新闻栏目”为 1 的所有记录,还应该满 足另一个条件,即“新闻栏目”字段 News_Type 的值为“1”。

如图 7-124 所示,先在“记录集”对话框中添加一个变量 MMNewsType,设置其“默认 值”为 1,运行值为 Request("MM_NewsType")。

图 7-124 “记录集”对话框高级模式

再在 SQL 文本区域的后面添加文本“AND News_Type=MM_NewsType”,表示除刚才所 设置的筛选条件外,还需要满足 News_Type 字段的值等于变量 MM_NewsType 的值这个条件。

除了可以用“=”以外,还可以使用“>”(大于)、“<”(小于)、“>=”(不小于)、“<=”

(不大于)、“<>”(不等于)、“开始于”、“结束于”以及“包含”等关系式。 TSchool。

z 光标置于“专业”后面的单元格,在“表单”工具面板中单击“文本字段”工具按钮,

插入一个“文本字段”,选择该文本字段,在其属性面板中设置“文本域”值为 TSpecialty。

z 光标置于“胜任科目”后面的单元格,在“表单”工具面板中单击“文本字段”工具 为 TFLanguage。

z 光标置于“教员性别”后面的单元格,在“表单”工具面板中单击“单选按钮”,插

z 重复上一步,在此单元格中继续插入一个“单选按钮”,选择该“单选按钮”,在其属 性面板中设置“单选按钮”值为 TSex,“选定值”设置为“女”,“初始状态”为“未 选中”,并在该单选按钮后面输入文本“女”。

z 在最后一中插入两个“按钮”,分别设置其标签为“查询”和“清除”,将其动作分别 设置为“提交表单”和“重置表单”。

(6)保存当前页面。

7.7.3 查询结果页面设计

1.页面的设计

(1)打开“家教管理系统”站点中的文件 moban.asp,选择“文件”→“另存为”命令,

命名为 TList.asp,以建立一个与该文件布局相近的文件。

(2)如图 7-126 所示,在设计视图中对该页面进行相应修改,将右侧单元格对齐方式设 为水平“居中”、垂直“顶端对齐”。

图 7-126 查询结果页布局

(3)在单元格的顶端输入文本“教员列表”,然后插入一条“水平线”,选择该水平线,

在视图下方的标签选择栏中的“<hr>”标签上右击,在弹出的快捷菜单中选择“编辑标签”菜 单项,在“编辑标签”栏中设置水平线属性为“<hr width="95%" color="#0090FF">”。

(4)如图 7-127 所示,在水平线的下方插入一个宽为 96%,2 行 7 列的表格,并对表格 进行适当调整,设置表格第 1 行的行高为“22”像素。

图 7-127 查询结果列表表格

(5)将表格第 2 行的 7 个单元格合并为一个单元格,设置单元格背景图像为点线 dotlineh.gif,设置其行高为 1,请注意图 7-128 所示中的表格代码。

图 7-128 修改后的列表表格

(6)将图 7-127 所示的黑色背景部分代码先中并复制,在其后“</table>”标签的前一行 粘贴,使表格由原来的 2 行变为 4 行。

Teacher,并进行“筛选”条件的相关设置,这里分别选择筛选条件为:“Teacher_School”、“包 含”、“URL 参数”和“TSchool”,表示筛选出数据库表中 Teacher_School 字段的值中包含接 收到的变量 TSchool 值的所有记录。

(3)单击对话框右侧的“高级”按钮,弹出“记录集”对话框的高级模式,先在“变量”

图 7-129 “记录集”对话框简单模式

列表中添加如表 7-9 所示的 6 个变量,分别用于接收 Left.asp 文档中“教员查询”表单所提交 的数据,在这里我们设置所有变量的默认值为“删除我”,便于后面修改的时候查找。添加所 有变量后如图 7-130 所示。

表 7-9 增加变量

名称 默认值 运行值

MMColParam 删除我 Request.QueryString("TSchool") MMSpecialty 删除我 Request.QueryString("TSpecialty") MMSubject 删除我 Request.QueryString("TSubject") MMDegree 删除我 Request.QueryString("TDegree") MMFLanguage 删除我 Request.QueryString("TFLanguage") MMSex 删除我 Request.QueryString("TSex")

(4)在“记录集”对话框的 SQL 文本区域中添加如下的 SQL 语句,用于查询满足所有 查询条件的记录。

SELECT * FROM Teacher

WHERE Teacher_School LIKE '%MMColParam%' AND Teacher_Specialty LIKE '%MMSpecialty%' AND Teacher_Subject LIKE '%MMSubject%' AND Teacher_Degree LIKE '%MMDegree%' AND Teacher_FLanguage LIKE '%MMFLanguage%' AND Teacher_Sex LIKE '%MMSex%'

(5)设置好以后单击“确定”按钮,完成记录集的添加。

图 7-130 “记录集”对话框高级模式

(6)切换到代码视图,找到如下代码,将代码中的所有文本“删除我”删除掉。

<%

Dim Recordset1__MMColParam Recordset1__MMColParam = "删除我"

If (Request.QueryString("TSchool") <> "") Then

Recordset1__MMColParam = Request.QueryString("TSchool") End If

<%

Dim Recordset1__MMSpecialty Recordset1__MMSpecialty = "删除我"

If (Request.QueryString("TSpecialty") <> "") Then

Recordset1__MMSpecialty = Request.QueryString("TSpecialty") End If

%>

<%

Dim Recordset1__MMSubject Recordset1__MMSubject = "删除我"

If (Request.QueryString("TSubject") <> "") Then

Recordset1__MMSubject = Request.QueryString("TSubject") End If

%>

<%

Dim Recordset1__MMDegree Recordset1__MMDegree = "删除我"

If (Request.QueryString("TDegree") <> "") Then

Recordset1__MMDegree = Request.QueryString("TDegree") End If

%>

<%

Dim Recordset1__MMFLanguage Recordset1__MMFLanguage = "删除我"

If (Request.QueryString("TFLanguage") <> "") Then

Recordset1__MMFLanguage = Request.QueryString("TFLanguage") End If

%>

<%

Dim Recordset1__MMSex Recordset1__MMSex = "删除我"

If (Request.QueryString("TSex") <> "") Then Recordset1__MMSex = Request.QueryString("TSex") End If

%>

至此,我们已经完成了本节中最重要的查询记录集的条件设置。

3.设置动态数据

(1)打开“应用程序”面板中的“绑定”选项卡,选择“记录集(Recordset1)”,将 Teacher_School、Teacher_Specialty、Teacher_Subject、Teacher_Degree、Teacher_FLanguage 和 Teacher_Sex 字段分别插入到相应的表格单元格中,如图 7-131 所示。

图 7-131 “教员列表”动态记录的插入

(2)设置超链接,用鼠标点击列表中的用户名,将其在教员详细页打开以浏览该教员的 详情。在设计视图中选择“用户名”列下的动态记录“{}”,打开“应用程序”工具面板,选 择“转到详细页面”菜单项,在弹出的对话框中设置“详细信息页”为 Teacher.asp,将“传递 URL 参数”设置为 Teacher_ID,“记录集”选择 Recordset1,选择“列”为 Teacher _ID 作为传 递的参数值,单击“确定”按钮完成“转到详细页面”对话框的设置,如图 7-132 所示。

图 7-132 “转到详细页面”的设置

(3)通过上面的步骤,已经能显示一条列表记录了,我们需要通过插入“重复的区域”

来显示整个列表。选择表格中的第 3、4 行(提示:在代码视图中比较容易选择这两行),打开

“应用程序”面板中的“服务器行为”选项卡,单击“添加按钮”右下方的箭头,在弹出的菜 单中选择“重复区域”,如图 7-133 所示。

图 7-133 “重复区域”的设置

(4)在弹出的“重复区域”对话框中选择所绑定的教员查询记录集 Recordset1,设置“显 示”为“15”记录。单击“确定”按钮完成重复区域的设置。

4.记录集导航条

因为前面我们已经设置了每页显示的教员列表记录数,就必须要添加“记录集导航条”

来进行分页导航。具体设置如下。

(1)在教员列表表格的后面插入一条与前面所插入的相同样式的“水平线”。

(2)如图 7-134 所示,将鼠标光标置于水平线的后面,打开“应用程序”工具面板,在 工具面板中选择“记录集导航条”工具按钮 。

图 7-134 “记录集导航条”的设置

(3)在弹出的“记录集导航条”对话框中选择教员查询记录集 Recordset1,显示方式为

“文本”。

(4)单击“确定”按钮,完成“记录集导航条”的设置。