实验3精确查询和模糊查询.docx
- 文档编号:28495583
- 上传时间:2023-07-15
- 格式:DOCX
- 页数:13
- 大小:401.65KB
实验3精确查询和模糊查询.docx
《实验3精确查询和模糊查询.docx》由会员分享,可在线阅读,更多相关《实验3精确查询和模糊查询.docx(13页珍藏版)》请在冰豆网上搜索。
实验3精确查询和模糊查询
实验3精确查询和模糊查询
【实验目的和要求】
1.修改菜单
2.编号精确查询
3.姓名精确查询
4.姓名糊糊查询
5.生日查询
6.编号范围查询
7.生日范围查询
8.利用Filter()和SetFilter()函数查询
9.用户自定义函数 KeyDown(Enter!
)的使用
10.测试
【重点掌握】
1.通过修改Retrieve()哑元变量查询
2.范围查询
3.Filter查询机理
4.自定义用户事件方法和技巧
【实验步骤】
启动PowerBuilder,打开addressbook工作区,连接上数据库。
1.修改主菜单m_main
双击系统树窗口中的m_main菜单对象,按照图4-3-1所示的菜单结构进行修改。
当一个子菜单项中输入一个减号“-”,在运行时,它显示为一条分隔线。
图4-3-1修改后的菜单
单击工具栏上的“Save”图标
。
2.按编号查询(用Setfilter()和Filter()函数)
(1)双击系统树窗口中的d_input数据窗口对象,打开d_input。
菜单上,“File”→“SaveAs...”,在打开的“SaveDataWindow”对话框上“DataWindows:
”下面的文本框中输入d_query_bh_filter→“OK”,这实际上就是复制了一个数据窗口对象。
(2)菜单上,“File”→“New...”,打开的“New”对话框,选择“PBObject”标签页,选择Window图标→“OK”,创建了一个新的窗口。
把窗口的标题改为“按编号查询—filter”,并以w_query_bh_filter为文件名保存该窗口。
在窗口上放置一个“StaticText”(静态文本)控件,并在其中输入“请输入编号”。
在它的右侧放置一个“SingleLineEdit”(单行编辑器)控件,它的名字默认为sle_1,去掉其中的“none”文字。
在它们的右侧分别放置三个“CommandButton”(命令按钮)控件,按钮上的文字分别改为“精确查询”、“模糊查询”和“退出”。
在它们的下方放置一个“DataWindow”控件,通过属性面板的“General”标签页,选择它的“DataObject”值为d_query_bh_filter。
(3)编写代码
窗口的“open”事件代码为:
Dw_1.setTransObject(sqlca)
Dw_1.retrieve()
“精确查询”按钮中的代码为:
Dw_1.setFilter("编号='"+sle_1.text+"'")
Dw_1.filter()
“模精查询”按钮中的代码为:
Dw_1.setFilter("编号like'%"+sle_1.text+"%'")
Dw_1.filter()
“退出”按钮中的代码为:
close(parent)
图4-3-2利用Filter函数进行精确查询
图4-3-3利用Filter函数进行模糊查询
单击工具栏上的“Save”图标
。
(4)如果菜单m_main不是打开状态,则双击系统树窗口m_main将其打开。
在“按编号查询-filter”子菜单项上单击右键→“Script”,在下面的文本框中输入open(w_query_bh_filter)。
单击工具栏上的“Save”图标
,单击工具栏上的“Run”图标
,执行查询操作,如图4-3-2和图4-3-3所示。
3.按编号精确查询(用retrieve()函数)
(1)双击系统树窗口中的d_input数据窗口对象,打开d_input。
菜单上,“File”→“SaveAs...”,在打开的“SaveDataWindow”对话框上“DataWindows:
”下面的文本框中输入d_query_bh_retrieve→“OK”,这实际上又复制了一个数据窗口对象。
菜单上,“Design”→“DataSource...”,菜单上,“Design”→“RetrievalArguments...”,打开“SpecifyRetrievalArguments”对话框,在“Name”下面的文本框中输入arg_bh,“Type”下面的列表中选择“String”,如图4-3-4所示→“OK”。
在下面的“Where”标签页上,“Column”下面的列表中选择"addressbook"."编号",在“Operator”下面的列表中选择等号“=”,在“Value”下面的文本框中输入“:
arg_bh”,如图4-3-5所示。
单击工具栏上的“return”图标
→单击工具栏上的“Save”图标
。
图4-3-4定义哑元变量
图4-3-5定义Where条件语句
(2)双击系统树窗口中的w_query_bh_filter窗口,打开此窗口。
菜单上,“File”→“SaveAs...”,在打开的“SaveWindow”对话框上“Windows:
”下面的文本框中输入w_query_bh_retrieve→“OK”,这实际上复制了一个窗口对象,选中窗口上的“模糊查询”按钮,按“delete”键,删除此按钮。
单击窗口,在“General”标签页上,把窗口的“Title”下面的“按编号查询-filter”改为“按编号查询-retrieve”。
单击窗口上的“DataWindow”控件,在属性面板“General”标签页上,单击“DataObject”下面文本框右侧的浏览按钮
,打开“SelectObject”对话框,选中d_query_bh_retrieve数据窗口对象→“OK”。
单击窗口下面“open”标签页,删除其中的第二行语句dw_1.retrieve()。
单击窗口下面“Layout”标签页,双击“精确查询”按钮,删除其中的二行语句,并输入语句:
dw_1.retrieve(sle_1.text)。
单击工具栏上的“Save”图标
。
(3)双击系统树窗口主菜单m_main,在“按编号精确查询-retrieve”子菜单项上单击右键→“Script”,在下面的文本框中输入open(w_query_bh_retrieve)。
单击工具栏上的“Save”图标
。
单击工具栏上的“Run”图标
,执行查询操作,如图4-3-6所示。
图4-3-6按编号精确查询
4.按编号模糊查询(用retrieve()函数)
(1)双击系统树窗口中的d_query_bh_retrieve(此时,如果系统打开了“SpecifyRetrievalArguments”对话框→“CancelAll”),菜单上,“File”→“SaveAs...”,在打开的“SaveDataWindow”对话框上“DataWindows:
”下面的文本框中输入d_query_bh_fuzz_retrieve→“OK”。
菜单上,“Design”→“DataSource...”。
在下面的“Where”标签页上,把“Operator”下面的等号“=”改为“like”。
单击工具栏上的“return”图标
(此时,如果系统打开“SpecifyRetrievalArguments”对话框→“CancelAll”),单击工具栏上的“Save”图标
。
(2)双击系统树窗口中的窗口w_query_bh_retrieve,菜单上,“File”→“SaveAs...”,打开“SaveWindow”对话框,在“Windows:
”下面的的文本框中输入文件名w_query_bh_fuzz_retrieve→“OK”。
把窗口的标题改为“按编号模糊查询-retrieve”,把“精确查询”按钮上的文字改为“模糊查询”。
双击“模糊查询”按钮,把窗口中的代码改为:
dw_1.retrieve("%"+sle_1.text+"%")。
单击下面的“Layout”标签页,返回到窗口设计视图→单击数据窗口控件dw_1→在属性面板“General”标签页上,单击“DataObject”下面文本框右侧的浏览按钮
,在打开的“SelectObject”对话框中选择d_query_bh_fuzz_retrieve→“OK”,单击工具栏上的“Save”图标
。
(3)双击系统树窗口主菜单m_main,在“按编号模糊查询-retrieve”子菜单项上单击右键→“Script”,在下面的文本框中输入open(w_query_bh_fuzz_retrieve),单击工具栏上的“Save”图标
。
单击工具栏上的“Run”图标
,执行该查询操作,如图4-3-7所示。
图4-3-7按编号模糊查询
5.按生日查询(用retrieve()函数)
(1)把d_query_bh_retrieve复制为d_query_sr_retrieve(具体步骤省略,请参照步骤4)
在d_query_sr_retrieve处于打开状态,菜单上,“Design”→“DataSource...”,菜单上,“Design”→“RetrievalArguments...”,打开“SpecifyRetrievalArguments”对话框,把“Name”下面文本框中的哑元变量改为arg_sr,“Type”下面的列表中选择“Date”,如图4-3-8所示→“OK”。
在下面的“Where”标签页上,“Column”下面的列表中选择"addressbook"."生日",在“Operator”下面的列表中选择等号“=”,在“Value”下面的文本框中输入“:
arg_sr”,如图4-3-9所示。
单击工具栏上的“return”图标
(此时,如果系统打开了“SpecifyRetrievalArguments”对话框→“CancelAll”),单击工具栏上的“Save”图标
。
图4-3-8定义哑元变量
图4-3-9定义Where条件语句
(2)把w_query_bh_retrieve复制为w_query_sr_retrieve(具体步骤省略,请参照步骤4)
在w_query_sr_retrieve处于打开状态,把窗口的标题改为“按生日查询-retrieve”。
双击“精确查询”按钮,在打开的代码窗口中输入:
dw_1.retrieve(date(sle_1.text))。
单击下面的“Layout”标签页,回到窗口设计视图→单击数据窗口控件dw_1→在属性面板“General”标签页上,单击“DataObject”下面文本框右侧的浏览按钮
,在打开的“SelectObject”对话框中选择d_query_sr_retrieve→“OK”,单击工具栏上的“Save”图标
。
(3)双击系统树窗口主菜单m_main,在“按生日查询-retrieve”子菜单项上单击右键→“Script”,在下面的文本框中输入open(w_query_sr_retrieve),单击工具栏上的“Save”图标
。
单击工具栏上的“Run”图标
,执行该查询操作,如图4-3-10所示。
图4-3-10按生日查询
6.编号范围查询(用retrieve()函数)
(1)把d_query_bh_retrieve复制为d_query_bh_range_retrieve(具体步骤省略,请参照步骤4)。
在d_query_bh_range_retrieve处于打开状态,菜单上,“Design”→“DataSource...”,菜单上,“Design”→“RetrievalArguments...”,打开“SpecifyRetrievalArguments”对话框,把“Name”下面文本框中的哑元变量改为arg_begin,单击“add”按钮,在“Name”下面第二行中输入哑元变量arg_end,“Type”下面第二行列表中选择“String”,如图4-3-11所示→“OK”。
在下面的“Where”标签页上,第一行条件“Column”下面的值为"addressbook"."编号",“Operator”下面的列表中选择“>=”,把“Value”下面的文本框中的变量改为“:
arg_begin”;Tab键→Tab键,第二行条件“Column”下面的值选择"addressbook"."编号",“Operator”下面的列表中选择“<=”,在“Value”下面的文本框中输入“:
arg_end”;如图4-3-12所示。
单击工具栏上的“return”图标
(此时,如果系统打开了“SpecifyRetrievalArguments”对话框→“CancelAll”),单击工具栏上的“Save”图标
。
(2)把w_query_bh_retrieve复制为w_query_bh_range_retrieve(具体步骤省略,请参照步骤4)
在w_query_bh_range_retrieve处于打开状态,把窗口的标题改为“按编号范围查询-retrieve”。
在sle_1控件上单击右键→“Copy”,在窗口空白处单击右键→“Paste”,复制了一个单行编辑器控件,它的名字为sle_2。
把“精确查询”按钮上的文字改为“范围查询”。
双击该按钮,把窗口中的代码改为:
dw_1.retrieve(sle_1.text,sle_2.text)。
单击下面的“Layout”标签页,返回到窗口设计视图→单击数据窗口控件“dw_1”→在属性面板“General”标签页上,单击“DataObject”下面文本框右侧的浏览按钮
,在打开的“SelectObject”对话框中选择d_query_bh_range_retrieve→“OK”,单击工具栏上的“Save”图标
。
图4-3-11定义哑元变量
图4-3-12定义Where条件语句
(3)双击系统树窗口主菜单m_main,在“按编号范围查询-retrieve”子菜单项上单击右键→“Script”,在下面的文本框中输入open(w_query_bh_range_retrieve),单击工具栏上的“Save”图标
。
单击工具栏上的“Run”图标
,执行该查询操作,如图4-3-13所示。
图4-3-13按编号范围查询
思考题与习题
1.利用Filter函数设计系统按“姓名”精确查询以及模糊查询的功能
2.利用Retrieve()函数设计系统按“姓名”精确查询以及模糊查询的功能
3.利用Filter函数设计系统按“生日”范围查询功能
4.利用Retrieve()函数设计系统按“生日”范围查询功能
5.区分Filter与Retrieve()两种方法的不同之处。
6.思考利用Find()函数进行查询的方法和技巧。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 精确 查询 模糊