pb 如何查找比较消耗时间的代码

pb 如何查找比较消耗时间的代码,第1张

(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里 时间取当前季度怎么取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9497755.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存