
只想说powerbuilder真的很老了,pb语言曾经在02,03年因为其开发快而红极一时,但是现在基本都灭寂了,原因是没有很好的扩展性,不信的话lz搜索一下pb的问题,会发现很多的提问和回答都是06年以前的,所以现在powerbuilder是一个被淘汰的语言,当然一些公司还用pb很大一部分是他们早先产品是pb开发的,而且他们在维护时不可能用新的语言做一个系统,所以现在pb不是
一个流行的语言,建议楼主看看编辑java的esclipe或微软的vistual statio
db数据库文件可以使用系统自带的ODBC数据源管理器来配置,选择驱动程序时使用Adaptive Server Anywhere,在配置时候需要用户名和密码,配置完成后可以测试连接,看是否成功。如果成功的话可以在PB的DatabaseProfiles中增加一个连接,如图:
在上面点击New,在d出的窗口的Data Source中选择你在ODBC中配置的数据源即可。
但愿你能成功~~
PowerBuilder(以下简称PB)是Powersoft公司(已被Sybase收购)推出的基于客户机/服务器体系结构的强有力的开发工具 自问世以来深受开发人员的好评 Datawindow是PB中获取专利技术的控件 它对数据的处理方法相当简洁 数据窗口能处理各种显示格式 进行报表打印 对复杂的嵌套报表同样处理自如
数据窗口的处理机制首先是根据所需的显示方式将数据源表中的域设计好 在运行时将所要的数据从数据库服务器上下载到客户机上处理 然后将更改后的数据进行提交(Commit)或回滚(Rollback) 这种处理机制大大降低了数据的传输量 减轻了网络的负担 也提高了数据的处理速度 充分利用数据窗口的特点 可达到事半功倍的效果 但是如果有些问题不加注意就会出现意想不到的错误
几个函数
AcceptText()
AcceptText()函数的功能是将数据窗口当前编辑的数据转移到数据窗口的缓冲区中 程序通常在关闭窗口及其他情况下判断是否改变了当前数据 如果已改变数据 应提示用户保存 这就杜绝了用户在偶然的情况下丢失更改数据的现象 一般用ModifiedCount和DeletedCount函数判断数据是否改变
PB在处理数据窗口时 对应开辟了四个数据缓冲区 分别为Primary Buffer Deleted Buffer Filter Buffer SortBuffer 其中Deleted Buffer存放被删除的记录 Filter Buffer存放被过滤的记录 Sort Buffer存放排序的记录 Primary Buffer存放其他记录 函数ModifiedCount从Primary and Filter Buffers中取数据进行判断 DeletedCount则从Deleted Buffer中取数据进行判断
PB在接受用户输入时设置了一个浮动编辑框 用户输入或更改的内容并不直接进入Primary Buffer 而是在用户输入完后进入下一个域时 PB首先对它进行有效性检测 通过后转入Primary Buffer 如果只改变一项数据就关闭窗口则相关数据并没有进入Primary Buffer 系统判断ModifiedCount()为 所以不会提示保存数据 用AcceptText()函数就可以将浮动编辑框中的数据转入缓冲区中 在相应的程序段前加上Accepttext() 问题就解决了
FindRequired()
在实际应用中经常需要限制表中一些域的属性 例如银行客户表中账号就不能为Null 在提交数据前检查是否将必须输入的数据都赋值是一个很好的编程习惯 FindRequired函数可以解决此问题 它通过对数据窗口中数据的检查 将数据窗口中域的属性为Required 而并未赋值的域(包括相应的行 列)找出来
为了利用此函数 在构造数据窗口时就要注意将表中具有NOT NULL属性的数据列设为Required(方法为:在数据窗口相应域上按鼠标右键或双击左键 d出Column Object 框 选Edit页 将Required前的框选中 按Ok钮即可) 在相应事件中插入下列程序:
long ror= //行数赋
integer colnbr= //列数赋
string colname //用来存储列名
mle_required Text = //窗口中的多行编辑控件 用来存储找到域的行 列号
DO WHILE row <>
colnbr++ //继续找下一列
IF dw_ FindRequired(Primary! row colnbr colname FALSE) < THEN EXIT
//若程序出错则返回
IF row <> THEN
mle_required Text = mle_required Text + String(row) + ~t &+ colname + ~r~n //保存查出的行 列号
END IF
//当ROW返回为 则意味再没有查出 跳出循环
LOOP
程序执行完后 多行编辑框中显示的为出错的地方 用户根据提示可以轻易地更改
FindRequired函数中的Row Colnbr参数能自动增加或重置 Colname用来存放列的字符名
数据的突出显示及保护:程序运行中 用户希望显示的数据具有明显的区分 例如学生的成绩(不及格的分数要用红色显示) 有些数
据必须只能显示 不能让用户修改;还有些数据在有些时候可以修改 有些时候不能修改等 以上情况可归结为两点:
数据的突出显示
数据窗口应该能使用户很快找到他们想要的信息 以颜 分既满足用户的习惯 又不占系统资源 实现起来也很简单 以学生管理为例 要求成绩低于 分的以红色显示 其他不变 方法是:在数据窗口中对应成绩的列(例如 /CJ )上双击鼠标左键或单击鼠标右键 d出Column Object对话框 选取Expressions页 在Color后的框中输入:
if(cj< rgb( ) rgb( ))此句表示当成绩小于 则显红色 否则灰色显示
IF语句只可能有两种选择 如果要更多的条件判断则必须用CASE语句 例如成绩大于等于 用蓝色 小于 用红色 其他用绿色则应该用以下语句:
Case(cj WHEN IS >= THEN RGB( ) WHEN IS < THEN RGB( ) E
LSE RGB( ))
我们还可以输入更加复杂的公式
图形是最好的说明语言 为了更好体现数据的直观性 可以采用条件位图的方法 之所以称为条件位图 是因为它随数据的性质而决定是否显示 用可以在上述的成绩管理数据窗口的前面加上一个 双击位图 d出Picture Object对话框 选Expressions页 在Visible右的编辑框写入if(xb= ) 此句的意义为当性别为 (女)时蝴蝶出现 否则蝴蝶消失 程序运行起来相当直观 读者可以触类旁通 充分利用列的属性使用户的界面更加友善 漂亮
数据的保护
有很多情况需要对数据进行保护(即只能显示而不允许修改) 学生查询成绩时就是这种情况 进行数据保护的方法有很多 第一种是双击要保护的列 d出Column Object 选取Edit页 将Display Only框选中;第二种将要保护的列的TabOrder置 则此列得不到焦点 当然就无从修改;第三种是从根本作起 选取Rows菜单 再选取Update Properties d出Specify Update Properties对话框 将Allow Updates设为空 这样即使用户更改了也无法更新数据库 使更改毫无意义
以上情况都是事先已经确定需要保护的数据 如果有些数据要保护 有些不要保护则以上的方法就无法实现 例如合同台账管理:对于一个没有实施的合同可以更改 对于一个已经实施的合同则必须加以保护 这需要用列的保护属性来实现 方法如下:
双击每一列 d出Column Object对话框 选取Expressions页 在Protect后的框中写入:if(sfss= ) 其中sfss为表示合同是否实施 如果实施(值为 )则进行数据保护 否则可以更改 此方法可以在程序运行中动态控制数据的保护方式
数据窗口的多表更新
lishixinzhi/Article/program/SQL/201311/16236
我从 年的开始使用PowerBuilder 那时还没有PFC 实际上 class library(类库) 的概念那时还是一个新名词 我们不得不使用PowerBuilder本身来从头开始创建每一个对象 特别的是 DataWindow使RAD(快速应用开发)变得真正的高效起来 下面让我们 从一些简单有用的例子开始吧
将Tabular DataWindow转换为Grid DataWindow
也许这是一个最有用的小窍门了 它可以将tabular DataWindow转换为grid DataWindow 反之亦然 在PowerBuilder x版本里 您可以右键单击一个对象来编辑源文件(edit source) 这比先前必须将教本导出再导入要简单的多 要将一个tabular DataWindow转换为grid DataWindow 只需要在library painter中右键单击DataWindow对象 在d出菜单中选择Edit Source 打开script editor 变量 processing 控制着DataWindow的显示类型 将值改为 DataWindow会变成grid 改为 DataWindow就会变成tabular
将DataWindow数据源从Select语句改变为Stored Procedure(存储过程)
这也是一个非常有用的技巧 它涉及一些基本的技术 首选 创建或者确定一个合适的Stored Procedure 然后用这个Stored Procedure作数据源创建一个新的DataWindow 在library painter里 右键单击这个DataWindow 在d出菜单中选择Edit Source 打开script editor 定位到以 Procedure 开头的行
确保整行都被选中 将该行拷贝到剪贴板 然后找到您希望将数据源更改成存储过程的DataWindow 同样使用Edit Source打开script editor 定位到以 Retrueve 开头的行
仍须选中整个行(它也许不止一行) 现在将整个Retrieve语句替换为剪贴板中的Procedure语句 关闭script editor 您现在就拥有了一个基于Stored Procedure的DataWindow
为什么说这个技巧非常有用呢?这个技巧使您既可以保留DataWindow的设计又可以利用stored procedures 尤其是在您有许多基于SQL语句的DataWindow在数据库不断增长直到面临性能问题的时候 这项技术不仅节省了开发人员的大量时间 还能够保留原有的DataWindow界面 而用户丝毫不会察觉
用stored procedure来更新DataWindow
当DataWindow的数据源变成stored procedure Datawindow的更新能力就丢失了 这让很多开发人员不愿用stored procedure作为DataWindow的数据源 很多年以来 我一直避免使用stored procedure也是出于这个原因 无论如何 Stored Procedure Update 功能是奇妙的 首先 确定或者创建一个用于更新 插入 删除记录的stored procedures 打开DataWindow对象 从菜单栏上选择Rows > Stored Procedure Update
在Tab页面上分别为insert delete update选择选择用于对应的存储过程 PowerBuilder会逐行列出stored procedure的参数 您可以为每个参数配置对应的DataWindow Column
在stored procedure update配置完成后(可能需要保存并退出DataWindow Painter 然后重新打开) 选择菜单 Rows>update properties 您会发现 Stored Procedure 如同一个正常的表名一样出现在 Table to Update 下拉列表中
如果您希望更新多张表 stored procedure update是一个很好的选择 任何一个利用过重置update标记等方法来完成多表更新的开发人员无疑会发现这种方法的非常的有价值
在Powerscript中从stored procedure接收数据
随着stored procedures的频繁使用 您肯定也希望能够直接在Powerscript中直接通过stored procedures来获取数据 典型的 在Powerscript中 我们使用datastore来完成这个任务 使用stored procedures的最终结果就是可以减少一些DataWindow对象的存在 而且它允许更多的代码复用 相同的procedure既可以在后端完成一个 Get 的请求 也可以用于前端的数据展示 如需在Powerscript中利用stored procedure接收数据 请参照以下脚本
OpenUserObjectWithParm
许多年前我曾在PowerSoft担任技术顾问 有一次在参加PowerSoft咨询会议的时候 无意中听到一个客户希望能够得到一些有关使用OpenUserObjectWithParm函数的一些建议 那个技术顾问从未听说过这个函数 我永远难忘那次会谈 它使我确信OpenUserObjectWithParm这个函数在很大程度上被大家忽略了 其实这个函数非常的有用 它允许你向一个user object传递参数 告诉它在Window上的什么位置来自行创建 它被存储在userobjects数组中的位置(可在runtime进行 *** 作 window control[]) 还有开发人员能够想到的任何其它的参数 举个简单的例子 我们打开一个DataWindow 并允许用户从一个calendar对象中选择日期
下面这行代码位于Window的Open事件中 它将创建一个类型为uo_drop_down_calendar的userobject x y座标分别为 并且标题显示为 Begin Date
OpenUserObjectWithParm(iuo_begin Begin Date )
这个技巧还有很多其他的用处
SQL Tool
有很多次 在作PowerBuilder应用的技术支持时 我们需要检测和定位一些关于数据的问题 但我们并不总可以连接到产品的数据库上 这种情况下 在前端的PowerBuilder应用中以系统管理员的身份执行SQL语句的方法就派上用场了 我为此编写了一个很有用的工具软件
您可以从dropdown DataWindow中任意选择数据库表和字段名 轻松的构建需要的SQL语句而不用担心记不住那些字段的名字 还可以将SQL语句保存起来以备日后使用 例如 您的用户需要找出数据库中所有的可用的address类型 它很简单 您可以通过创建SQL语句来演示给他或她看
用户将一条SQL语句输入到DataWindow中 然后点击 Execute(执行) 检索结果就会出现在下面的区域 用户还可以将数据结果另存为Excel等等
如果用户需要更详细的SQL语句 您可以写下来然后e mail给他 用户只需要拷贝粘贴到窗体里就可以执行了 这种方法可以用于清理数据库问题 创建或执行stored procedures 创建特别的报告 甚至授权 您可以在enterprise manager作几乎任何事情 这个工具软件非常的有用 无论如何 要小心的使用 以免用户创建笛卡儿积或者恶意的更新数据
保存动态创建的DataWindow
让我们再深入讨论这个工具(SQL Tool) 倘若您的客户急需一个定制的报表 您可能想先飞速的的完成报表 等回来以后再重新规划集成到应用菜单中 于是 在您的手提电脑上写一个stored procedure e mail给您的系统管理员 您的系统管理员在SQL Tool窗口打开脚本
用户通过执行这段脚本来创建stored procedure 您再告诉他们应该如何配置参数 然后执行存储过程 结果被输出到result set(结果集)窗口 现在看看如何能把这个结果保存成一个DataWindow
打开DataWindow页面 然后点击 Create DataWindow
现在点击 Retrieve DataWindow 刚才的结果集出现在DataWindow中 如果您希望保存这个DataWindow以便以后使用 点击 Save DataWindow 就可以了 您可以适当的修改格式并将它封装为一个报表
结语
作为PowerBuilder的开发人员 我们总是被要求完成惊人数量的工作 用户或是项目经理可能会要求极其苛刻 对一个开发人员来说 储备一个 军械库 的可依赖的技术和例子是非常重要的 PowerBuilder的队伍已经不像从前那么壮大了 在与那些大公司以及 机构的IT经理们的接触过程里 我经常被迫去反驳那些所谓的PowerBuilder早已是 骨灰 (原文用了legacy 遗产) 过时货 废弃的 甚至 年代的技术 的断言 事实上 PowerBuilder仍旧是目前最棒的RAD开发工具 它可以让开发人员只需大约数小时的功夫就完成设计原型和产品级的代码 而非数天乃至数周 这也显示出开发环境是否以团队为导向的区别
作为PowerBuilder的开发人员 我们拥有一个优于我们的其他IT同行最强大的工具 我真的希望以上这些技巧能够帮助初学者以及那些中级的开发人员 更加的信赖PowerBuilder
编辑推荐
ASP NET开发培训视频教程
lishixinzhi/Article/program/PB/201311/24591
PowerBuilder是目前最流行的数据库前端开发工具之一 这一点是毫无疑问的 凡是使用过PowerBuilder的程序员都有一个共同的体会 那就是相对于其它的客户/服务器开发工具而言 PowerBuilder提供的开发环境不仅方便快捷 功能也极为强大 是理想的数据库前端开发工具
PowerBuilder采用的是目前流行的图形化的界面和可视化的编程方法 通过引入独具特色的数据窗口对象 使得程序员可以可视化地完成对数据库的 *** 作 PowerBuilder提供了对目前流行的几乎所有的大型数据库和桌面数据库的支持 同时它自身也附带了一个小的数据库管理系统Sybase SQL Anywhere PowerBuilder支持多种软硬件平台 它不仅可以跨平台共享程序中的各种对象 还支持应用程序的跨平台开发和分布 极大地减轻了程序员在不同平台上移植程序的工作量
本光盘是为那些具有一定的WINDOWS编程经验 希望使用或者想深入了解利用PowerBuilder进行数据库应用程序开发的读者而编写的 在学习光盘的一开始 我们通过一个实用的例子带你快速进入PowerBuilder的精彩世界 然后通过原理加实例的方法向你详细介绍PowerBuilder的基本原理和各种高级实用的编程技术 在这张学习光盘中 你不仅可以学会使用开发基本的PowerBuilder应用程序所必须的应用对象 窗口 控件 菜单 数据窗口对象 POWERSCRIPT语言等基本内容的原理和使用技术 更可以学会在应用程序中使用用户对象 调试程序 打印 使用报表 数据管道 数据窗口高级技术 实现分布式计算等各种编写功能强大的高质量应用程序所需要的核心技术 从这个角度而言 本光盘对有一定PowerBuilder基础的读者而言 也有着极大的参考价值
参与开发本教学光盘的都是正在使用PowerBuilder进行数据库应用程序开发的高校年轻老师和研究生 他们有着丰富的实际编程经验 凭著对PowerBuilder开发工具的热爱 他们把自己学习和使用PowerBuilder多年所得来的 经验无私地奉献给广大的读者 衷心期望你通过本光盘的学习能成为PowerBuilder高级开发人员中的一员
什么是PowerBuilder
在开始学习PowerBuilder之前 首先要弄清楚的问题是什么是PowerBuilder 它是用来干什么的 它的特点又是什么 只有知道了PowerBuilder的功能和特点所在 我们才能知道什么时候应该选用PowerBuilder作为我们的应用程序开发工具
我们知道 数据库应用是当前计算机应用的一个非常重要的方面 而在目前的数据库应用技术中普遍采用的就是客户机/服务器体系结构 在这种体系结构中 所有的数据和数据库管理系统都在服务器上 客户机通过采用标准的SQL语句等方式来访问服务器上数据库中的数据 由于这种体系结构把数据和对数据的管理都统一放在了服务器上 就保证了数据的安全性和完整性 同时也可以充分利用服务器高性能的特点 正因为客户机/服务器体系结构的这些优点 因而得到了非常广泛的应用
PowerBuilder是著名的数据库应用开发工具生产厂商PowerSoft公司推出的产品(PowerSoft现已被数据库厂商Sybase所收购) 它完全按照客户机/服务器体系结构研制设计 在客户机/服务器结构中 它使用在客户机中 作为数据库应用程序的开发工具而存在 由于PowerBuilder采用了面向对象和可视化技术 提供可视化的应用开发环境 使得我们利用PowerBuilder 可以方便快捷地开发出利用后台服务器中的数据和数据库管理系统的数据库应用程序
lishixinzhi/Article/program/SQL/201311/16425
以上就是关于Powerbuilder为什么会没落现在有那种工具可以替代PB做数据库开发全部的内容,包括:Powerbuilder为什么会没落现在有那种工具可以替代PB做数据库开发、PowerBuilder 8.0实用程序设计100例中的数据文件如何导入、深入了解PowerBuilder的数据窗口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)