pb find函数怎么用的?

pb find函数怎么用的?,第1张

如果要查列名为xm的列:

那么定义变量: string ls_xm //定义姓名变量 long ll_row //返回找到满足条件的行号。

如果是数值列的话需要转换的:

加入xm为长整形的: long ll_xm//定义姓名变量 long ll_row //返回找到满足条件的行号。

pb 中messagebox 的具体用法及其的参数:

完整写法为 MessageBox ( '标题','内容',图标,按键,默认值) 其中标题与内橘好尺容为要显示的字符串,不可省略

图标可选值: Information! 或 StopSign! 或 Exclamation! 或Question! 或 None!

按键可选值: OK! 或 OKCancel! 或 YesNo! 或 YesNoCancel! 或RetryCancel! 或 AbortRetryIgnore!

默认值为可选: 1 或 2 或 3 基本写法事例: MessageBox('圆高袜迹提示信息','这是信息框!')

完整写法事例: if MessageBox('提示信息','资料已修改是否保存?',&Question! ,YesNo! , 1 ) = 1 then MessageBox('提示信息', '你选择了保存资料')

else MessageBox('提示信息','你选择了不保存资料')

end if

FIND() 用法:

long ll_find

ll_find = dw_2.find("yhmc="+trim(sle_1.text)+"",1,dw_2.rowcount() )

//查找dw_2中的用户名称=sle_1文本控件的值,从dw_2第一行到 最后一行,返回该行行数。

dw_2.scrolltoRow(ll_find)//设置该行为焦点,滚动到该行。

一般情况下,我们要逐条查找数据窗口中满足某一条件的记录进行处理的时候,我们的代码经常会是下面这种:

ll_findrow=dw.find(findclause,1,dw.rowcount())

do while ll_find>0

<....>

ll_findrow=dw.find(findclause,ll_findrow+1,dw.rowcount())

loop

这种写法最大的陷阱在于,PB的FIND函数在查找的时候,当参数中起始行大于终止行的时候,会从下往上进行查找,而对参数中的起始行和终止行是否有效行不作限制。

因此,一旦数据窗口中最后一条记录满足条件时,当处理完最后棚梁一条记录后,再去执行FIND的时候,由于ll_findrow+1已经大于dw_rowcount(),PB将会从ll_findrow+1行到dw.rowcount()行开始反向查找满足条件的记录,悄孙此时函数仍将返回数据窗口的最后一行,结果就导致程序进行死循环。

所以,为避免出现死循环,一般应在循环的FIND语句前判断ll_findrow是否已超出数据窗口的记录条数,超出则跳出循环。

不过,还有一种更简单的避免死循环的代码写法如下:

ll_findrow=dw.find(findclause,1,dw.rowcount())

do while ll_find>0 <....>ll_findrow=dw.find(findclause,ll_findrow+1,dw.rowcount() +1 )

loop

另外:

用法Find()函数在进行查找时区分大小写因此当应用程序在某列中查找某个值

时大小写匹配的行才是找到的行。

当应用程序使用循环方式查找满足条件的所有行时要注意不要形成死循环下面是。

段循环查找满足指定条件行的一个示例。

long ll_find = 1, ll_end

ll_end = dw_main.RowCount()

ll_find = dw_main.Find(searchstr, ll_find, ll_end)

DO WHILE ll_find >0

... // 处理找到的链运运行

ll_find++

// 防止死循环

IF ll_find >ll_end THEN EXIT

ll_find = dw_main.Find(searchstr, ll_find, ll_end)

LOOP 


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

原文地址: http://outofmemory.cn/yw/8262452.html

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

发表评论

登录后才能评论

评论列表(0条)

保存