accepttext

时间:2024-07-12 21:35:39编辑:奇闻君

pb判定数据表里的某个信息不能为空值,用PB命令怎么写?

比如数据窗口为dw_1,姓名字段为name,学号为id.首选要确定的是多行数据还是一行数据.
①1行数据:
string ls_temp
dw_1.accepttext()//将用户编辑数据窗口的值存入缓存区
ls_temp = dw_1.object.name[1]
if isnull(ls_temp) or ls_temp ='' then
messagebox('提示','姓名不能为空!')
return
end if
ls_temp = dw_1.object.id[1]

if isnull(ls_temp) or ls_temp ='' then
messagebox('提示','学号不能为空!')
return
end if
② 多行:
string ls_temp
long i
dw_1.accepttext()//将用户编辑数据窗口的值存入缓存区

for i=1 to dw_1.rowcount()
ls_temp = dw_1.object.name[i]
if isnull(ls_temp) or ls_temp ='' then
messagebox('提示','第'+string(i)+'行姓名不能为空!')
return
end if

ls_temp = dw_1.object.id[i]
if isnull(ls_temp) or ls_temp ='' then
messagebox('提示','第'+stirng(i)+'行学号不能为空!')
return
end if
next


powerbuilder 中FIND方法 求举例 各个字符的意思 求解释

long ll_find
ll_find = dw_1.find("emp_id = '1'", 1, dw_1.rowcount())
例子是这样的。
find函数是针对数据窗口控件的函数,也就是查找的主体是数据窗口,所以前边的dw_1是你要查找的数据窗口名字。
find函数中,第一个参数是查找的条件,这个例子,是emp_id字段等于'1'的数据。1使用单引号引起来,说明资格字段是字符型,这个地方根据类型而定。如果是数字,那么就不需要单引号了。
这个地方的条件我们在应用中一般都是动态使用的,举个例子,还是emp_id字段,查找emp_id字段等于用户在sle_1控件中输入的内容,并返回行。
string ls_emp
long ll_find
ls_emp = sle_1.text
ll_find = dw_1.find("emp_id = '" +ls_emp+ "'",1,dw_1.rowcount())
这个例子,emp_id仍然是字符型,如果是数字型,写法如下:
ll_find = dw_1.find("emp_id = " + ls_emp, 1, dw_1.rowcount())
这个条件是拼出来的,所以字符型的字段查找,一定别忘记了单引号。

第三个,也就是例子中的1,是表示查找的起始行,从数据窗口的哪一行开始查找。
最后一个,dw_1.rowcount(),是查找的终止行,最后两个参数合在一起,就是查找的范围。

返回值是long型,返回第一个符合查找条件的行。
如果说要查找最后一个,或者查找所有符合条件的行,需要使用do while循环,不断改变查找的起始行来做。
比如查找第一个符合条件的行是ll_find,循环下一次,就从ll_find + 1开始就可以了。


pb编程 怎么通过已知值,读取其它列的数据.

是在数据窗口中么?如果是数据窗口中,可以使用find函数,通过a的值做查找,能得到相应的行,不过这个行,是从指定的起始行(默认是1)开始往下查找,第一个符合条件的行。所以,如果你的a的值有多行都等于这个,那么只能找到第一个,如果要找多个,要使用循环才行。
代码如下(这里假设你的字段是字符型):
long ll_find
ll_find = dw_1.find("a = '已知数据'")
if ll_find <= 0 then return //没有找到对应行
string ls_c
ls_c = dw_1.object.c[ll_find]


上一篇:陈坤的书

下一篇:淘最上海 程兰