欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    powerbuilder编程简单入门(个人总结)-.pdf

    • 资源ID:76242656       资源大小:395.18KB        全文页数:11页
    • 资源格式: PDF        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    powerbuilder编程简单入门(个人总结)-.pdf

    2011-4 by 邵家鑫From Tsinghua 一种简单的 powerbuilder10数据库编程介绍1、需求分析与数据库建立进行需求分析(需求分析文档),确定数据关系,建立各种数据表,建立数据库(Access),设置 ODBC 数据源(控制面板-管理工具-数据源 ODBC-“用户 DSN”菜单下点“添加”选相应的数据源驱动程序,如果用Access2003 建立的,则选第三项“Driver do Microsoft Access(*.mdb),然后点击“完成”-输入数据源名,如mydata,然后点击“选择”按钮选择建好的数据库,最后点“确定”,如下图所示)2、界面设计(功能界面、重要数据表维护界面)界面设计主要分为几个部分(1)按照管理系统所需的功能设计界面。首先画出所有可能的业务流程(数据的各种可能输入、修改、删除业务,数据的输出、显示业务)(2)按照需要维护的表设计界面(往往给最高权限管理员直接修改数据用)3、开始程序编写(1)新建一个workspace(new-workspace-workspace)(2)在 workspace下建立一个目标(new-Target-application),可取名frame 2011-4 by 邵家鑫From Tsinghua(3)在目标下建一个主窗口可取名 w_main,窗体名一般以w_开头(new-PB Object-Window),将其 Window Type设为“mdihelp!”(4)为主窗口建一个主菜单可取名 m_frame,菜单名一般以m_开头(new-PB Object-Menu)(5)程序中设置ODB ODBC 点击按钮,选中“ODB ODBC”项,然后单击右边“New”按钮,弹出如下对话框,设置 Profile Name 和 Data Source,如图所示。(6)建立配置文件配置文件取名“config.ini”,内容如下:MyDB DBMS=ODBC AutoCommit=False DBParm=ConnectString=DSN=mydata;UID=;PWD=(7)自动连接数据库与退出程序关闭数据库的编写2011-4 by 邵家鑫From Tsinghua 首先建立 Global Variables 如下:string gs_userid,gs_username/登录用户标识、用户姓名string gs_root_path,gs_ini_path/应用路径和主配置文件路径其次申明 Global External Functions 如下:FUNCTION int GetComputerNameA(ref string computername,ref long size)LIBRARY KERNEL32.DLL alias for GetComputerNameA;Ansi FUNCTION long GetCurrentDirectoryA(long nBufferLength,REF string szBuffer)LIBRARY KERNEL32.DLL alias for GetCurrentDirectoryA;Ansi FUNCTION long SetCurrentDirectoryA(string szPathName)LIBRARY KERNEL32.DLL alias for SetCurrentDirectoryA;Ansi/end prototypes 在程序的总入口(进入“”)Open 事件中写入以下代码:/Profile moneyandfriends string ls_1/设置应用根目录gs_root_path=space(255)GetCurrentDirectoryA(255,gs_root_path)if right(gs_root_path,1)=then gs_root_path=left(gs_root_path,len(gs_root_path)-1)end if/设置配置文件路径gs_ini_path=gs_root_path+config.ini IF not FileExists(gs_ini_path)THEN MessageBox(找不到配置文件+gs_ini_path,系统配置错误,stopsign!,ok!)RETURN END IF/SetProfileString(gs_ini_path,DBMS,ls_1=ProfileString(gs_ini_path,MyDB,DBMS,ODBC)SQLCA.DBMS=ls_1 SQLCA.AutoCommit=False ls_1=ProfileString(gs_ini_path,MyDB,DBParm,error)SQLCA.DBParm=ls_1 connect using sqlca;open(w_main)/打开主界面在 Close 事件中加入如下代码:disCONNECT USING sqlca;(8)建立新的具体功能窗体(如w_zichuangti)8.1 设置窗体BackColor 为“Cream”,输入窗体Title;要在 1024*768 分辨率下基本满屏,窗体大小可设置为“4645*2748”8.2 在新窗体上一般用GroupBox 来划分功能区域,设置该控件的字体为“宋体”,大小为2011-4 by 邵家鑫From Tsinghua“10”,背景颜色为“Cream”8.3 用静态文本做功能说明或指示,一般加黑,宋体9 号字示例程序界面如下:(9)响应菜单click事件弹出子窗口(相同子窗口只弹出一次待研究)在菜单下编写代码打开窗体(双击菜单即可在Click 事件下编写),简单代码如下:/选择菜单时调出子窗体window lw opensheet(lw,w_ zichuangti,parentwindow,0,Cascaded!)lw.WindowState=Maximized!(10)相同的子窗口只让弹出一次(代研究)2011-4 by 邵家鑫From Tsinghua(10)建立数据窗口(11)添加新的pbl 文件一般要用不同的pbl 文件分类存储不同窗体、数据窗口和菜单等资源;建立新的pbl 文件的方法如下:点击工具栏上“Library”按钮,然后在弹出子窗口中进入程序所在文件夹,在工具栏左下有“”创建 pbl 的按钮。创建好pbl 库文件后在目标(如果按前面建立名称为 frame 的目标,则在“”)上单击右键,选择属性在弹出窗口中可添加Library List,如下图,也可在这里建立新的pbl 库文件2011-4 by 邵家鑫From Tsinghua(12)如何编译出可运行程序首先新建一个Project(File-new-Project-Application),如取名p_main 然后打开新建的Project,设置可执行文件生成目录。(13)DataWindow窗口连通数据库dw_1.settransobject(sqlca)(14)格式化日期(2007-10-05变为 20071005)f_format_date 函数,输入string 变量 ps_date,返回 string if isnull(ps_date)then return if len(ps_date)0 then if MessageBox(提示,数据没有保存,是否不保存退出?,Question!,YesNo!)=2 then return 1 end if end if 2011-4 by 邵家鑫From Tsinghua 4、其他编程4.1 将数据库中数据显示到dropdownlistbox的下拉菜单里建立“f_ddlb_populate”函数,函数输入两个变量:dropdownlistbox:ddlb_this 要显示到的空间名string:as_sql 查询数据库的sql 语句函数代码如下:ddlb_this.reset()ddlb_this.additem()string ls_disp,ls_data DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA;PREPARE SQLSA FROM:as_sql;OPEN DYNAMIC my_cursor;FETCH my_cursor INTO:ls_disp,:ls_data;if isnull(ls_disp)then ls_disp=if isnull(ls_data)then ls_data=do while sqlca.sqlcode=0 ddlb_this.additem(trim(left(ls_disp+space(200),200)+ls_data)FETCH my_cursor INTO:ls_disp,:ls_data;loop CLOSE my_cursor;as_sql语句里面需要有两个输出如果 ddlb 的数据项比较多,一般选中VScrollBar 如下调用这个函数:string ls_sql ls_sql=select zcr_bh,from zcr order by zcr_bh;/举例f_ddlb_populate(ddlb_bh,ls_sql)/将 ddlb_bh 列表框里写入列表项4.2 数据窗口常用几个函数dw_deal.settransobject(sqlca)/连接数据库dw_deal.insertrow(number row):在指定行之前插入一行,如果要在最后一行新增一行,取 row=0 dw_deal.deleterow(number row):删除指定行,row=0 时删除当前行dw_deal.rowcount():返回数据窗口中总行数dw_deal.setitem(li_n,lxr_zpdz,pic)/设置某行某列的数据integer dwcontrol.AcceptText():Applies the contents of the DataWindow controls edit control to the current item in the DataWindow buffer.integer dwcontrol.Filter():根据给定过滤条件来列出满足条件的记录,过滤条件由SetFilter 函数指定integer dwcontrol.SetFilter(string format):设定过滤条件integer dwcontrol.GetColumn():Returns the number of the current column in the 2011-4 by 邵家鑫From Tsinghua DataWindow control string dwcontrol.GetColumnName():Returns the name of the current column in the DataWindow control.date dwcontrol.GetItemDate(long row,string column,DWBuffer dwbuffer,boolean originalvalue )date dwcontrol.GetItemDate(long row,integer column,DWBuffer dwbuffer,boolean originalvalue )GetItemStringGetItemString():long dwcontrol.GetNextModified (long row,DWBuffer dwbuffer):SetRow(long row):设定指定行为当前行GetRow():获得数据窗口中当前行GetSelectedRow(long row):获得指定行row 后面第一个被选中的行,如没有则返回零integer dwcontrol.SelectRow(long row,boolean select):选中指定行IsSelected(long row):判断某行是否被选中ScrollToRow(number row):窗口数据滚动在指定行,如果row=0 则规东到第一行integer dwcontrol.RowsMove(long startrow,long endrow,DWBuffer,datawindow targetdw,long beforerow,DWBuffer targetbuffer)将一个数据窗口的几行数据移到另一个数据窗口。movebuffer 和 DWBuffer 的范围为 Primary!、Delete!和 Filter!string dwcontrol.Describe(string propertylist):返回数据窗口中控件属性string dwcontrol.Modify(string modstring):修改数据窗口中控件属性integer dwcontrol.SetItemStatus(long row,integer column,dwbuffer dwbuffer,dwitemstatus status):改变数据状态,dwitemstatus 有以下四种状态NotModified!,DataModified!,New!,NewModified!4.3 数据窗口常用几个事件RetrieveRow event(DataWindows):在一行被检索后响应;返回0 则继续,返回1 则停止检索4.4 常用 SQL 语句SELECT*FROM finances WHERE description LIKE gs_ ESCAPE S 这里 ESCAPE S 表示不将 s 后面的通配符 _ 作为通配符,而只是作为一般的字符4.5 给数据窗口增加条件The following scripts dynamically add a WHERE clause to a DataWindow object that was created with a SELECT statement that did not include a WHERE clause.(Since this example appends a WHERE clause to the original SELECT statement,additional code would be needed to remove a where clause from the original SELECT statement if it had one.)This technique is useful when the arguments in the WHERE clause might change at execution time.The original SELECT statement might be:2011-4 by 邵家鑫From Tsinghua SELECT employee.emp_id,employee.l_name FROM employee Presumably,the application builds a WHERE clause based on the users choices.The WHERE clause might be:WHERE emp_id 40000 The script for the windows Open event stores the original SELECT statement in original_select,an instance variable:dw_emp.SetTransObject(SQLCA)original_select=&dw_emp.Describe(DataWindow.Table.Select)The script for a CommandButtons Clicked event attaches a WHERE clause stored in the instance variable where_clause to original_select and assigns it to the DataWindows Table.Select property:string rc,mod_string mod_string=DataWindow.Table.Select=&+original_select+where_clause+rc=dw_emp.Modify(mod_string)IF rc=THEN dw_emp.Retrieve()ELSE MessageBox(Status,Modify Failed+rc)END IF 4.6 常用 PowerScript语句1)CHOOSE CASE 语句CHOOSE CASE Weight CASE IS 0 then ls_front=left(ps_sql,pos(ps_sql,where)-1)if pos(ps_sql,group by)0 then ls_end=right(ps_sql,len(ps_sql)-pos(ps_sql,group by)+1)ls_where=mid(ps_sql,pos(ps_sql,where)+6,len(ps_sql)-len(ls_front)-len(ls_end)-6)elseif pos(ps_sql,order by)0 then ls_end=right(ps_sql,len(ps_sql)-pos(ps_sql,order by)+1)ls_where=mid(ps_sql,pos(ps_sql,where)+6,len(ps_sql)-len(ls_front)-len(ls_end)-6)else ls_where=mid(ps_sql,pos(ps_sql,where)+6,len(ps_sql)-len(ls_front)-6)end if 2011-4 by 邵家鑫From Tsinghua ls_return=ls_front+where(+ls_where+)and +ps_where+ls_end else if pos(ps_sql,group by)0 then ls_front=left(ps_sql,pos(ps_sql,group by)-1)ls_end=right(ps_sql,len(ps_sql)-pos(ps_sql,group by)+1)elseif pos(ps_sql,order by)0 then ls_front=left(ps_sql,pos(ps_sql,order by)-1)ls_end=right(ps_sql,len(ps_sql)-pos(ps_sql,order by)+1)else ls_front=ps_sql ls_end=end if ls_return=ls_front+where +ps_where+ls_end end if return ls_return(2)在窗口中声明局部变量用来记录最初的没有where 语句的窗口的SQL 查询语句string is_original_sql(3)声明局部变量ls_old_select,ls_new_select,如下使用string ls_old_select,ls_new_select ls_old_select=dw_ttxx.GetSQLSelect()if is_original_sql=then is_original_sql=ls_old_select else/避免条件被循环添加ls_old_select=is_original_sql end if ls_new_select=f_change_where(ls_old_select,is_conditions)dw_窗口.SetSQLSelect(ls_new_select)

    注意事项

    本文(powerbuilder编程简单入门(个人总结)-.pdf)为本站会员(索****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开