随手笔记
弹出提示窗口时,点击了'取消'按钮 if MessageBox("提示","是否修改船期日期?",question!,yesno!) = 2 then return
datawindow中设置可以输入 d_row=dw_1.insertrow(0) dw_1.scrolltorow(d_row)
船期确认中'保存'事件
if idw_1.update() = 1 then
if g_co_no = '002' then
string ls_sql
ls_sql = "sp_invoice_update_unite '" + ls_inv_no + "'"
execute immediate :ls_sql;
if sqlca.sqlcode <> 0 then
rollback;
messagebox("提示", "更新分票错误!")
return
end if
end if
commit using sqlca;
if uf_sd001_send_to_sap(ls_inv_no,4) = 0 then
messagebox("提示","修改成功!")
end if
closewithreturn(parent ,'1')
else
ls_sqlerrtext = sqlca.sqlerrtext
rollback using sqlca;
messagebox("提示","保存失败:"+ls_sqlerrtext)
end if
PB中的缓冲区 例如 dw_1.SetItemStatus(d_row, 0, Primary!, NotModified!)
UpperBound (Obtains the upper bound of a dimension of an array.)
pos (Finds one string within another string.)返回的是一个long类型, Pos(string1,string2{,start} ) 返回string1中从start开始查询的包含string2的位置,位置是从start开始查的,但是是实际的位置数.例如:ll_num = pos("abdcdefga","a",5) ll_num得到的是9
mid (Obtains a specified number of characters from a specified position in a string)返回的是一个string类型. Mid(string,start{,length} ),返回从star开始至字符串最后一个
len(string) 获取一个字符串的长度,返回的是一个long类型(在PB9.0中的汉字长度为2 len('你') = 2 但是 在PB12.0中汉字长度为1 len('你') = 1)
Left(string,n)返回的是一个string类型字符串,是从第一个字符开始返回n个字符
Right(string,n)返回的是一个string类型字符串,是从最后一个字符开始往前计算返回n个字符
Mod(x,y)得到x/y的余数
Round(x,n)把x置为含有n个小数位的decimal数值,例如:Round(9.624, 2) 返回的是9.62
IsNumber(string)返回一个Boolean类型数据,如果string是一个数值的,则是true,否则是false
致富文本框为空
string ls_null
setnull(ls_null)
mle_1.text=ls_null
致datawindow为空 dw_1.retrieve("Nothing")
实例一个UpDate()函数:
rc = dw_1.update()
if rc > 0 then
commit using sqlca;
if sqlca.sqlcode<0 then
messagebox("数据库出错","错误号="+string(sqlca.sqldbcode) + "原因为:" + sqlca.sqlerrtext)
halt close
end if
else
rollback using sqlca;
if sqlca.SQLCode < 0 then
messagebox("数据库出错","错误号=" + string(sqlca.SQLdbcode) + "原因为:" + sqlca.sqlerrtext)
halt close
end if
end if
continue的用法
integer A=0, B=0, Count
FOR Count = 1 to 100
A = A + 1
IF Count > 15 THEN CONTINUE
B = B + 1
NEXT
// Upon completion, a=100 and b=15.
DaysAfter(date1,date2)函数的用法:
This statement returns 4:
DaysAfter(2002-12-20, 2002-12-24)
This statement returns -4:
DaysAfter(2002-12-24, 2002-12-20)
This statement returns 0:
DaysAfter(2003-12-24, 2003-12-24)
This statement returns 5:
DaysAfter(2003-12-29, 2004-01-03)
Move(x,y)函数的使用方法:
objectname.Move(x,y) 相对于父类,把位置移动到了(x,y)处 . 例如:gb_box1.Move(150,200)
拼接paint_no的最小值,'_'和最大值的第五个字母之后的数据作为查询路径
string ls_path
choose case dwo.name
case 'b_open'
if DaysAfter(2017-05-17,date(getitemdatetime(getrow(),'pac_date')))<0 or isnull(getitemdatetime(getrow(),'pac_date')) then
ls_path = "\\s20\Bestway\Packaging(包装)\Final Packaging Assets(最终印刷品资料)\JPG\Customization(客专JPG)\不干胶\"+getitemstring(getrow(), 'guidang_no')
else
if dw_2.rowcount() = 1 then
ls_path = "\\S20\bz\生产交接资料\不干胶和贴签\"+getitemstring(getrow(), 'paint_no')
end if
if dw_2.rowcount()>1 then
ls_path = "\\S20\bz\生产交接资料\不干胶和贴签\"+getitemstring(getrow(),'compute_min')+'_'+mid(getitemstring(getrow(),'compute_max'),5)
end if
end if
// ls_path = "\\s20\Bestway\Packaging(包装)\Final Packaging Assets(最终印刷品资料)\JPG\Customization(客专JPG)\不干胶\"+getitemstring(getrow(), 'guidang_no')
// ls_path = "\\s20\BZ\客户包装JPG\不干胶\"+getitemstring(getrow(), 'guidang_no')
// ls_path = "\\s20\BZ\不干胶汇总(Stickers Collection)\" + mid(getitemstring(getrow(), 'guidang_no'), 7,4) + "年不干胶\" +getitemstring(getrow(), 'guidang_no')
if fileexists(ls_path) = false then
messagebox("提示", "文件夹[" + getitemstring(getrow(), 'guidang_no') + "]不存在")
return
else
run("explorer " + ls_path + "\")
end if
end choose
isvalid的使用方法:
if not isvalid(message.powerobjectparm) then
messagebox("提示", "无效对象调用!")
close(this)
return
typeof的使用方法:(多使用于控件类型之中)
if typeof(message.powerobjectparm) <> DataWindow! then
messagebox("提示", "调用的对象不是DataWindow!")
close(this)
return
end if
end if
classname的使用方法: (多使用于变量之中)
string stringval
double dblval
date dateval
any anyval
anyval = myoleobject.application.cells[1,1].value
CHOOSE CASE ClassName(anyval)
CASE "string"
stringval = anyval
CASE "double"
dblval = anyval
CASE "datetime"
dateval = Date(anyval)
END CHOOSE
getactivesheet()的使用方法
mdiframewindow.GetActiveSheet( ) 返回的是一个MDI!类型的窗口.
Move的使用方法:(移动其坐标位置)
This statement changes the X and Y properties ofgb_box1to 150 and 200, respectively, and movesgb_box1to the new location:
gb_box1.Move(150, 200)
This statement moves the picturep_Train2next to the picturep_Train1:
P_Train2.Move(P_Train1.X + P_Train1.Width, &
P_Train1.Y)
//ldt_sap_check_date = today()//此时间为电脑上的时间
//invoice1.sap_check_date = getdate()//此时间为系统上的时间
exit退出循环
return退出程序
setpointer的使用方法
int i
pointer oldpointer
if dw_1.rowcount() <= 0 then return
oldpointer = SetPointer(HourGlass!)
if this.checked then
for i = 1 to dw_1.rowcount()
dw_1.setitem(i,'ck','1')
next
else
for i = 1 to dw_1.rowcount()
dw_1.setitem(i,'ck','0')
next
end if
setpointer(oldpointer)
//以下代码把焦点定位到第5行第3个字段:
dw_1.setfocus()//焦点切换到数据库窗口
dw_1.setrow(5)//切换当前行为第5行
dw_1.selectrow(0,false)//取消高亮显示
dw_1.selectrow(5,true)//高亮显示第5行
dw_1.setcolumn(3)//焦点移动到第3个字段
move(x,y)此函数修改的是控件的x,y坐标
resize(width,height)此函数修改的是控件的宽与高
match函数
SQL中的创建触发器--触发器例子
int value
value = GetFileSaveName("选择文件存放位置", "c:\", w_reg_main.inv_no+".XLS", "XLS", "Excel文件 (*.XLS),*.XLS")
if value<>1 then
return 0
end if
lds_detail.saveas(ls_path, excel!, true)
模板导出
string ls_path, ls_file
int li_rc
ls_path = '快递导入模板'
li_rc = GetFileSaveName ( "Select File", ls_path, ls_file, "XLS", "Excel (*.xls),*.xls" , "C:\", 32770)
IF li_rc <> 1 Then return
integer li_FileNum
li_FileNum = FileCopy ("\\s03\共享文件\W.信息中心\个人文件夹\王灼安\BW_Express9快递\Bmp\快递导入模板.XLS" , ls_path, false)
if li_FileNum = -1 then
messagebox("提示", "复制文件错误!")
return
end if
Find
ls_key_id = dw_5.getitemstring(getrow(), 'key_id')
ll_row = dw_3.find("key_id='"+ls_key_id+"'", 1, dw_3.rowcount())
富文本框中去掉回车~n
string ls_mle_1, ls_string_before
integer li_pos
ls_mle_1 = trim(mle_1.text)
li_pos = pos(ls_mle_1, '~n')
do while li_pos > 0
ls_string_before = mid(ls_mle_1, li_pos + 1)
ls_mle_1 = trim(ls_string_before)
SetNull(li_pos)
li_pos = Pos(ls_mle_1, '~n')
loop
if isnull(trim(ls_mle_1)) or trim(ls_mle_1) = '' then
MessageBox('提示', '您输入的内容为空')
return
end if
点击回车跳转焦点Send(handle,message#,lowword,long)
错误:
解答:这种错误查看下文件夹中是否包含代码中所描述的文件夹
dddw:可指 edit中的 DropDownDW 类型下的DataWindow 例如 dw_1.modify("mer_no.dddw.allowedit=no")