pb常用操作技巧.docx

上传人:b****3 文档编号:3746048 上传时间:2022-11-25 格式:DOCX 页数:47 大小:43.50KB
下载 相关 举报
pb常用操作技巧.docx_第1页
第1页 / 共47页
pb常用操作技巧.docx_第2页
第2页 / 共47页
pb常用操作技巧.docx_第3页
第3页 / 共47页
pb常用操作技巧.docx_第4页
第4页 / 共47页
pb常用操作技巧.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

pb常用操作技巧.docx

《pb常用操作技巧.docx》由会员分享,可在线阅读,更多相关《pb常用操作技巧.docx(47页珍藏版)》请在冰豆网上搜索。

pb常用操作技巧.docx

pb常用操作技巧

这是刚毕业时在某一“大”公司使用PB6.5开发联通营帐系统时的笔记,虽然好久没有也许以后也不会再使用pb开发程序了,但这算是我使用过的唯一一个前端专业开发工具,把笔记记录下来,权当作纪念吧,^_^

//PB中标准调用sql语句

ls_sql="selectroad_namefrombb_data_wide_bus_temp_twhereregister_number='"+ls_register_number+"'"

declarecur_getdynamiccursorforsqlsa;

preparesqlsafrom:

ls_sql;

opendynamiccur_get;

fetchcur_getinto:

ls_value;

         ifsqlca.sqlcode<>0then

                 messagebox('操作信息','提取失败!

',exclamation!

         endif

closecur_get;

//PB中标准循环调用sql语句

DECLAREcur_sqlDYNAMICCURSORFORSQLSA;

PREPARESQLSAFROM:

ls_sql;

OPENDYNAMICcur_sql;

dowhilesqlca.sqlcode=0

         FETCHcur_sqlINTO:

ls_register_number,:

ls_complete_note;

         ll_sqlcode=sqlca.sqlcode

         ifll_sqlcode<0then

                 CLOSEcur_sql;

                 af_disconnect()

                 messagebox('错误提示','检索受理编号错误!

',StopSign!

                 return

         elseifll_sqlcode=100then

                 exit

         endif

         ddlb_register_number.additem(trim(ls_register_number+'|'+ls_complete_note))

loop

CLOSEcur_sql;

//窗口open事件通用脚本

//置窗口居中

af_center_window(this)

//连接数据库

af_connect()

//定义变量

dataWindowChilddwc

//获取城市代码下拉列表并取值

dw_city_code.getChild('city_code',dwc)

dwc.setTransObject(sqlca)

dwc.Retrieve(gs_citycode,gi_citylevel)

dw_city_code.setTransObject(sqlca)

dw_city_code.Retrieve()

dw_city_code.setItem(1,'city_code',dwc.getItemString(1,'city_code'))

is_city_code=dw_city_code.getItemString(dw_city_code.getRow(),'city_code')

//获取业务类型下拉列表并取值

dw_service_kind.getChild('service_kind',dwc)

dwc.setTransObject(sqlca)

dwc.Retrieve()

dw_service_kind.setTransObject(sqlca)

dw_service_kind.Retrieve()

dw_service_kind.setItem(1,'service_kind',10)

ii_service_kind=dw_service_kind.getItemNumber(dw_service_kind.getRow(),'service_kind')

//获取申请事项下拉列表并取值

dw_apply_event.getChild('apply_event',dwc)

dwc.setTransObject(sqlca)

dwc.Retrieve(ii_service_kind)

dw_apply_event.setTransObject(sqlca)

dw_apply_event.Retrieve()

dw_apply_event.setItem(1,'apply_event',dwc.getItemNumber(1,'apply_event'))

ii_apply_event=dw_apply_event.getItemNumber(dw_apply_event.getRow(),'apply_event')

//激发查询事件

cb_query.TriggerEvent(clicked!

//断开数据库

af_disconnect()

//查询按钮通用脚本

//连接数据库

af_connect()

//定义变量

dataWindowChilddwc

//dw_1检索数据

dw_1.setTransObject(sqlca)

dw_1.Retrieve(ii_service_kind)

//dw_2检索数据

intli_row,li_row_temp

dw_2.getChild('action',dwc)

dwc.setTransObject(sqlca)

dwc.Retrieve(ii_service_kind)

dw_2.setRowFocusIndicator(hand!

dw_2.setTransObject(sqlca)

li_row_temp=dw_2.Retrieve(ii_apply_event,ii_service_kind,is_city_code)

dw_2.scrollToRow(li_row_temp)

//如果未检索到数据插入一空行,有数据就过滤

stringls_filter

intli_action

ifli_row_temp=0then

         dw_2.insertRow(0)

else

         forli_row=1todw_2.rowCount()

                 li_action=dw_2.getItemNumber(li_row,'action')

                 ls_filter='action<>'+string(li_action)

                 dw_1.setFilter(ls_filter)

                 dw_1.filter()

         next

endif

//断开数据库

af_disconnect()

//增加按钮通用脚本

//变量定义

intli_step,li_action,li_auto_status,li_row

//确认选择要增加的记录

ifdw_1.getSelectedRow(0)=0then

         MessageBox('提示信息','请选择要添加的记录!

',exclamation!

         return

endif

//取出要增加的信息

li_step=dw_2.getItemNumber(dw_2.getRow(),'step')

li_action=dw_1.getItemNumber(dw_1.getSelectedRow(0),'action')

li_auto_status=dw_1.getItemNumber(dw_1.getSelectedRow(0),'auto_status')

//添加信息

li_row=dw_2.insertRow(0)

dw_2.setItem(li_row,'step',li_step)

dw_2.setItem(li_row,'action',li_action)

dw_2.setItem(li_row,'auto_status',li_auto_status)

dw_2.scrollToRow(li_row)

//删除按钮通用脚本

//删除前先确认

IFdw_2.GetRow()=0THEN

         MessageBox('提示信息','请选择要删除的记录!

',exclamation!

         Return

ELSE

         IFMessageBox("提示信息","确实要删除指定的记录?

",Question!

YesNo!

2)=2THENReturn

         dw_2.DeleteRow(dw_2.getRow())

ENDIF

//保存按钮通用脚本

//连接数据库

af_connect()

//定义变量

stringls_city_code,ls_error

intli_service_kind,li_apply_event,li_row,li_step

dataWindowChilddwc

//检测数据是否发生变化

dw_2.AcceptText()

IFdw_2.ModifiedCount()+dw_2.DeletedCount()=0THEN

         MessageBox("操作提示","数据未发生变化,无需保存!

",exclamation!

         return

ENDIF

//检测是否为空或零

dw_2.setSort('stepa')

dw_2.sort()

FORli_row=1TOdw_2.RowCount()

         li_step=dw_2.GetItemNumber(li_row,'step')

         IFIsNull(li_step)ORli_step=0THEN

                 MessageBox('操作提示','步骤不能为空或零,请重新输入!

',exclamation!

                 dw_2.setRow(li_row)

                 Return

         ENDIF

NEXT

//保存

dw_2.SetTransObject(sqlca)        

ifdw_2.update()=1then

         commit;

         messagebox("提示信息","保存成功!

")

         dw_2.ScrollToRow(dw_2.RowCount())

else

         ls_error=sqlca.sqlErrText

         rollback;

         messagebox("提示信息","保存失败!

"+char(13)+ls_error,stopSign!

         return

endif

//断开数据库

af_disconnect()

//打印按钮通用脚本

ifdw_1.rowCount()>0then

         ifPrintSetup()=-1then

         messagebox('提示信息','打印机设置出错!

',Exclamation!

         return

     else

                 ifdw_1.print(true)=1then         //显示可以取消打印的对话框

                         Messagebox('提示信息',"打印成功!

")

                 else

                         Messagebox('提示信息',"打印失败!

",stopSign!

                 endif

         endif

else

         Messagebox('提示信息',"没有数据可以打印,请先查询数据!

",exclamation!

         return

endif

//导出按钮通用脚本

ifdw_1.rowcount()<=0then

         messageBox('提示信息','没有数据可以导出,请先查询!

',exclamation!

         return

endif

ifdw_1.SaveAS('',text!

true)=1then

         messageBox('提示信息','导出成功!

')

endif

//导入按钮通用脚本

//变量定义

stringls_pathfile,ls_file,ls_title,ls_ext,ls_filter

int     li_pos,li_fileid

long    ll_buffer

//变量赋值

ls_title="请选择数据文件"

ls_ext="txt"

ls_filter="文本文件(*.txt),*.txt,全部文件(*.*),*.*"

li_fileid=GetFileOpenName(ls_title,ls_pathfile,ls_file,ls_ext,ls_filter)

if(li_fileid=0orls_file="")then

         return

endif

sle_file_name.text=ls_pathfile

cb_ok.enabled=true

//退出按钮通用脚本

close(parent)或closeWithReturn(parent,returnvalue)

//调用过程通用脚本

ifdw_wp.rowcount()<=0thenreturn

//变量定义

string          ls_sql,ls_err_info

string         ls_register_number,ls_accept_city,ls_department,ls_oper_person

integer         li_err_code,li_apply_event

//变量赋值

ls_register_number=dw_wp.getitemstring(1,'register_number')

ls_accept_city=gs_citycode

li_apply_event=dw_wp.getitemnumber(1,'apply_event')

ls_department=gl_dealerid

ls_oper_person=gs_workerid

//连接数据库

af_connect()

//调用配号撤单过程

ls_sql="executebb_pstn_assign_no_repeal_p(?

?

?

?

?

)"

declareproc_assign_no_repealdynamiccursorforsqlsa;

preparesqlsafrom:

ls_sql;

opendynamicproc_assign_no_repealusing:

ls_register_number,:

ls_accept_city,:

li_apply_event,:

ls_department,:

ls_oper_person;

ifsqlca.sqlcode=-1then        

         ls_err_info=sqlca.sqlErrText

         closeproc_assign_no_repeal;

         Rollback;        

         Messagebox("错误信息1","执行异常!

"+ls_err_info,stopSign!

         af_disconnect()

         return

Endif

fetchproc_assign_no_repealinto:

li_err_code,:

ls_err_info;

ifli_err_code<0then

         closeproc_assign_no_repeal;

         Rollback;        

         Messagebox("错误信息2","执行异常!

"+ls_err_info,stopSign!

         af_disconnect()

         return

endif

closeproc_assign_no_repeal;

commit;

//断开数据库

af_disconnect()

//撤单成功后打印工单

dw_wp.print()

//PB某些控件的中文显示问题

假如PB的ListView不能正常显示中文,则应该将ListView的FontCharSet属性设置成其他类型。

ListView所在的对象Export成源码。

在源码中找到ListView定义部分,将FontCharSet属性该成

DefaultCharSet!

如果PB的其他控件也发生相应的现象时,同样调整一下它的FontCharSet属性。

一般

来说对于简体中文字体,在中文WINDOWS环境中应该设置成DefaultCharSet!

对显示中文有问题的控件

将它的FontChatSet属性强制设置成DefaultCharSet!

应该没有问题。

或者改变字体!

!

!

//PB6.5运行时动态连接库(RuntimeLibrary)

PBVM60.DLL(PowerBuilder虚拟机)(必需)

PBDWE60.DLL(DataWindow引擎)(可选)

PBRTC60.DLL(RichTextControl)(可选)

PBTRA60.DLL(DLLusedfortracingdbcalls)(可选)

与所需连接的数据库的直连接口(NativeDriver)或ODBC接口(ODBCDriver)

PBSYC60.DLL(连接Sybase的直连接口)

PBO7360.DLL(连接Oracle7.3的直连接口)

所需连接的数据库的Client端(如Sybase的OpenClient,Oracle的SQLNet)

以上是Sybase公司的建议。

我的经验是,编译好的程序必须有pbdwe60.dll和pbvm60.dll才行。

另外,如果使用ODBC联结数据库则还需pbodb60.dll,如果使用的专用接口,则需对应数据库的DLL,

如Oracle7.3用PBO7360.DLL,Sybase用PBSYC60.DLL

//pb6.5升级到6.5.1后exe文件执行可能出现问题

重新拷贝\Sybase\Shared下的pbvm60.dll(3.24M)代替未升级时pbvm60.dll(3.25M)就ok了!

//几个常用颜色

红:

rgb(255,0,0)                 醒目或改变作用

蓝:

rgb(0,0,255)                 注意作用

深绿:

rgb(0,128,0)         提示作用

//SQLAnyWhere安装方法:

在安装PB65时的自定义安装中组件ODBCDatabasesDrives里的SybaseSQLanywhere5.5.04,这只是

安装了PB组件的ODBC驱动程序,并未安装SQLANYWHERE,如果你需要使用SQLAnywhere的管理工具,你

还得进行如下的操作:

在正版PB6.5的第六张盘里,有一目录名是SQLANY5504,这里面就是SQLANYWHERE

的安装盘了,运行SETUP即可。

如果是盗版,那只好靠你自已去找了。

在安装目录下有一个SETUP.BMP,

上面有SQLANHWERE字样。

//很多书上讲到FILE菜单中点CREATEDATABASE,怎么能让这个选项出来?

在pb第六张光碟(或使用D版第二张碟\6\sqlany5504),进入sqlany5504目录,安装sqlanywhere5.5,

默认安装路径为:

C:

\ProgramFiles\Sybase\SQLAnywhere5.0\win32,安装完成以后,修改

autoexec.bat,增加一行,用于将sqlanywhere的文件放到系统搜索路径中:

path%PATH%;C:

\Progra~1\Sybase\SQLAny~1.0\win32

这样重新启动后,你就可以看到File菜单下多出了CreateDatabase这一项。

特别说明:

在...\win32此目录下有一个很重要的文件,dbtl50t.dll,你可以做一个实验,进入

PBDataBase画板(不需要退出),然后切换到文件管理器中将dbtl50t.dll文件给改名,再切换回PB中,

点File菜单,你将会发现CreateDatabase这一项又消失了。

将dbtl50t.dll改名回来,回到PB中再点此

File菜单,一切又恢复正常。

不过没有CreateDataBase这一项都不是很重要,您还可以使用

SybaseCentral来管理数据库,它才是Sqlanywhere数据库的全面管理工具,可以建存贮过程,触发器。

(在"开始"->"程序"->"Sybase"->"Sqlanywhere5.0"下面,在硬盘中的执行文件名是scview.exe).

//不安装Oracle客户连接Oracle8的方法

请将以下文件拷贝到运行文件所在目录

一、ODBC动态库:

ctl3d32.dllmsvcrt40.dllodbc16gt.dllodbc32.dllodbc32gt.dllodbccp32.dllodbccr32.dllodbcint.dll

二、建立EXTRA子目录,将MSVCRT.DLL文件拷贝到该子目录下

EXTRA\MSVCRT.DLL

三、ORACLE动态库及配置文件

Tnsnames.oraCORE35O.DLLNASNSNT.DLLNAUNTSNT.DLLNCRNT.DLLNlnt.dllNLSRTL32.DLLNnfdnt.dll

NNFNNT.DLLNSNT.DLLNTNT.DLLNTTNT.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

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

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