ImageVerifierCode 换一换
格式:DOCX , 页数:150 ,大小:97.27KB ,
资源ID:9759022      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9759022.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PB开发笔记.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

PB开发笔记.docx

1、PB开发笔记/通过代码更改数据窗口对象的方法string error_syntaxfromSQL, error_createstring new_sql, new_syntaxnew_sql = SELECT emp_data.emp_id,emp_data.emp_name from emp_data & + WHERE emp_data.emp_salary45000new_syntax = SQLCA.SyntaxFromSQL(new_sql,Style(Type=Form), error_syntaxfromSQL)IF Len(error_syntaxfromSQL) 0 THEN

2、 / Display errors mle_sfs.Text = error_syntaxfromSQLELSE / Generate new DataWindow dw_new.Create(new_syntax, error_create) IF Len(error_create) 0 THEN mle_create.Text = error_create END IFEND IFdw_new.SetTransObject(SQLCA)dw_new.Retrieve()/打开动态窗口的方法:window newarray3string win3int iwin1 = w_employeew

3、in2 = w_customerwin3 = w_salesfor i = 1 to 3 Open(newarrayi, wini)next/显示一个与Windows操作系统风格一致的About对话框。 首先声明如下外部函数: function int ShellAboutA(ulong al_hWnd, string as_szApp, string as_szOtherStuff, ulong hIcon) library shell32 ShellAboutA(handle(parent),关于.#摆渡人工作室,欢迎光临摆渡人工作室,0) /如何将COLUMN的显示风格在EDIT、DDD

4、W、DDLB之间相互切换:(1)切换成DDDW:dw_1.Modify(#1.dddw.Name=dddw_jg)dw_1.Modify(#1.dddw.DisplayColumn=name_jg)dw_1.Modify(#1.dddw.DataColumn=id_jg)(2)切换成DDLB:dw_1.Modify(#1.ddlb.case=any)dw_1.Object.#1.Values =redt1/whitet2(3)切换成EDIT:dw_1.Modify(#1.edit.case=any)dw_1.Modify(#1.edit.AutoSelect=Yes)(4)获取当前风格:dw_

5、1.Describe(#1.Edit.Style)(5)如果还不行,可能得要如下操作:dw_1.Modify(#1.dddw.Name=)一下;/在dw_1中选定想要打印的几条记录long ll_posdataStore lds_dslds_ds = create dataStorelds_ds.dataObject = dw_1.dataObjectfor ll_pos = 1 to dw_1.rowCount() if dw_1.IsSelected(ll_pos) then dw_1.RowsCopy(ll_pos,ll_pos,Primary!,lds_ds,lds_ds.rowCou

6、nt()+1,Primary!) end ifnextlds_ds.print()/实现在循环时可以通过点击按钮终止循环 integer n /sb_interrupt 是共享变量 sb_interrupt=false for n=1 to 3000 yield() if sb_interrupt then /sb_interrupt的值在取消”按纽的Clicked事件中修改为true MessageBox(我不干了,你真坏!) sb_interrupt=false exit else /其它处理,在单行编辑器中显示当前n值 sle_1.text = string(n) end if next

7、 /SQL语句调用规范INTEGER li_customer_id = 1STRING ls_city_code = 501PREPARE SQLSA FROM DELETE bb_customer_info_t WHERE city_code =? AND customer_id = ? ;EXECUTE SQLSA USING :ls_city_code,:li_customer_id;/通过modify函数来同时修改多个表1、新建一个数据窗口d_grid_dep_emp,它的Select语句为SELECT department.dept_id, department.dept_name,

8、employee.emp_id, employee.emp_fname,employee.emp_lnameFROM department, employeeWHERE employee.dept_id = department.dept_id2、设置数据窗口d_grid_dep_emp的属性,将列的taborder改为非0值;并点击菜单RowsUpdate Properties,设置此数据窗口Allow Updates,Table to Update设为department,Updateable Columns为department.dept_id,department.dept_name。

9、3、在窗口中更新数据窗口按钮的clicked事件编写脚本:long ll_rtn/ 修改Department表(Department表在第2步已设置为可更新)ll_rtn = dw_1.update(true, false)If ll_rtn = 1 then /关闭对Department表的修改 dw_1.Modify(department_dept_name.Update = No) dw_1.Modify(department_dept_id.Update = No) dw_1.Modify(department_dept_id.Key = No) /设置Employee表成为新的可修改

10、表 dw_1.Modify(DataWindow.Table.UpdateTable = employee) dw_1.Modify(employee_emp_id.Update = Yes) dw_1.Modify(employee_emp_fname.Update = Yes) dw_1.Modify(employee_emp_lname.Update = Yes) dw_1.Modify(employee_emp_id.Key = Yes) /修改Employee表 ll_rtn = dw_1.Update() IF ll_rtn = 1 THEN COMMIT USING SQLCA;

11、 dw_1.retrieve() messagebox(提示信息,更新成功!) ELSE ROLLBACK USING SQLCA; MessageBox(提示信息, 更新失败!) END IF /重置修改标志 dw_1.Modify(department_dept_name.Update = Yes) dw_1.Modify(department_dept_id.Update = Yes) dw_1.Modify(department_dept_id.Key = Yes) dw_1.Modify(DataWindow.Table.UpdateTable = department) dw_1.

12、Modify(employee_emp_id.Update = No) dw_1.Modify(employee_emp_fname.Update = No) dw_1.Modify(employee_emp_lname.Update = No) dw_1.Modify(employee_emp_id.Key = No)ELSE ROLLBACK USING SQLCA; MessageBox(提示信息, 更新失败!)END IF /可以将以上功能作成一个函数,在必要的时候调用即可。/单击编辑框选中其中内容getfocus事件中书写代码:this.selecttext(1,len(this.t

13、ext)。保存后运行,却得不到我们想要的效果。想到了一个另类办法:以pbm_bnclicked为事件ID,创建单行编辑框的自定义事件ue_clicked,代码是:this.selecttext(1,len(this.text),getfocus事件的代码改为:This.Post Event ue_clicked()。保存后运行,效果出来了!/怎样得到字符串中汉字的个数 For i = 1 to Len(aString) ls_ch = Mid(aString,i,1) If Asc(ls_ch) = 128 then /是汉字 li_num+ i = i+1 End if Next/最后,li

14、_num就是汉字的个数了/DW支持双击标题进行排序String ls_old_sort,ls_column,ls_name,ls_criteriaChar lc_sortIF Right(dwo.Name,2) = _t THEN /取得是否是列标题名 ls_column = LEFT(dwo.Name, LEN(String(dwo.Name) - 2) ls_old_sort = this.Describe(Datawindow.Table.sort) IF ls_column = LEFT(ls_old_sort,LEN(ls_old_sort) - 2) THEN lc_sort =

15、RIGHT(ls_old_sort,1) IF lc_sort = A THEN lc_sort = D ELSE lc_sort = A END IF this.SetSort(ls_column + + lc_sort) ELSE ls_criteria = ls_column + A this.SetSort(ls_criteria) END IF this.Sort()END IF/DW支持单击按Ctrl或Shift进行多选int il_last_row /il_last_row为实例变量,记录上次单击的行int li_current_row /当前单击行int li_row /中间变

16、量/未选择就返回if row = 0 then returnelse li_current_row = rowend ifif keydown(keyshift!) then /按下SHIFT键 if il_last_row = 0 then this.selectRow(row,true) il_last_row = li_current_row else this.selectRow(0,false) if li_current_row il_last_row then for li_row = il_last_row to li_current_row this.selectrow(li

17、_row,true) end for else for li_row = il_last_row to li_current_row step -1 this.selectrow(li_row,true) end for end if end ifelse /未按下SHIFT键 il_last_row = li_current_row if keydown(keycontrol!) then /按下CTRL键 if this.isSelected(li_current_row) then this.selectrow(li_current_row,false) else this.select

18、row(li_current_row,true) end if else /无CTRL键或SHIFT键按下 this.selectrow(0,false) this.selectrow(li_current_row,true) end ifend if/改变DW的查询条件语句string ls_select,ls_filterls_select = dw_1.getSqlSelect()ls_select = mid(ls_select,1,pos(upper(ls_select),FROM )+30)ls_filter=WHERE service_kind= + vi_service_kin

19、d + ORDER BY FEE_ID ASC ls_select = ls_select + ls_filterdw_1.Reset()dw_1.SetTransObject(SQLCA)dw_1.SetSQLSelect(ls_select)dw_1.Retrieve()/数据窗口的closeQuery事件:提示保存数据dw_1.AcceptText()IF dw_1.ModifiedCount() + dw_1.DeletedCount() 0 THEN CHOOSE CASE MessageBox(操作提示,数据已经发生变化,是否保存?,Question!,YesNoCancel!,1

20、) CASE 1 cb_save.TriggerEvent(clicked!) CASE 2 Return 0 /不做任何操作直接关闭窗口 CASE 3 Return 1 /不会运行Close Event,维持原来的情况 END CHOOSEEND IF/提示:请选择要删除的记录if dw_2.GetSelectedRow(0)= 0 then MessageBox(提示信息,请选择要删除的记录!) returnend if/按某字段进行排序IF dwo.name = fee_id_t THEN this.setSort(fee_id a) this.sort()elseif dwo.name

21、 = fee_position_t then this.setsort(fee_position a, fee_id a) this.sort()END IF/控制DATAWINDOW里每页显示的行数1、在Datawindow中增加一个计算域,起名为:ceil_page,此计算域必须放在Detail段中,Expression中输入 ceiling(getrow()/25) 25表示每页打印25行,也可以是一个参数。2、分组,选择菜单RowsCreate Group,选择ceil_page按ceil_page分组,并选中New Page On Group Break(意思是新组开始时换页)。3、

22、将此计算域设为隐藏(在属性页中的expression页中在visible属性中写0)。4、补空行:在窗口的open事件中写如下代码: long li_count,li_i li_count=dw_1.retrieve() if mod(li_count,25)0 then for li_i=1 to 25 - mod(li_count,25) dw_1.insertrow(0) next end if/如何实现数据窗口数据的自动折行1) 在DataWindow Painter中打开此DataWindow对象。2) 在需设定自动折行的列上双击鼠标, 弹开此列的属性窗口。3) 选择Position

23、标签, 选中Autosize Height 多选框。4) 选择Edit标签, 不选中Auto Horz Scroll多选框。5) 单击OK按钮, 保存所做的修改。6) 点中Detail Band (即写有Detail的灰色长带), 单击鼠标右键, 选择 Properties. 菜单项。7) 选中Autosize Height多选框。8) 单击OK按钮, 保存所做的修改。9) 保存此DataWindow。注意:连在一起的汉字(中间没有标点或空格分隔), 系统将认为是一个单词, 不会自动进行折行, 英文也是如此DW窗口折行如果有汉字的话就必需中间加空格才会折行,否则怎样设置都不行。例如你如果想在第

24、20位折行,就先判断第20位是否是个汉字,如不是就在第20位后加空格,如果是汉字就在第19位加空格。判断是否是汉字可以用它的ASCII码是否大于127来判断。 /按条件对某行数据进行颜色区分case(cj when is = 90 then rgb(255,0,0) when is 60 then rgb(0,255,0) else rgb(0,0,255)/PB中同时连接多个数据库,如连接SQLServer2000和Oracle8 string ls_startupfile ls_startupfile=hisini.inisqlca.DBMS = ProfileString(ls_star

25、tupfile, database, dbms, ) sqlca.database = ProfileString(ls_startupfile, database, database, ) sqlca.userid = ProfileString(ls_startupfile, database, userid, ) sqlca.dbpass = ProfileString(ls_startupfile, database, dbpass, ) sqlca.logid = ProfileString(ls_startupfile, database, logid, ) sqlca.logpass = ProfileString(ls_startupfile, database, LogPassWord, ) sqlca.servername

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1