分享

PB数据窗口GetItemString函数详解

 格瑞思n5c5alhf 2020-03-27

GetItemString
函数作用:从数据窗口或者 DataStore 控件的指定缓冲区中获取指定单元的 String 类型的数 据。通过参数的设置,还可以获取指定单元的最初数据,也就是最初 Retrieve 或者最近 Update 成功之后的该单元的取值。需要注意的是,该函数获取的是被 数据窗口中字段接受的数据,是触发完 AcceptText 之后列中的数据,是通过了 校验规则的数据;当用户输入完内容尚未离开该单元时,数据尚未被该单元接 受,这种情况下使用该函数是获取不到当前录入的内容的,这时需要使用函数 GetText  来获 取 。这是 GetText  和 GetItemString  函数的 区别。 类似 的, GetItemNumber、GetItemDecimal 等系列函数还有很多,它们的用法都是类似的。
函数语法:
语法格式一:string  dwcontrol.GetItemString  (  long  row,  integer  column  {,  DWBuffer dwbuffer, boolean originalvalue } )
语法格式二:string  dwcontrol.GetItemString  (  long  row,  string  column  {,  DWBuffer
dwbuffer, boolean originalvalue } )
z dwcontrol:要获取数据的数据窗口、DataStore 或者子数据窗口控件;
z row:要获取哪行的数据,long 类型;
z column:要获取数据的列,可以是列号,也可以是列名。当采用列号时,一定 要注意只有定义数据窗口的 SQL 语句中字段的顺序才能决定列号,列的显示 位置不能决定列号。该列的类型必须是字符类型,否则不能正确获取数据。
z dwbuffer:该参数是可选的。用来指明在哪个数据缓冲区中获取数据。该参数 为枚举类型,可用的取值有 Filter!、Primary!和 Delete!,不能使用 Original!。
z originalvalue:该参数也是可选的,为 Boolean 类型,用来指明是否使用最初 的数据。
返 回 值:函数执行正确时返回指定单元中的数据,执行错误返回'’,任何参数为空时返 回 Null。
使用说明:该函数可以用来获取常规的列以及计算列和计算域中的数据。计算列是指在定义 数据窗口的 SQL 语句中指定的,可以是表达式、常量等;计算域指在数据窗口 设计时添加的。用来获取常规列和计算列中的数据时,该函数获取的是非格式 数据。比如,我们定义一个字符类型的列用来保存电话号码,指定格式为##
#-########,虽然这样的列中显示的数据样式也是'010-81692157’ 这样的数据,但是使用该函数获取到的数据仍然是'01081692157’。如果希望 获取带有格式的数据,可以使用 GetItemFormattedString 函数来代替,两个函数 的参数及含义是相同的。而对于计算域,函数 GetItemString 获取到的数据恰恰 相反,而是格式化以后的数据。如果希望获取计算域中非格式化的数据,可以 使用函数 GetItemUnformattedString,该函数的语法格式也是相同的。和该函数 类似的或者相关的函数有:
z GetItemDate
z GetItemDateTime
z GetItemDecimal
z GetItemFormattedString
z GetItemNumber
 

z GetItemTime
z GetItemUnformattedString
z GetText z SetItem z SetText
代码实例:
例 1:下面脚本获取数据窗口中第 3 行字段 emp_name 中的数据:
String ls_name


ls_name = dw_employee.GetItemString(3, "emp_name")
例 2:如何编写自定义函数 GetItemAny,使用该函数可以获取任何类型的数据。


/*---------------------------------------------------------------------------------------
* 函数名称: gf_GetItemMany(datawindow ad_dw,long al_row,string as_column)
* 函数作用: 获取指定数据窗口中指定字段的取值.
* 编写日期: 2001-4-15
*----------------------------------------------------------------------------------------*/ String ls_type
any la_rtn


ls_type = Trim(ad_dw.Describe(as_column+".ColType"))
choose case Lower(Left(ls_Type,3))
case "cha"
la_rtn = ad_dw.GetItemString(al_row,as_column)
case "dat"
if ls_type="date" then
la_rtn = ad_dw.GetItemDate(al_row,as_column)
else //datetime
la_rtn = ad_dw.GetItemDateTime(al_row,as_column)
end if
case "int","lon","num","rea","ulo"
la_rtn = ad_dw.GetItemNumber(al_row,as_column)
case "dec"
la_rtn = ad_dw.GetItemDecimal(al_row,as_column)
case "tim" //time or timestamp
la_rtn = ad_dw.GetItemTime(al_row,as_column)
end choose


if IsNull(la_rtn) then la_rtn = '' return String(la_rtn)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多