欢迎来到天天文库
浏览记录
ID:34772641
大小:52.09 KB
页数:3页
时间:2019-03-10
《数据窗口中读取数据的方法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、数据窗口中读取数据的方法数据窗口中读取数据的方法 ------------------------------------------------------------------------------ 读取数据窗口中的数据,这是数据窗口进行的最简单、最基本的操作。通常的做法是使用函数,其他方法如使用数据窗口对象属性直接引用字段的技术在后面专门介绍。本文介绍一些基本的读取数据的方法。 使用函数GetItemX是常用的做法,其中的X和要读取字段的类型兼容。例如,要读取string类型字段中的数据
2、,可以使用函数GetItemString,要读取Date类型字段中的数据,应该使用函数GetItemDate。所以,在读取数据之前,应该首先清楚要读取的数据的类型。这些函数的格式是: dwcontrol.GetItemX(row,column{,dwbuffer,originalvalue}) 其中的X可以替换成Date、DateTime、Decimal、Number、String、Time,所以读取数据的函数有6个。参数row表示要读取哪行的数据,是一个long类型数值。column代表列,可以
3、是string型的列名,也可以是整型的列号。dwbuffer是DWBuffer枚举型,取值Primary!、Delete!、Filter!分别代表主缓冲区、删除缓冲区和过滤缓冲区。originalvalue为Boolean型,表示是否读取最近一次检索时检索到的初始值,当指定dwbuffer时必须指定该参数,该参数和dwbuffer都是可选的。函数正确执行则返回对应类型的数据,执行过程中发生错误则返回空值(“”),任何参数为Null则返回Null。 例如,在一个有性别字段的用于显示数据的数据窗口中,当
4、检索完毕后将1都替换成“男”,将0都替换成“女”,这样的显示更好一些。可以在数据窗口的RetrieveEnd事件中编写如下脚本: longll_rowno stringls_sex Ifrowcount<=0Thenreturn//如果没有数据则直接返回 Forll_rowno=1Torowcount//逐条进行处理 ls_sex=Trim(This.GetItemString(ll_rowno,"sex"))//读取字段sex并去掉两端空格 Ifls_sex="1"Then//如果是
5、“男” dw_1.SetItem(ll_rowno,"sex","男") Elseifls_sex="0"Then//如果是"女" dw_1.SetItem(ll_rowno,"sex","女") EndIf Next 上述例程仅仅是为了说明GetItemX函数,没有太大的实际用途。因为有很多手段可以实现该汉字界面的构造。使用GetItemX类型的6个函数可以读取数据窗口的数据,但是在使用这些函数前必须首先知道字段的类型。另外,如果字段的类型和函数要读取的类型不兼容,例如,使用
6、函数GetItemString读取Date类型字段中的内容,这样的错误在脚本编译时不会被检查出来。有没有解决这个问题的方法呢? PowerBuilder中提供了any类型的变量,可以接受任何类型的数据,可以使用该变量来解决这个问题。为保证所有需要读取数据的数据窗口中都可以读取任意类型的字段,可以编写一个通用的函数。读取数据时不再使用GetItemX函数,而是使用数据窗口对象属性直接引用。下面的自定义函数使用any类型的变量,来保存读取到的字段的数据,然后返回该any类型的数据,获取该返回值时,只要使
7、用相应的类型转换函数即可。例如,要读取字段name中的数据,可以使用如下格式调用: Stringls_name Ls_name=String(GetItemAny(dw_1,1,"name") 函数GetItemAny如下: /*************************************************************** *funtionGetItemAny(datawindowids_ds,longal_row,stringas_Column) *参数:d
8、atawindowids_dsbyvalue * longal_rowbyvalue * stringas_Columnbyvalue *返回值类型:any *功能:读取指定数据窗口ids_ds中第al_row行中字段as_column中的值 ****************************************************************/ Longll_Col Anyla_A IFal_Row>i
此文档下载收益归作者所有