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~



  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值