怎么样通过PB源码查询日期范围内的数据?
怎么样通过PB源码查询日期范围内的数据?
以下内容是PowerBuilder源码:根据开始时间和结束时间,查询历史信息。
第一步:建立数据库
第二步:建立ODBC数据源
第三步:连接PB
(以上三步可以参照:许恕的文章《PowerBuilder初试》)
第四步:设置界面
1、 新建一个窗体Window,Title为“查询历史记录”:
new——Workspace——Window
2、 新建一个数据窗口
New——DataWindow——Grid——QuickSelect
图1
图2
3、选择需要显示信息的表中的字段名称:(如下图蓝色标记所示)
图3
图4
图5
保存DataWindow为d_query.
4、把“数据窗口d_query”直接拖到Window窗体中。
图6
5、 把“数据窗口d_query”直接拖到Window窗体中。
图7
6、 找到我们所需要的控件,并在窗体中摆好位置。
图8
Create StateText Control:创建静态文本
Create EditMask Control:控件限制输入范围:
(设置日期显示格式时,Mask:yyyy-mm-dd,MaskDataType:datamask!)
图9
图10
第五步:编写代码
声明:实例变量
图12
(1)DeclareInstance Variables——Declare ——Instance Variables
//声明实例变量 string is_sql
(2)窗体加载事件:w_query——open()事件中
//数据窗口dw设置连接事务sqlca dw_query.settransobject(sqlca) //让数据窗口控件从库中提取数据 //dw_query.retrieve() //得到原始语法,为检索做准备 is_sql = dw_query.getsqlselect()
(3)查询cb_query——Clicked()事件:
string ls_start,ls_end ,ls_select string ls_left ,ls_right //得到开始和结束时间 ls_start = em_start.text ls_end = em_end.text ls_select = '' // 开始时间 if not isnull(ls_start) and ls_start <> "" and lower(ls_start) <> 'none' then ls_select = ls_select + " convert(char(10),抵店时间,120) >= '" + ls_start + "'" end if // 结束时间 if not isnull(ls_end) and ls_end <> "" and lower(ls_end) <> 'none' then if ls_select = "" then ls_select = " convert(char(10),抵店时间,120) <= '" + ls_end + "'" else ls_select = ls_select + " AND convert(char(10),抵店时间,120) <= '" + ls_end + "' " end if end if ////拼SQL语句 ls_select = is_sql + ' where ' + ls_select if ls_select <> '' then //赋值SQL语句 dw_query.setsqlselect(ls_select) end if dw_query.retrieve() //检索数据
8、成功查询‘抵店时间’在2000-00-00至2006-00-00内的历史记录。
总结:做项目时,首先要明确一个目标“你想要实现什么功能?”,然后去找要实现此功能需要的控件是什么?在VB中,我们可以使用‘日期控件‘对日期进行选择,而PB中我们选择了EditMask控件,通过控制时间格式,来达到相同的效果。
就像大张伟在《倍儿爽》歌中唱的那样“天空飘来五个字儿,那都不是事,是事儿也就烦一会儿,一会儿就完事儿”O(∩_∩)O~