- 浏览: 280193 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
sunlin:
水文 其他erp就没这样的问题? 不能单方面拿sap说 ...
【转】揭秘SAP在华真相:天价收费与用户之灾 -
zjut_xiongfeng:
用当前日期所在月的第一天,比如2010-7-30的当前月第一天 ...
pb函数库之日期、时间函数 -
550627069:
你好!问下 在PB中显示当前日期的前一个月 应该怎么做?求教
pb函数库之日期、时间函数
--------------of_buildselectexpression-------------------------------
string ls_value = '', ls_expression, ls_tmp, ls_column, ls_coltype
long ll_row, ll_rowcount
ll_rowcount = ids_cond.rowcount()
ls_column = adwc.describe(as_col + '.dbname')
if ls_column = '!' or ls_column = '?' or ls_column = '' then return '!'
ls_coltype = adwc.describe(as_col + '.coltype')
If ls_coltype='!' or ls_coltype='?' Then Return '!'
ls_coltype = Lower ( Left (ls_coltype, 5 ) )
ls_expression = ls_column + ' ' + as_opr + ' '
choose case as_opr
case '= any'
ls_expression = ''
case 'is null', 'is not null'
//do nothing
case 'in', 'not in'
if ll_rowcount < 2 then return '!'
ls_value = "("
for ll_row = 1 to ll_rowcount
ls_tmp = ids_cond.getitemstring(ll_row, 'value')
if len(trim(ls_tmp)) = 0 or isnull(ls_tmp) then return '!'
Choose Case ls_coltype
Case "char(", "char", "date", "datet", "time", "times"
ls_value += "'" + ls_tmp + "', "
Case Else
ls_value += ls_tmp + ", "
end choose
next
ls_value = left(ls_value, len(ls_value) - 2) + ')'
ls_expression += ls_value
case 'like', 'not like'
if ll_rowcount <> 1 then return '!'
ls_tmp = ids_cond.getitemstring(1, 'value')
if len(trim(ls_tmp)) = 0 or isnull(ls_tmp) then return '!'
Choose Case ls_coltype
Case "char(", "char"
ls_expression += "'%" + ls_tmp + "%'"
case else
ls_expression = '!'
end choose
case else
if ll_rowcount <> 1 then return '!'
ls_tmp = ids_cond.getitemstring(1, 'value')
if len(trim(ls_tmp)) = 0 or isnull(ls_tmp) then return '!'
Choose Case ls_coltype
Case "char(", "char", "date", "datet", "time", "times"
ls_expression += "'" + ls_tmp + "'"
case else
ls_expression += ls_tmp
end choose
end choose
return ls_expression
------------------------of_buildselectexpression------------------------------
string ls_value = '', ls_expression, ls_tmp, ls_column, ls_coltype
long ll_row, ll_rowcount
ll_rowcount = ids_cond.rowcount()
ls_column = adw.describe(as_col + '.dbname')
if ls_column = '!' or ls_column = '?' or ls_column = '' then return '!'
ls_coltype = adw.describe(as_col + '.coltype')
If ls_coltype='!' or ls_coltype='?' Then Return '!'
ls_coltype = Lower ( Left (ls_coltype, 5 ) )
ls_expression = ls_column + ' ' + as_opr + ' '
choose case as_opr
case '= any'
ls_expression = ''
case 'is null', 'is not null'
ls_expression += ls_column + ' ' + as_opr
case 'in', 'not in'
if ll_rowcount < 2 then return '!'
ls_value = "("
for ll_row = 1 to ll_rowcount
ls_tmp = ids_cond.getitemstring(ll_row, 'value')
if len(trim(ls_tmp)) = 0 or isnull(ls_tmp) then return '!'
Choose Case ls_coltype
Case "char(", "char", "date", "datet", "time", "times"
ls_value += "'" + ls_tmp + "', "
Case Else
//weng
//old ls_value += "'" + ls_tmp + ", "
ls_value += ls_tmp + ", "
//weng
end choose
next
ls_value = left(ls_value, len(ls_value) - 2) + ')'
ls_expression += ls_value
case 'like', 'not like'
if ll_rowcount <> 1 then return '!'
ls_tmp = ids_cond.getitemstring(1, 'value')
if len(trim(ls_tmp)) = 0 or isnull(ls_tmp) then return '!'
Choose Case ls_coltype
Case "char(", "char"
ls_expression += "'%" + ls_tmp + "%'"
case else
ls_expression = '!'
end choose
case else
if ll_rowcount <> 1 then return '!'
ls_tmp = ids_cond.getitemstring(1, 'value')
if len(trim(ls_tmp)) = 0 or isnull(ls_tmp) then return '!'
Choose Case ls_coltype
Case "char(", "char", "date", "datet", "time", "times"
ls_expression += "'" + ls_tmp + "'"
case else
ls_expression += ls_tmp
end choose
end choose
return ls_expression
--------------------of_buildselectimpossible---------------------------------------
string ls_column
If Len(Trim(as_col))=0 or IsNull(as_col) Then Return '!'
ls_column = adw.describe(ls_column + '.dbname')
if ls_column = '!' or ls_column = '?' or ls_column = '' then return '!'
return ls_column + ' is null and ' + ls_column + ' is not null '
-----------------------------of_buildselectimpossible--------------------------------------
string ls_column
If Len(Trim(as_col))=0 or IsNull(as_col) Then Return '!'
ls_column = adwc.describe(as_col + '.dbname')
if ls_column = '!' or ls_column = '?' or ls_column = '' then return '!'
return ls_column + ' is null and ' + ls_column + ' is not null '
---------------------------of_findcontrolcolumn-----------------------------------------
string ls_r
long ll_row
if isnull(as_dw) or len(trim(as_dw)) = 0 then return '!'
if not isvalid(ids_template) then return '!'
if ids_template.rowcount() < 1 then return '!'
ll_row = ids_template.find('datawindow = "' + as_dw + '"', 1, ids_template.rowcount())
if ll_row <= 0 then return '!'
ls_r = ids_template.getitemstring(ll_row, 'columnname')
if isnull(ls_r) or trim(ls_r) = '' then return '!'
return ls_r
-----------------------------of_finddw----------------------------------------------------
long ll_row
if isnull(as_dw) or len(trim(as_dw)) = 0 then return false
if not isvalid(ids_template) then return false
if ids_template.rowcount() < 1 then return false
ll_row = ids_template.find('datawindow = "' + as_dw + '"', 1, ids_template.rowcount())
if ll_row <= 0 then return false
return true
--------------------------------of_protect-------------------------------
string ls_cols[], ls_modify, ls_tmp
long ll_column, ll_tmp
of_getobjects(ls_cols, 'column', '*', false)
ll_column = upperbound(ls_cols)
for ll_tmp = 1 to ll_column
ls_modify = ls_cols[ll_tmp] + ".Protect=1"
ls_tmp = idw_requestor.describe(ls_cols[ll_tmp] + ".band")
if ls_tmp <> '?' then
ls_modify = idw_requestor.modify(ls_modify)
if ls_modify <> '' then return FAILURE
end if
next
return SUCCESS
-----------------------------------of_register-----------------------------
string ls_dw, ls_col, ls_opr, ls_user
integer li_rc
application app
app = GetApplication()
is_app = app.appname
is_user = as_user
ls_dw = idw_requestor.dataobject
idw_requestor.settransobject(atr)
itr = atr
if isnull(atr) or not isvalid(atr) then return FAILURE
if isnull(is_app) or isnull(as_user) or isnull(ls_dw) or trim(is_user) = '' then return FAILURE
//初始化数据窗口
ids_info = create n_ds
ids_info.dataobject = 'd_datasecurity_info'
ids_info.settransobject(atr)
ids_cond = create n_ds
ids_cond.dataobject = 'd_datasecurity_condition'
ids_cond.settransobject(atr)
ids_template = create n_ds
ids_template.dataobject = 'd_datasecurity_template'
ids_template.settransobject(atr)
//取出模板
if ids_template.retrieve(is_app) < 0 then return FAILURE
//如果在安全模板中就处理,否则就处理CHILDDATAWINDOW,然后返回,对本窗口不作任何控制
if not of_finddw(ls_dw) then
is_act = ''
return of_securechild()
end if
//取出控制列
ls_col= of_findcontrolcolumn(ls_dw)
//取控制列出错
if ls_col= '!' then
return FAILURE
end if
//模板中有,信息中没有,认为不可见,则只需将is_act置为'不可见',DATAWINDOW也不可见
if ids_info.retrieve(is_app, ls_dw, is_user) < 0 then return FAILURE
if ids_info.rowcount() = 0 then
is_act = '不可见'
else //取出用户信息
is_act = trim(ids_info.getitemstring(1, 'allowedaction'))
ls_opr = trim(ids_info.getitemstring(1, 'operator'))
ls_user = trim(ids_info.getitemstring(1, 'username'))
if isnull(ls_user) or len(trim(ls_user) ) = 0 then return FAILURE
if isnull(ls_col) or isnull(is_act) or trim(ls_opr) = '' or trim(is_act) = '' then return FAILURE
end if
//明确不可见
if is_act = '不可见' then
if of_setinvisible(idw_requestor, ls_col) = FAILURE then return FAILURE
if of_protect() = FAILURE then return FAILURE
return SUCCESS
end if
//如果是可见先保护再说
if is_act = '可见' then
if of_protect() = FAILURE then return FAILURE
end if
//再往下就只有'可见'和'可改'了, 不论'可见'或'可改', 均应先改sql
//先把条件取出来
if ids_cond.retrieve(is_app, ls_dw, ls_user, ls_col) < 0 then return FAILURE
//在本函数中处理中DATAWINDOW,如果成功则继续处理CHILDDATAWINDOW
li_rc = of_beforeretrieve(idw_requestor, ls_col, ls_opr)
if li_rc = FAILURE then return FAILURE
li_rc = of_securechild()
return li_rc
--------------------------------------------of_securechild--------------------------------
//以下处理CHILDDATAWINDOW
string ls_cols[], ls_dddw, ls_act, ls_opr, ls_col, ls_user
long ll_column, ll_tmp
integer li_rc
datawindowchild ldwc
of_getobjects(ls_cols, 'column', '*', false)
ll_column = upperbound(ls_cols)
for ll_tmp = 1 to ll_column
//先判断是否DDDW
ls_dddw = idw_requestor.describe(ls_cols[ll_tmp] + ".dddw.name")
if ls_dddw = '!' or ls_dddw = '?' or ls_dddw = '' then continue
//是否在模板中
if not of_finddw(ls_dddw) then continue
//取出列名信息
ls_col = of_findcontrolcolumn(ls_dddw)
if ls_col = '!' then return FAILURE
//如果在模板中,应该能取出来
if idw_requestor.getchild(ls_cols[ll_tmp], ldwc) = -1 then return FAILURE
//SETTRANSOBJECT
if ldwc.settransobject(itr) = -1 then return FAILURE
//取出用户信息
if ids_info.retrieve(is_app, ls_dddw, is_user) < 0 then return FAILURE
if ids_info.rowcount() = 0 then
ls_act = '不可见'
else //取出用户信息
ls_act = trim(ids_info.getitemstring(1, 'allowedaction'))
ls_opr = trim(ids_info.getitemstring(1, 'operator'))
ls_user = trim(ids_info.getitemstring(1, 'username'))
if isnull(ls_col) or isnull(ls_act) or trim(ls_opr) = '' or trim(ls_act) = '' then return FAILURE
end if
//明确不可见
if ls_act = '不可见' then
if of_setinvisible(ldwc, ls_col) = FAILURE then return FAILURE
continue
end if
if ids_cond.retrieve(is_app, ls_dddw, ls_user, ls_col) < 0 then return FAILURE
if of_securechild(ldwc, ls_col, ls_opr) = FAILURE then return FAILURE
next
return SUCCESS
//结束
-----------------------------------------------of_securechild----------------------------------
string ls_select, ls_expression, ls_colexp, ls_oldfilter
long ll_row
//先构造过滤用的EXPRESSION
ls_expression = of_builddwexpression(adwc, as_col, as_opr)
if ls_expression = '!' then
return FAILURE
else
ls_oldfilter = adwc.describe('datawindow.table.filter')
if not (isnull(ls_oldfilter) or ls_oldfilter = '' or ls_oldfilter = '?' or ls_oldfilter = '!') then
ls_expression = '(' + ls_oldfilter + ') and (' + ls_expression + ')'
end if
if adwc.setfilter(ls_expression) <> 1 then
return FAILURE
else
adwc.filter()
is_filter = ls_expression
end if
end if
//对于可取到SQL并且非数据窗口计算字段的,还要修改SQL,修改成功当然好,不成功也没有关系因为FILTER成功了
ls_select = adwc.describe('datawindow.table.select')
ls_colexp = adwc.describe(as_col + '.expression')
if ls_select <> '!' and ls_select <> '?' and ls_select <> '' and ls_colexp = '!' then //可以修改select
ls_expression = of_buildselectexpression(adwc, as_col, as_opr)
if ls_expression <> '!' and ls_expression <> '' then
ls_select = lower(ls_select)
if pos(ls_select, 'where') > 0 then
ls_select = ls_select + ' and ' + ls_expression
else
ls_select = ls_select + ' where ' + ls_expression
end if
end if
// if of_testsqlselect() then
if adwc.modify('datawindow.table.select="' + ls_select + '"') <> '' then return FAILURE
// end if
end if
return SUCCESS
----------------------------------------of_setinvisible-----------------------------------------------------
string ls_expression, ls_select, ls_colexp
if isnull(as_col) or trim(as_col) = '' then return FAILURE
if not isvalid(adw) then return FAILURE
ls_expression = 'isnull(' + as_col + ') and not isnull(' +as_col + ')'
if adw.setfilter(ls_expression) <> 1 then
return FAILURE
else
adw.filter()
end if
//处理SQL,对于可取到SQL并且非数据窗口计算字段的,还要修改SQL,修改成功当然好,不成功也没有关系因为FILTER成功了
ls_select = adw.describe('datawindow.table.select')
ls_colexp = adw.describe(as_col + '.expression')
if ls_select <> '!' and ls_select <> '?' and ls_select <> '' and ls_colexp = '!' then //可以修改select
ls_expression = of_buildselectimpossible(adw, as_col)
ls_select = lower(ls_select)
if pos(ls_select, 'where') > 0 then
ls_expression = ls_select + ' and ' + ls_expression
else
ls_expression = ls_select + ' where ' + ls_expression
end if
adw.modify('datawindow.table.select="' + ls_expression + '"')
end if
return SUCCESS
-------------------------------------of_setinvisible-----------------------------------
string ls_expression, ls_select, ls_colexp
if isnull(as_col) or trim(as_col) = '' then return FAILURE
if not isvalid(adwc) then return FAILURE
ls_expression = 'isnull(' + as_col + ') and not isnull(' +as_col + ')'
if adwc.setfilter(ls_expression) <> 1 then
return FAILURE
else
adwc.filter()
end if
//处理SQL,对于可取到SQL并且非数据窗口计算字段的,还要修改SQL,修改成功当然好,不成功也没有关系因为FILTER成功了
ls_select = adwc.describe('datawindow.table.select')
ls_colexp = adwc.describe(as_col + '.expression')
if ls_select <> '!' and ls_select <> '?' and ls_select <> '' and (ls_colexp = '!' or ls_colexp = '?') then //可以修改select
ls_expression = of_buildselectimpossible(adwc, as_col)
ls_select = lower(ls_select)
if pos(ls_select, 'where') > 0 then
ls_expression = ls_select + ' and ' + ls_expression
else
ls_expression = ls_select + ' where ' + ls_expression
end if
adwc.modify('datawindow.table.select="' + ls_expression + '"')
end if
return SUCCESS
发表评论
-
关于pb游标的使用
2010-08-19 09:58 8973提到游标这个词,人们 ... -
如何将COLUMN的显示风格在EDIT、DDDW、DDLB之间相互切换:
2010-08-19 08:45 1596//如何将COLUMN的显示风格在EDIT、DDDW、DDLB ... -
pb从数据窗口获得数据的方法总结
2010-08-19 08:40 1921通过PowerBuilder的数据窗 ... -
在PB中如何动态注册ACCESS的ODBC数据库连接
2010-08-18 09:28 2989在PB中如何动态注册ACCESS的ODBC数据库连接 //获 ... -
在PB中快速实现数据库树形结构
2010-08-18 08:47 1901树形结构在Windows环境中被普遍应用,它以简捷的界面深受用 ... -
datawindow的参考手册
2010-08-18 08:24 893http://www.docin.com/p-63792034 ... -
sap powerbuilder 接口
2010-08-10 13:40 1623//Declaration String ls_app_se ... -
权限设计的探讨
2010-08-06 16:13 1354但凡涉及多用户不同权限的网络或者单机程序,都会有权限管理的问题 ... -
数据管道的用法
2010-04-22 08:58 1470我们首先看看数据管道 ... -
使用PowerBuilder同时访问多个数据库
2010-04-21 16:00 1331某个客户应用可能需要在同一窗口同时访问两个服务器上的两个不同种 ... -
优化你的PowerBuilder程序
2010-04-21 15:50 1028一段程序,完成了所需要的功能固然重要,但是提高执行效率,提高代 ... -
Power Builder 中动态SQL语句的写法
2010-04-16 10:49 1576PowerBuilder是目前最流行的数据库开发工具之一。Po ... -
Datawindow每页显示固定行
2010-04-14 18:52 971使Datawindow每页显示固定行 ---- 第一步:增加 ... -
日期计算函数
2010-04-11 14:00 918Day() 功能得到日期型 ... -
最小化,最大化,正常化窗口
2010-04-01 10:46 933This statement minimizes the Da ... -
datawindow 技巧
2010-04-01 09:08 6129网上看了很多datawindow的技巧,找了很多的例子,发现网 ... -
PowerScript – 常用函数和语句 -文件操作
2010-04-01 08:51 1099文件操作在程序设计中是不可缺少的。可以用文件函数来打开一 ... -
sqlca.sqlcode的数值含义
2010-03-29 16:23 1703如果一个 SQL 语句发生了错误,那么 sqlca.sq ... -
pb函数库之日期、时间函数
2010-03-25 09:59 2745Day()功能得到日期型数据中的号数(1到31之间的整数值 ... -
MESSAGE传递的机制及实例
2010-03-23 09:19 709MESSAGE是PFC消息传递的一个全局变量,是一个通用的数据 ...
相关推荐
5G移动通信网数据安全监测预警技术要求.pdf
基于Android平台的数据安全检测研究 本研究论文旨在探讨基于Android平台的数据安全检测问题,针对Android智能终端中存储的个人隐私数据,研究如何检测和防止恶意软件的窃取和泄露。论文首先介绍了Android智能终端的...
本文将基于提供的文件信息,深入探讨零信任架构在结构化数据安全检测中的集成及其相关知识点。 ### 一、零信任架构的特征与原理 零信任架构的核心特征包括: - **无默认信任**:所有访问请求,无论来自内部还是...
具体措施包括加强数据安全监测、对数据处理流程进行白名单化管理、监控数据供给和数据清洗加工过程,确保数据在整个生命周期内的安全。 通过实施这些政务大数据安全场景化实践,能够有效提升政务大数据的安全性,为...
* 数据安全保护义务包括保护重要数据、加强数据安全风险评估、加强数据安全技术研究、加强数据安全标准体系建设、加强数据安全检测评估、认证服务等方面。 四、数据分类分级保护制度 * 数据分类分级保护制度是指...
2. 风险控制和监测:指在数据安全风险评估中,需要对数据安全风险进行控制和监测,以确保数据的安全和完整性。 3. 风险评估和报告:指在数据安全风险评估中,需要对数据安全风险进行评估和报告,以便于相关部门和...
8. 数据安全风险监测:对数据安全风险进行监测,发现数据安全风险和漏洞,并采取相应的补救措施。 9. 数据安全检查:对数据安全进行检查,确保数据安全符合相关规定和标准。 10. 数据安全法规遵守:遵守相关的数据...
国家建立数据安全制度,建立数据分级分类保护制度,建立集中统一、高效权威的数据安全风险评估、报告、信息共享、监测预警机制,建立数据安全应急处置机制,建立数据安全审查制度,明确数据安全保护义务,要求企业...
数据安全是指保护数据不受未授权的访问、泄露、篡改、破坏和丢失的侵害。业务安全则是从商业角度出发,确保企业业务的连续性和有效性不被内外部威胁所破坏。从数据安全到业务安全,涉及到一系列技术、管理和策略方面...
随着信息技术的快速发展,数据安全已成为全球范围内的关注焦点。确保数据安全不仅涉及技术措施,还涉及法律法规的制定与执行。本文档《数据安全风险评估方法及实施指南(深圳).pdf》详细介绍了数据安全风险评估的...
这些技术手段包括但不限于数据安全管理、数据安全防护、数据包安全检测、大数据技术等。其中,工业数据存储介质的多样性、存储属地的分散性以及访问控制等技术在数据安全防护中占据核心地位。此外,结合人工智能、大...
金融数据安全 数据安全分级指南;本标准起草单位:中国人民银行科技司、中国银行保险监督管理委员会统计信息与风险监测部、国 家金融IC卡安全检测中心(银行卡检测中心)、深圳市长亮科技股份有限公司、中国银行保险...
综上所述,基于区块链的高速铁路监测数据安全存储方案提出了一种创新的存储模型和技术实现方式,能够有效提升高速铁路监测数据的安全性和可靠性。随着区块链技术的进一步发展和完善,未来有望在更广泛的领域得到推广...
在当前的大数据时代,数据安全成为了企业和组织面临的重大挑战。随着信息技术的迅猛发展,数据的流动性和使用价值得到了前所未有的释放,这在极大提升经济社会运行效率的同时,也对数据的安全保护提出了新的要求。 ...
- 数据安全运营管理能力:建立持续的安全监测和响应机制,确保数据安全策略的有效执行。 4. 核心技术应用 - 数据脱敏技术:通过替换、加密等方式,降低敏感数据的可识别性,保护个人信息隐私。 - 用户实体行为...
这个议题来自于携程资深数据安全工程师挖土。数据安全是当前安全领域最为火热的话题之一,很多企业受困于敏感信息访问监控、预警、追溯能力的不足,在信息泄露事件发生时往往束手无策。 针对企业内部的后台系统的...
本文以企业入侵检测日志分析为场景来谈谈大数据安全。
本文将讨论云计算中数据安全和隐私保护的关键技术,包括入侵检测、身份验证、访问控制、加密技术、数据备份和恢复等。这些技术可以有效地保护云计算用户数据的安全和隐私。 1. 入侵检测技术 入侵检测技术是根据...
基于《数据安全法》---企业如何做好数据安全防护 1.企业应设立数据安全负责人和管理机构,落实数据安全保护责任,尤其是重要数据所在企事业单位。...4.企业应建立健全数据安全风险监测和应急处置机制(第二十九条)。