1、1 PB 函数中游标的使用列:string ls_bjflddlb_1.reset() /清空下拉列表框内容DECLARE cur_type CURSOR FOR/定义游标select NEIRONGfrom xt_gycs /表where name=*/条件using sqlca; /使用默认数据对象OPEN cur_type; /打开游标FETCH cur_type INTO :ls_bjfl;/将游标的值赋给变量do while sqlca.sqlcode=0 /判断游标执行是否成功(循环的意义是取完游标中的值)ddlb_1.additem(ls_bjfl);/如果成功,那么将值增加到下
2、拉列表框中FETCH cur_type INTO :ls_bjfl;/继续取游标值loopclose cur_type;/关闭游标在使用游标的时候注意每次从游标中只能取一个值赋给变量,游标中的值是一个数组型的即游标里可能存在多个不同的值。2 PB 中提交数据的两种方式和判断方式1删除时候直接用:delete from 表 where guid(行)=:ls_guidk(变量)using sqlca; 那么提交的时候的判断用:if sqlca.sqlcode=0 then commit using sqlca;/提交数据elsemessagebox(“提示!“,“ 数据库更新失败!失败原因:“+
3、gtrans_w.sqlerrtext)rollback using sqlca;returnend if 2用 data window 删除: dw_name.deleterow(row) /row=0 删除当前行(删除成功返回 1,错误-1, 为空返回null)提交的时候的判断用:if dw_name.update()=1 thencommit using sqlca;/提交数据elsemessagebox(“提示!“,“ 数据库更新失败!失败原因:“+gtrans_w.sqlerrtext)rollback using sqlca;returnend if 总结:只要是对数据库直接操作的
4、时候就用 sqlca(事务对象 ).sqlcode=0 来进行判断提交,如: delete,insert,update 等都是。只要是对数据窗口进行的操作都用 dw_name.update()=1 来进行提交,如:deleterow(),insertrow(),setitem()等都是。3 trim 删除字符串首部和尾部的空格eg: ls_name=trim(sle_1.text)4 拆分字符串操作lenw 返回字符总个数,posw 返回某字符在 ls_guid(变量)中的第一次出现的位置(返回值是 long 型数字) ,leftw(字符,返回左边 N 个字符(返回值是一个字符串) )righ
5、tw(字符,返回右边 N 个字符)列 ABCDE POSW(ABCDE,CD)=4下面举得这个列子是个很有用的拆字符串的方法:string ls_newstr /定义数组int li_log,li_i,li_len li_len=lenw(*) /返回字符的个数(在此返回 1)li_log = posw(ls_guid,*)/返回*在字符串 ls_guid 中的位置(long 型数值)li_i = 1 /数组取值从 1 开始if li_log 0 /条件为 true 执行下面代码ls_newstrli_i = leftw(ls_guid,li_log - li_len) ls_guid= ri
6、ghtw(ls_guid,lenw(ls_guid) - li_log)li_i+li_log = posw(ls_guid,*)if li_log 插入行 InsertRow( )InsertRow()函数在数据窗口的主缓冲区中插入一个空行,其语法格式为:dwcontrol.InsertRow ( row )其中:row 是个长整数( long 型) ,它指定插入行的插入位置。功能:在数据窗口的主缓冲区中插入一个空行例如,我们想在数据窗口 dw_1 中插入一行,并让该行成为数据窗口的第 10 行,那么语句:dw_1.InsertRow ( 10 )即能完成这个任务。row 等于 0 时含义特
7、殊,它表示在主缓冲区最后一行后面插入一行。InsertRow( )函数执行成功时,返回一个 long 型值指示插入行的行号,执行失败时返回 -1。2删除行 DeleteRow( )DeleteRow()函数在数据窗口的主缓冲区(即显示在用户面前的数据中)中删除一行,语法格式为: 语法格式:dwcontrol.DeleteRow ( row )其中: row 为要删除行的行号, row 等于 0 时删除当前行。功能:删除数据窗口主缓冲区中一行记录。DeleteRow ()函数执行成功时返回 1,失败时返回-1。例如: dw_1.DeleteRow ( 10)删除数据窗口控件 dw_1 中的第 1
8、0 行。DeleteRow ()函数执行成功时返回 1,失败时返回-1 。11对数据窗口的行号操作1得到当前行号 GetRow ( )GetRow ( )函数返回当前行的行号。语法格式为:dwcontrol.GetRow ( )功能:得到当前行的行号。该函数返回一个 long 型值,表示当前行号。如果没有选中任一行,则返回 0,出错时返回-1。2设置某行为当前行 SetRow ( )SetRow(row)函数把参数 row 指定的行设置成当前行。语法格式为: dwcontrol.SetRow ( row )功能:把参数 row 指定的行设置成当前行。设置成功时该函数返回 1,否则返回-1。如果
9、 row 的值小于 1 或大于数据窗口中的总行数,则 SetRow ( )函数执行失败。 SetRow ( )函数可能触发下述事件: ItemChangedItemErrorItemFocusChangedRowFocusChanged3得到当前数据窗口中的记录行数 RowCount( )语法格式:dwcontrol. RowCount( )例:按钮“下一条”可以改变数据窗口的当前行long ll_row, ll_rsmdw_1.SetRowFocusIndicator(Hand!) / 设置行光标指示为手。Ll_rsm = dw_1.RowCount( )Ll_row = dw_1.GetR
10、ow( )if ll_row = ll_rsm thenll_row = 1elsell_row +end ifdw_1.SetRow( )注:为了清楚显示,可在窗口 Open 事件中加入dw_1.SetRowFocusIndicator(Hand!) /设置行光标指示为手。12 对数据窗口的列号操作1得到当前列号 GetColumn ( )GetColumn ( )返回当前列号。语法格式为:dwcontrol.GetColumn ( )该函数返回一个 integer 型值,表示当前列号。返回值为 0 表示无当前列,返回值为-1 表示操作失败。2设置某列为当前列 SetColumn ( )SetColumn ( )把参数 column 指定的列设置为当前列。语法格式为: dwcontrol.SetColumn ( column )设置成功时该函数返回 1,否则返回-1。如果 column 的值小于 1 或大于数据窗口中的总列数,则 SetColumn ( )函数执行失败。参数 column 可以是个列号(integer) 、也可以是列名(String ) 。