powerbuilder编程简单入门(个人总结)(优选.)_第1页
powerbuilder编程简单入门(个人总结)(优选.)_第2页
powerbuilder编程简单入门(个人总结)(优选.)_第3页
powerbuilder编程简单入门(个人总结)(优选.)_第4页
powerbuilder编程简单入门(个人总结)(优选.)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品精品word.#/15最新文件仅供参考已改成word文本 方便更改一种简单的powerbuilderlO数据库编程介绍1、需求分析与数据库建立进行需求分析(需求分析文档),确定数据关系,建立各种数据表,建立数据库(Access),设置ODBC数据源(控制面板->管理工具->数据源ODBC->“用户DSN”菜单下点“添加”3选相应的数据源驱动程序,如果用Access2003建立的,则选第三项“DriverdoMicrosoftAccess(*.mdb),然后点击“完成”->输入数据源名,如mydata,然后点击“选择”按钮选择建好的数据库,最后点“确定”,如下图所示)2、界面设计(功能界面、重要数据表维护界面)界面设计主要分为几个部分(1)按照管理系统所需的功能设计界面。首先画出所有可能的业务流程(数据的各种可能输入、修改、删除业务,数据的输出、显示业务)(2)按照需要维护的表设计界面(往往给最高权限管理员直接修改数据用)3、开始程序编写⑴新建一个workspace(new->workspace->workspace)⑵在workspace下建立一个目标(new->Target->application),可取名frame在目标下建一个主窗口可取名w_main,窗体名一般以w_开头(new->PBObject->Window),将其WindowType设为“mdihelp!”为主窗口建一个主菜单可取名m_frame,菜单名一般以m_开头(new->PBObject->Menu)(5)程序中设置ODBODBC点击…“按钮,选中“ODBODBC”项,然后单击右边“New”按钮,弹出如下对话框,设置ProfileName和DataSource,如图所示。

(6)建立配置文件配置文件取名“config.ini",内容如下:[MyDB]DBMS=ODBCAutoCommit=FalseDBParm=ConnectString='DSN=mydata;UID=;PWD='(7)自动连接数据库与退出程序关闭数据库的编写首先建立GlobalVariables如下:stringgs_userid,gs_username //登录用户标识、用户姓名stringgs_root_path,gs_ini_path //应用路径和主配置文件路径其次申明GlobalExternalFunctions如下:FUNCTIONintGetComputerNameA(refstringcomputername,reflongsize)LIBRARY"KERNEL32.DLL"aliasfor"GetComputerNameA;Ansi"FUNCTIONlongGetCurrentDirectoryA(longnBufferLength,REFstringszBuffer)LIBRARY"KERNEL32.DLL"aliasfor"GetCurrentDirectoryA;Ansi"FUNCTIONlongSetCurrentDirectoryA(stringszPathName)LIBRARY"KERNEL32.DLL"aliasfor"SetCurrentDirectoryA;Ansi"//endprototypes在程序的总入口(进入"+’添「汨怔")Open事件中写入以下代码://Profilemoneyandfriendsstringls_1//设置应用根目录gs_root_path=space(255)GetCurrentDirectoryA(255,gs_root_path)ifright(gs_root_path,1)='\'thengs_root_path=left(gs_root_path,len(gs_root_path)-1)endif//设置配置文件路径gs_ini_path=gs_root_path+"\config.ini"IFnotFileExists(gs_ini_path)THENMessageBox("找不到配置文件"+gs_ini_path,"系统配置错误",stopsign!,ok!)RETURNENDIF//SetProfileString(gs_ini_path,'DBMS','ls_1=ProfileString(gs_ini_path,'MyDB','DBMS','ODBC')SQLCA.DBMS=ls_1

SQLCA.AutoCommit=Falsels_1=ProfileString(gs_ini_path,'MyDB','DBParm','error')SQLCA.DBParm=ls_1connectusingsqlca;open(w_main)//打开主界面在Close事件中加入如下代码:disCONNECTUSINGsqlca;(8)建立新的具体功能窗体(如w_zichuangti)设置窗体BackColor为“0^^”,输入窗体Title;要在1024*768分辨率下基本满屏,窗体大小可设置为“4645*2748”在新窗体上一般用GroupBox来划分功能区域,设置该控件的字体为“宋体”,大小为“10”,背景颜色为“Cream”用静态文本做功能说明或指示,一般加黑,宋体9号字示例程序界面如下:3HX8 --提本 ”版用 y洞JE AJEHJIOMM-OO-DO£XODOa-OO-OO|生产「痉 口弱得 V鲁号 目第号 □AStlBBd)| |S8TH*号者苣?自珀三HA曳段匕吃至皇 是否匕听外海£唱印#E招卷七在十 外始F合K康电 白耽日J'<।西::(.而上m:[向豆j[:][9a句匚口由3。(9)响应菜单click事件弹出子窗口(相同子窗口只弹出一次待研究)在菜单下编写代码打开窗体(双击菜单即可在Click事件下编写),简单代码如下:

//选择菜单时调出子窗体windowlwopensheet(lw,'w_zichuangti',parentwindow,0,Cascaded!)lw.WindowState=Maximized!(10)相同的子窗口只让弹出一次(代研究)(10)建立数据窗口(11)添加新的pbl文件一般要用不同的pbl文件分类存储不同窗体、数据窗口和菜单等资源;建立新的pbl文件的方法如下:点击工具栏上“Library”按钮,然后在弹出子窗口中进入程序所在文御件夹,在工具栏左下有“C-”创建pbl的按钮。创建好pbl库文件后在目标(如果按前面建立名称为frame的目标,则在“一部地旭-)上单击右键,选择属性在弹出窗口中可添加LibraryList,如下图,也可在这里建立新的pbl库文件

Proper~ti.esofTarget£ra*eLibraryListDeployLibrarySearchPath:口位00$Q1个大通讯录1bdzm705。6旧mrump%D:<200601lB_^_A.jlTflS\tKl2007050&\3Uth.pbl;New...Browse...More>>Cancel Apply Help如何编译出可运行程序首先新建一个Project(File->new->Project->Application),如取名p_main然后打开新建的Project,设置可执行文件生成目录。DataWindow窗口连通数据库dw_1.settransobject(sqlca)格式化日期(2007-10-05变为20071005)f_format_date函数,输入string变量ps_date,返回stringifisnull(ps_date)thenreturn""iflen(ps_date)<10thenreturnps_datereturnleft(ps_date,4)+mid(ps_date,6,2)+mid(ps_date,9,2)退出界面及退出界面时检查数据是否保存退出子界面(控江事件里面写代码):Close(Parent)假设检测的数据窗口名为dw_zcrxxifdw_zcrxx.ModifiedCount()+dw_zcrxx.deletedcount()>0thenifMessageBox('提示','数据没有保存,是否不保存退出?’,Question!,YesNo!)=2thenreturn1endifendif4、其他编程将数据库中数据显示到dropdownlistbox的下拉菜单里建立“f_ddlb_populate”函数,函数输入两个变量:dropdownlistbox:ddlb_this要显示到的空间名string:as_sql查询数据库的sql语句函数代码如下:ddlb_this.reset()ddlb_this.additem("")stringls_disp,ls_dataDECLAREmy_cursorDYNAMICCURSORFORSQLSA;PREPARESQLSAFROM:as_sql;OPENDYNAMICmy_cursor;FETCHmy_cursorINTO:ls_disp,:ls_data;ifisnull(ls_disp)thenls_disp=""ifisnull(ls_data)thenls_data=""dowhilesqlca.sqlcode=0ddlb_this.additem(trim(left(ls_disp+space(200),200)+ls_data))FETCHmy_cursorINTO:ls_disp,:ls_data;loopCLOSEmy_cursor;as_sql语句里面需要有两个输出如果ddlb的数据项比较多,一般选中VScrollBar如下调用这个函数:stringls_sqlls_sql="selectzcr_bh,''fromzcrorderbyzcr_bh";//举例f_ddlb_populate(ddlb_bh,ls_sql)〃将ddlb_bh列表框里写入列表项数据窗口常用几个函数dw_deal.settransobject(sqlca) //连接数据库dw_deal.insertrow(numberrow):在指定行之前插入一行,如果要在最后一行新增一行,取row=0dw_deal.deleterow(numberrow):删除指定行,row=0时删除当前行dw_deal.rowcount():返回数据窗口中总行数dw_deal.setitem(li_n,'lxr_zpdz','pic\') //设置某行某列的数据integerdwcontrol.AcceptText():AppliesthecontentsoftheDataWindowcontrol'seditcontroltothecurrentitemintheDataWegerdwcontrol.Filter():根据给定过滤条件来列出满足条件的记录,过滤条件由SetFilter函数指定integerdwcontrol.SetFilter(stringformat):设定过滤条件integerdwcontrol.GetColumn():ReturnsthenumberofthecurrentcolumnintheDataWindowcontrolstringdwcontrol.GetColumnName():ReturnsthenameofthecurrentcolumnintheDataWindowcontrol.datedwcontrol.GetItemDate(longrow,stringcolumn{,DWBufferdwbuffer,booleanoriginalvalue})datedwcontrol.GetItemDate(longrow,integercolumn{,DWBufferdwbuffer,booleanoriginalvalue})GetItemStringGetItemString(…):longdwcontrol.GetNextModified(longrow,DWBufferdwbuffer):SetRow(longrow):设定指定行为当前行GetRow():获得数据窗口中当前行GetSelectedRow(longrow):获得指定行row后面第一个被选中的行,如没有则返回零integerdwcontrol.SelectRow(longrow,booleanselect):选中指定行IsSelected(longrow):判断某行是否被选中ScrollToRow(numberrow):窗口数据滚动在指定行,如果row=0则规东到第一行integerdwcontrol.RowsMove(longstartrow,longendrow,DWBuffer,datawindowtargetdw,longbeforerow,DWBuffertargetbuffer)将一个数据窗口的几行数据移到另一个数据窗口。movebuffer和DWBuffer的范围为Primary!、DeletedFilter!stringdwcontrol.Describe(stringpropertylist):返回数据窗口中控件属性stringdwcontrol.Modify(stringmodstring):修改数据窗口中控件属性integerdwcontrol.SetItemStatus(longrow,integercolumn,dwbufferdwbuffer,dwitemstatusstatus):改变数据状态,dwitemstatus有以下四种状态NotModified!,DataModified!,New!,NewModified!数据窗口常用几个事件RetrieveRowevent(DataWindows):在一行被检索后响应;返回0则继续,返回1则停止检索常用SQL语句SELECT*FROMfinancesWHEREdescriptionLIKE'gs_'ESCAPE'S'这里ESCAPE'S’表示不将‘s'后面的通配符「作为通配符,而只是作为一般的字符给数据窗口增加条件ThefollowingscriptsdynamicallyaddaWHEREclausetoaDataWindowobjectthatwascreatedwithaSELECTstatementthatdidnotincludeaWHEREclause.(SincethisexampleappendsaWHEREclausetotheoriginalSELECTstatement,additionalcodewouldbeneededtoremoveawhereclausefromtheoriginalSELECTstatementifithadone.)ThistechniqueisusefulwhentheargumentsintheWHEREclausemightchangeatexecutiontime.TheoriginalSELECTstatementmightbe:SELECTemployee.emp_id,employee.l_nameFROMemployeePresumably,theapplicationbuildsaWHEREclausebasedontheuser'schoices.TheWHEREclausemightbe:WHEREemp_id>40000Thescriptforthewindow'sOpeneventstorestheoriginalSELECTstatementinoriginal_select,aninstancevariable:dw_emp.SetTransObject(SQLCA)original_select=&dw_emp.Describe("DataWindow.Table.Select")ThescriptforaCommandButton'sClickedeventattachesaWHEREclausestoredintheinstancevariablewhere_clausetooriginal_selectandassignsittotheDataWindow'sTable.Selectproperty:stringrc,mod_stringmod_string="DataWindow.Table.Select='"&+original_select+where_clause+rc=dw_emp.Modify(mod_string)IFrc=""THENdw_emp.Retrieve()ELSEMessageBox("Status","ModifyFailed"+rc)ENDIF常用PowerScript语句1)CHOOSECASE语句CHOOSECASEWeightCASEIS<16..CASEIS16to18..CASEELSE..ENDCHOOSE2)循环语句DOUNTIL条件语句块LOOP或DOWHILE条件语句块LOOPDO语句块LOOPUNTIL条件FORvarname=startToend{STEPincrement}statementblockNEXT4.7程序中修改数据窗口中的选择条件(不是利用过滤函数)在数据窗口与数据库联接时的SQL语句中用过滤条件比检索后用过滤条件过滤效率更高,因此如果需要显示满足一定条件的数据时,一般时直接修改数据窗口的SQL搜索语句。程序编写过程如下:(1)编写全局函数f_change_where(stringps_sql,stringps_where)用某条件ps_where代替SQL选择语句ps_sql中的where条件,代码如下:ifps_sql=""orps_where=""thenreturnps_sqlps_sql=lower(ps_sql)stringls_front,ls_end,ls_where,ls_returnifpos(ps_sql,"where")>0thenls_front=left(ps_sql,pos(ps_sql,"where")-1)ifpos(ps_sql,"groupby")>0thenls_end=right(ps_sql,len(ps_sql)-pos(ps_sql,"groupby")+1)ls_where=mid(ps_sql,pos(ps_sql,"where")+6,len(ps_sql)-len(ls_front)-len(ls_end)-6)elseifpos(ps_sql,"orderby")>0thenls_end=right(ps_sql,len(ps_sql)-pos(ps_sql,"orderby")+1)ls_where=mid(ps_sql,pos(ps_sql,"where")+6,len(ps_sql)-len(ls_front)-len(ls_end)-6)elsels_where=mid(ps_sql,pos(ps_sql,"where

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论