PB怎样获取文件路径用什么函数谢谢!!

PB怎样获取文件路径用什么函数谢谢!!,第1张

messagebox('错误','无法取得程序运行路径')haltelseif ll_apphandler<0 then//编译模式

ls_apppath=ls_appname

ls_strtmp=reverse(ls_apppath)

li_pos=pos(ls_strtmp,'\',1)

ls_strtmp=mid(ls_strtmp,li_pos+1)

ls_apppath=reverse(ls_strtmp)

else //PB环境下运行

ls_apppath='D:\ScaleWinInterface'//据实际情况改变

ls_appname=ls_apppath+'\mainexe'//同上lb_c=falseend ifend if其中声明PUBLIC FUNCTION uLong GetModuleFileName(ulong hModule,ref string lpFileName,ulong nSize) LIBRARY "kernel32dll" ALIAS FOR "GetModuleFileNameA"

这样ls_apppath即为执行程序的路径。

ls_appname为路径(包括文件名)

以上是得到当前运行程序的路径,如果要得到其他文件的路径,如果知道这个文件名,也就知道它的路径了,不必再找,如果想查找符合某个文件名的所有文件的路径,就要做目录遍历了。这个可以到网站找例子。

%是用来做字符串匹配的,比如在数据窗口的find函数中使用:

//查找dw_emp中emp_name字段值含有ls_name字符的数据

string ls_name

long ll_nbr, ll_foundrow

ll_nbr = dw_empRowCount()

ls_name = Trim(sle_NameText)

ll_foundrow = dw_empFind( "emp_name like '%" + ls_name + "%'", 1, ll_nbr)

%代表任意字符(可以是一个或多个),可以写在要查找字符的前后都可以,比如

ll_foundrow = dw_empFind( "emp_name like '张%' ", 1, ll_nbr)表示查找姓张的人

ll_foundrow = dw_empFind( "emp_name like '%磊' ", 1, ll_nbr)表示查找名字最后一个字是磊的人

ll_foundrow = dw_empFind( "emp_name like '%磊%' ", 1, ll_nbr)表示查找名字中含磊字的人

在PowerBuilder中使用数据窗口检索到的数据往往是无序的 虽然可以通过设置Select语句实现排序的功能 但是数据窗口一旦生成都无法进行动态调整

一 准备工作

为了更好地比较三种不同的方法 dw 中的数据来自两个表student和class student表中包含四个字段sid(学号) sname(姓名) saddr(住址)和cid(班号) class表中包含两个字段cid(班号)和cname(班级名称)

二 三种方法的源程序

种方法中的 执行 按钮的代码分别为

方法 :用SetSQLselect()

string ls oldsql ls newsql ls order ls column

ls oldsql=dw getsqlselect()

choose case ddlb text

case ″学号″ls column=″sid″

case ″姓名″ls column=″sname″

case ″住址″ls column=″saddr″

case ″班号″ls column=″class cid″

case ″班级名称″ ls column=″cname″

end choose

if rb checked then ls order=″ASC″

else ls order=″DESC″

end if

ls newsql=ls oldsql+″ ORDER BY ″+ &

ls column+″ ″+ls order

if dw setsqlselect(ls newsql)= then

messagebox(″警告″ ″数据设置失败″ stopsign!)

else dw settransobject(sqlca)

dw reset()

dw retrieve()

dw setsqlselect(ls oldsql)

end if

方法 :用describe()和modify()

lishixinzhi/Article/program/PB/201311/24607

string ls mod ls order ls old ls column

ls old=dw describe(′datawindow table select′)

dw settransobject(sqlca)

choose case ddlb text

case ″学号″ls column=″sid″

case ″姓名″ls column=″sname″

case ″住址″ls column=″saddr″

case ″班号″ls column=″class cid″

case ″班级名称″ ls column=″cname″

end choose

if rb checked then ls order=″ASC″

else ls order=″DESC″

end if

ls mod=″datawindow table select=′ ″+ls old+&

′ORDER BY ″ ′+ls column+′ ″ ′+ls order+″ ′ ″

dw modify(ls mod)

dw retrieve()

dw modify(″datawindow table select= &

′ ″+ls old+″ ′ ″)

方法 :用setsort()和sort()

string ls sort ls order ls column

choose case ddlb text

case ″学号″ ls column=″# ″

case ″姓名″ ls column=″# ″

case ″住址″ ls column=″# ″

case ″班号″ ls column=″# ″

case ″班级名称″ ls column=″# ″

end choose

if rb checked then ls order=″A″

else ls order=″D″

end if

ls sort=ls column+′′+ls order

dw setsort(ls sort)

dw sort()

三 三种方法的比较

第一种和第二种方法要求数据窗口在生成时是无序的 第三种方法无此要求

对于来自不同表单的相同的列名(如student cid class cid)用第二种方法排序实现起来较麻烦 因为在用modify()函数时要特别注意引号的使用 但是第二种方法比第一种方法的执行速度要快

第三种方法使用起来最方便 既可以引用列名也可引用列号(如# 表示第四列)来指定序列

      编辑推荐

       ASP NET开发培训视频教程

       Microsoft NET框架程序设计视频教程

lishixinzhi/Article/program/PB/201311/24608

主要问题在于这句:

UPDATE"t_user" SET "t_user""Mm" = :ls_b where "t_user""yhbm" =:ls_yhbm;

表名和字段名不应该用引号括起来。

另外,提醒楼主,关于rollback和commit,稳健一点的写法是:把它们写在messagebox语句之前,因为你无法确定用户什么时候去点击提示框的确定,写在之后的话,如果用户没有点确定而离开了计算机,那么数据表将长时间的保持在事务未决状态。

-------------------

补充一下,又发现你一个问题,这句:

if sqlcasqlcode<>-1 then

应该是

if sqlcasqlcode<>0 then

也就是说,不为0时,是执行失败。

以上就是关于PB怎样获取文件路径用什么函数谢谢!!全部的内容,包括:PB怎样获取文件路径用什么函数谢谢!!、% 在PB 程序中的用法、PB中实现数据窗口动态排序的三种方法[1]等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9734238.html

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

发表评论

登录后才能评论

评论列表(0条)

保存