pb常用函数
- 格式:docx
- 大小:25.00 KB
- 文档页数:9
弹出窗口:messagebox()基本写法:Messagebox('标题','内容')完整写法: MessageBox ( '标题','内容',图标,按键,默认值)设置焦点:setfocus()对象名.setfocussle_1.setfocus()用format菜单下的tab order命令可以修改焦点顺序。
把用户名和密码框分别设为10,20,确定按钮设为30就行了。
也可以用控件的setfocus()方法设置焦点。
触发事件:triggerevent()对象名.triggerevent()(1)函数作用:触发指定对象的指定事件,并且立即执行该事件中的脚本。
注意该函数和PostEvent的区别。
PostEvent不是立即执行,TriggerEvent是立即执行触发事件的脚本。
(2)函数语法:objectname.TriggerEvent ( event{, word, long } )关闭窗口:Close()和CloseQuery()默认数据库链接变量:sqlcadw_name.settransobject(sqlca)链接数据库sqlca.sqlcode = 0 有数据\\ = 100 无数据链接数据库connect;一般用于程序open的时候,跟在数据库链接代码后面打开窗口:open( )open(win downame)关闭应用:halt close()halt closehalt 直接结束应用程序从ini配置文件中提取string数据profilestring('文件名,可以包含路径','主要字节','在主要字节下的关键字','如果找不到数据则返回的数据')断开链接disconnect;一般用于程序close的时候是否修改过:isrowmodified()if dw_1.modifiedcount()+dw_1.deletedcount()>0 then.......//数据窗口处于修改状态end if是否新增的:isrownew()数据窗口中的if函数if(true\false,'为true时返回的值','为false时返回的值',)如:if(isrownew(),'新',if(isrowmodified(),'改','旧'))插入空行:insertrow(0)dw_name.insertrow(0)通常配合插入行使用的是滚动行dw_name.scrolltorow(dw_name.insertrow(0)) \\滚动到插入行比如:int rowrow = dw_1.insertrow(0)//显示dw_1.scrolltorow(row)//使用dw_1.object.column[row]从数据窗口中提取数据:getitem( )dw_name.getitem\\string\date\......(row,'数据来源控件名')string dwcontrol.GetItemString ( long row,integer column {, DWBuffer dwbuffer, boolean originalvalue } )String dwcontrol.GetItemString ( long row, string column {,DWBuffer dwbuffer, boolean originalvalue } )getitem首先根据数据窗口不同的字段类型,有不同的函数。
比如对于字符型使用getitemstring,对于数字,getitemnumber,对于日期gettiemdatetime。
设置数据窗口的数据:函数setItem()dw_name.setitem(row,'要设置的控件名','要设置进去的数据')窗口与窗口之间的传值,子窗口closewithreturn(主窗口,'返回给主窗口的值')转换大小写:Lower()&Upper()lower(string)转换为小写的;upper(string)转换为大写的;(1)函数功能:将字符串中的大写字母转换为小写字母。
(2)函数语法Lower ( string )参数string:要将其中的大写字母转换为小写字母的字符串返回值String。
函数执行成功时返回将大写字母转换为小写字母后的字符串,发生错误时返回空字符串("")。
如果string参数的值为NULL,Lower()函数返回NULL。
(1)功能将字符串中的小写字母转换为大写字母。
(2)语法Upper( string )参数string:要将其中的小写字母转换为大写字母的字符串返回值String。
函数执行成功时返回将小写字母转换为大写字母后的字符串,发生错误时返回空字符串("")。
如果string参数的值为NULL,Upper()函数返回NULL。
为数据窗口设置事物对象dw_name.settransobject(sqlca\也可以是自己定义的)settrans():用指定的事务对象来设置数据窗口控件内部事务对象的值。
settransobject():给数据窗口控件设置事务对象,并提供控制事务的能力,包括程序中提交事务的能力清零数据:reset()dw_name.reset()dw_1.reset(): 将数据窗口控件dw_1中的数据清除。
检索数据:retrieve()dw_name.retrieve(里面可以有参数变量不过要与数据窗口中定义的类型与顺序一样)dw_1.retrieve():强制dw_1数据窗口控件从数据库读数据,即从数据库中检索数据。
注:retrieve之前要settransobject()和reset()一下datawindow过滤数据:setfilter(),filter()dw_name.setfilter(string类型\\"name ='"+ls_name+"'")dw_name.filter()数据排序:setsort(),sort()dw_name.setsort(string类型\\"name a\d" :其中a为升序,的d为降序)dw_name.sort()数据分组:groupcalc()dw_name.groupcalc()重新分组一般都是在filter()或sort()后面,以确保分组的正确性dw_stat.SetRedraw(false)dw_stat.setsort("acptsiteid,mophonecode")dw_stat.sort()dw_stat.GroupCalc()//重新计算分组dw_stat.SetRedraw(true)防止刷新,提高效率dw_name.setredraw(false)dw_name.reset()\retrieve()\filter()\sort()\groupcalc():中间是数据操作dw_name.setredraw(true)校验数据:accepttext()dw_name.accepttext() = 1为通过检验 <>1为不通过一般写在要对数据窗口进行操作取数的时候,写在这些动作前面修改的行数:modifiedcount()dw_name.modifiedcount()ModifiedCount()函数是确定DataWindow中被修改的行数(包括插入行),比如:dw_text.ModifiedCount() 如果自前一次更新(如果没有更新,则从上一次检索)后没有修改行或插入行,则返回0,出错返回-1删除的行数:deletedcount()如果deletedcount()+modifiedcount()> 0 则表明数据窗口有操作统计行数:.rowcount()dw_name.rowcount()保存数据:update()if dw_name.update()=1 then \\= 1为成功commit using sqlca; --提交数据elserollback using sqlca; --回滚数据end if选择行:selectrow()dw_name.selectrow(row,true\false)已选择行:isselected( )dw_name.isselected(用循环语句检查每一行是否被选择li_row)当前行:getrow()dw_name.getrow()删除行:DeleteRow(row)获得字符长度:Len()len(string) 获得指定字符--stringmid('string//为要从获取数据的来源','从第几个字符开始','要获得的字符长度')midw()为有中英双字节输入的时候用的替换指定字符:replace( )replace('string//被替换的','开始的地方','替换的长度','string//要替换的内容')从左边获得指定字符:Left ()left('string\\来源','长度')leftw()为有中英双字节输入的时候用的从右边获得指定字符:Right()right('string\\来源','长度')rightw()为有中英双字节输入的时候用的在一字符中找另一字符的位置:Pos()pos('string\\要从这个字符中寻找','stirng\\这个字符是要寻找的内容',long\\起始位置从第几个字符开始找)在规定的时间内触发某事件idle(60) \\如果60秒没有操作的话就触发application对象的idle事件timer(60) \\每隔60秒就触发一次窗口的timer事件判断是否为空isnull(any) \\为空 not isnull(any)\\不为空 setnull(any)\\设置为空类型转换:String( )要转换类型(被转换的类型)如string(any)还可以定义格式如string(date,'yyyy-mm-dd')滚动页dw_name.scrollpriorpage() \\向前滚动一页dw_name.scrollnextpage() \\向后滚动一页获得数据窗口有多少个列:dw_name.object.datawindow.column.count获得数据窗口的对象描述dw_name.describe(datawindow.table.select) \\获得数据窗口的sql语句dw_name.Describe( "Evaluate( 'LookupDisplay(列名) ', 行数) " ) //获得下拉数据窗口的显示值......获得与数据窗口中列相对应的数据表中的字段名称dbnameinteger li_indexfor li_index = 1 to integer(dw_name.object.datawindow.column.count)messagebox(stirng(li_index),dw_name.describe("#"+string(li_index)+".dbname"))next获得数据窗口的sql语句dw_name.getsqlselect()设置数据窗口的sql语句dw_name.setsqlselect()注:重设sql语句的时候列与类型必须要与原来的一样,where与group by和order by可以不一样实例:ls_oldsql = dw_name.getsqlselect()ls_newsql = left(ls_oldsql,pos(lower(ls_oldsql),'where')) +'NewWhereSql'......dw_name.setsqlselect(ls_newsql)dw_name.retrieve()另存为:.saveas( )dw_name.saveas(名字可含路径,另存为的类型,是否显示列标题)如:dw_name.saveas("g:\1.txt",Text!,false)53.动态数据窗口syntaxfromsqlsqlca.syntaxfromsql(sqlselect一条sql语句,窗口风格,报错信息)创建create()动态创建数据窗口对象:ls_syntax = 动态数据窗口syntaxfromsqldw_name.create(ls_syntax,自定义报错信息)创建非可视系统对象类型:transaction dbtransdbtrans = create transactiondbtrans.dbms = 'odbc'释放destroy由create创建非可视系统对象类型用完以后要及时释放,让内存资源得到更好的使用destroy dbtrans修改数据窗口: modify( )dw_name.modify(string\\"name = '"+Tom+"'") \\更多例子请看pb帮助移动行rowsmove( )dw_name.rowsmove(开始行,结束行,缓冲区,要移动到的另一窗口名,在哪一行前面插入,插入哪个缓冲区)rowsmove还可以在同一数据窗口的不同缓冲区进行移动行如从删除缓冲区移动行到主缓冲区实现恢复功能:dw_name.rowsmove(1,dw_name.deletedcrount(),delete!,dw_name,1,primary!)复制行rowscopy( )--基本用法和移动行差不多dw_name.rowscopy(开始行,结束行,缓冲区,要复制到的另一窗口名,在哪一行前面插入,插入哪个缓冲区)获得数据窗口的状态getitemstatusdw_name.getitemstatus(row\\第几行,哪一列,哪个缓冲区)缓冲区有三种:应该有四种的,不过另一种原始缓冲区不常用primary! delete! filter!状态有四种:datamodified! new! newmodified! notmodified!设置数据窗口状态setitemstatusdw_name.setitemstatus(row\\第几行,哪一列,哪个缓冲区,设置为哪个状态)共享数据:sharedata()CONNECT USING SQLCA;dw_employee.SetTransObject(SQLCA)dw_employee.Retrieve()dw_employee.ShareData(dw_dept)测试是否为有效值:IsDate()isdate(),isnumber()......有效的话返回true功能检测指定的字符串是否包含有效的日期。