
(1)DeclareInstance Variables——Declare ——Instance Variables
//声明实例变量string is_sql
(2)窗体加载事件:w_query——open()事件中
//数据窗口dw设置连接事务sqlcadw_querysettransobject(sqlca)//让数据窗口控件从库中提取数据//dw_queryretrieve()//得到原始语法,为检索做准备is_sql = dw_querygetsqlselect()
3)查询cb_query——Clicked()事件:
string ls_start,ls_end ,ls_select
string ls_left ,ls_right//得到开始和结束时间ls_start = em_starttextls_end = em_endtextls_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 ifend if拼SQL语句
ls_select = is_sql + ' where ' + ls_selectif ls_select <> '' then //赋值SQL语句
dw_querysetsqlselect(ls_select)
end ifdw_queryretrieve() //检索数据
因为用户可能是脱机情况的,所以你根本就没有一个地方可以获得标准的时间参照。如果能连因特网不连服务器也行,可以通过某个服务之类的获取网络的标准时间。
所以你这个情况,根本没办法用PB来取到标准的时间,因为没有参照去获取,只能禁止用户修改系统时间了。那么这就不再是PB编码层面的问题,而是设置 *** 作系统的权限禁止用户更改时间。
这么做试试:打开控制面板 ===》管理工具 ===》本地安全策略 ===》本地策略 ===》用户权利指派 ===》找到右边的“更改系统时间”,这里面是哪些用户具有修改系统时间的权限,把客户使用的登录用户删除,然后重启机器,再打开,就修改不了时间了。
global function string uf_firstday ();string ls_date
date ld_today
ld_today=date(today())
choose case month(ld_today)
case 1 to 3
ls_date=string(year(ld_today))+"-01-01"
case 4 to 6
ls_date=string(year(ld_today))+"-04-01"
case 7 to 9
ls_date=string(year(ld_today))+"-07-01"
case 10 to 12
ls_date=string(year(ld_today))+"-10-01"
end choose
return ls_date
end function
取该季度第一天
global function string uf_lastday ();string ls_date
date ld_today
ld_today=date(today())
choose case month(ld_today)
case 1 to 3
ls_date=string(year(ld_today))+"-03-31"
case 4 to 6
ls_date=string(year(ld_today))+"-06-30"
case 7 to 9
ls_date=string(year(ld_today))+"-09-30"
case 10 to 12
ls_date=string(year(ld_today))+"-12-31"
end choose
return ls_date
end function
取该季度最后一天
先插行
insertrow(0)
再填入数值
dw_1setitem(n_row, "yhrq",Today())
-----------------------------------
"yhrq"什么类型
是否有"yhrq"这列是否写错列名
n_row是否存在这行
首先select to_date(sysdate - 1) into :ld_date from dual;
这句取出的时间就只是年月日,应该是select sysdate - 1 into :ld_date from dual;才取出年月日时分秒;
其次ls_str = Left(ls_str, Pos(ls_str,"WHERE ") - 1)
这句取出的SQL语法是不带"WHERE"的,可是你后面ls_str += "IMPORT_DATE>=to_date('"+string(ld_date_begin)+"','yyyy-mm-dd hh:mi:ss') and IMPORT_DATE<=to_date('"+string(ld_date_end)+"','yyyy-mm-dd hh:mi:ss')" 也不带“WHERE”所以应该改成
date ld_sysdate,ld_date_begin,ld_date_end,ld_date
string ls_str
select sysdate into :ld_sysdate from dual;
select sysdate - 1 into :ld_date from dual;
em_begintext = string(ld_date,'yyyy-mm-dd hh:mi:ss')
em_endtext = string(ld_sysdate,'yyyy-mm-dd hh:mi:ss')
em_beginGetData(ld_date_begin)
em_endGetData(ld_date_end)
ls_str = Upper(dw_1GetSQLSelect())
If Pos(ls_str,"WHERE ") > 0 Then
ls_str = Left(ls_str, Pos(ls_str,"WHERE ") - 1)
end if
If (IsNull(ld_date_begin) Or String(ld_date_begin) = '') And (IsNull(ld_date_end) Or String(ld_date_end) = '') Then
Else
ls_str += "WHERE IMPORT_DATE>='"+ld_date+"' and IMPORT_DATE<='"+ld_sysdate+"'" /如果你的IMPORT_DATE栏位是DATE型可以这么写,如果是CHAR型的话应该写成ls_str += "WHERE IMPORT_DATE>='"+TO_CHAR(ld_date,'yyyy-mm-dd hh:mi:ss') +"' and IMPORT_DATE<='"+TO_CHAR(ld_sysdate,'yyyy-mm-dd hh:mi:ss') +"'" 还要看的栏位格式是不是'yyyy-mm-dd hh:mi:ss' /
dw_1SetSQLSelect(ls_str)
dw_1SetTransObject(SQLCA)
dw_1Retrieve()
End If
TO_DATE是可以用在SQL语句里的。
在建立数据窗口对象时,可以选择建立分组格式的数据对象,然后在里面你可以选择日期进行分组,最后统计的功能,你在数据对象中添加一个文本框,在expression里面选择sum(金额)。
希望对你有帮助
以上就是关于pb 如何查找比较消耗时间的代码全部的内容,包括:pb 如何查找比较消耗时间的代码、【求助】:pb如何防止用户修改系统时间,或者能再不联网的情况下保持某个小工具能得到准确北京时间、在pb9.0里 时间取当前季度怎么取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)