PB11的WEBFORM应用使用

合集下载

PB11在webform下DW中回车键的解决

PB11在webform下DW中回车键的解决

PB11在webform下DW中回车键的解决
像PB11的C/S模式一样,DW中不支持回车键,我们一般是使用send消息机制实现回车的功能。

在webform下DW中的回车键必须在client-side中解决,也就是说要修改js文件,通过实验,发现PB11在安装文件夹下的dwcommon.js 文件中,具体形如:
C:\Program Files\Sybase\PowerBuilder 11.0\DotNET\webroot\scripts\dwcommon.js中修改
函数是:HTDW_inputKeyDown()
原来的:
if (event.keyCode == 9 && !event.ctrlKey && !event.altKey && !event.shiftKey)
ProcessTab(obj);
修改为:
if ((event.keyCode == 9 || event.keyCode == 13) && !event.ctrlKey && !event.altKey && !event.shiftKey)
ProcessTab(obj);
PB11发布时,会将此文件夹下的所有文件复制到发布的WEB应用下的相同文件夹下,形如:
C:\Inetpub\wwwroot\dx_main\scripts
如果你不想改变PB11系统本身的,也可在发布完后只去修改应用下的这个文件。

PowerBuilder 10.5 11新功能概述(PDF)

PowerBuilder 10.5 11新功能概述(PDF)
AutoPostBack
PowerBuilder Web Forms
提高性能的使用建议
尽量使用只读的 DataWindows 使用Master-detail DataWindow
Master DataWindow is readonly Script callback
尽量不使用 Timer事件 尽量不使用 Yield 方法 不要同时打开很多 response windows 使用 Web style
PowerBuilder 10.5/11 新功能概述
Harry Zhang Senior Software Engineer, Sybase Asia Development Center.
议程
PowerBuilder 10.5新功能 PowerBuilder 11.0新功能 展望PowerBuilder的发展 Q&A
支持
Sybase ASE Oracle MS SQL Server
DBI 重构
DBI(Database Interface)->DSI(DataSource Interface)
WEBSERVICES增强
进一步增强了 Web Services 支持
更好的数据类型支持(Document/Literal/…) 进一步提高了和 WebService的交互性
不常做的工作 可能完成
通过PB与.NET的互操作性来完成
PowerBuilder for .NET概述
使用PowerBuilder 开发 .NET应用程序
编译PowerBuilder代码成为.NET assemblies 全新的.NET系统运行时库 (Managed PB Runtime)
基于.NET API,使用C#和Managed C++重新实现了PB .NET运行 时库 增强语言特性, 系统类和系统函数 应用程序类型支持

关于PB11的Webform方式下客户端代码的深入编程

关于PB11的Webform方式下客户端代码的深入编程

关于PB11的Webform方式下客户端代码的深入编程PB11为了不致使在客户端浏览器上修改DW的数据时产生过多的服务器端的回调请求(PostBack,现象是屏幕闪烁厉害,特别是慢机器),提供了客户端事件脚本JavaScript语言来解决,一般是这样的方式调用:1. 首先使用任何文本工具编写自己的js脚本,假设命名为:myscripts.js2. 在含有DW的窗口OPEN事件中书写如下形式的代码:#IF DEFINED PBWEBFORM THENdw_1.JavaScriptFile = "myscripts.js"dw_1.OnClientItemChanged = "bmbh_ItemChanged"#END IF上面的意思是说:如果是发布为WebForm应用,则给DW_1设置一个脚本处理函数,当client端的项目值发生改变时,调用JS文件中的“bmbh_ItemChanged”函数(来处理有关检查、计算等需求)如下是JS中该函数的具体代码:function requ_bmbh_ItemChanged(sender, rowNumber, columnName, newValue){if(columnName == "bmbh"){// The default function is invokedreturn PBDataWindow_ItemChangedReject(sender, rowNumber, columnName, newValue);}else{//do nothing}}意思是:当字段“bmbh”的值改变时会自动执行PBDataWindow_ItemChangedReject(会产生回调),因此当你在DW中编写了 PB 的PowerScript脚本时,实际上就会执行你的代码,你可以在ItemChanged事件中编写你的处理BMBH改变的代码,例如处理一个 DDDW来筛选指定部门的职工。

PB11下的WebForm客户端打印输出的处理

PB11下的WebForm客户端打印输出的处理

PB11下的WebForm客户端打印输出的处理PB9后已经支持输出PDF类型的打印输出。

但如果要通过PB11的WebForm 模式在客户端输出PDF文档,必须安装SYBASE提出的虚拟打印驱动。

以下是我的经验:1.下载安装GhostscriptGhostscript是一个多功能的Postscript数据处理程序,能把Postscript 转换成不同的格式,是一套基于Adobe、PostScript及可移植文檔格式PDF的页面描述语言等而编译成的免费软件。

安装GS时,使其在PB11下能工作,一要注意其版本。

这点让我走了很多弯路,因为在网上查找时,我找到的是GS6.05,结果一直调试不通,要么生成不了PDF文件,要么生成的文件使用Adobe打不开,请求sybase的newsgroups 也搞不清什么原因,后来我下载了一个gs7.06后,一切问题就解决了。

点这里下载gs706w32.exe然后直接安装即可。

另外需要注意的安装位置,因为按SYBASE的提示装在PB软件安装目录下的Shared\PowerBuilder\gs下,最后的目录结构应该是:2. 添加虚拟打印机在 Shared\PowerBuilder\drivers 下建立一个批处理文件,内容是(注意是在一行内):rundll32.exe printui.dll, PrintUIEntry /if /f .\\ADIST5.INF /r "LPT1:" /b "Acrobat Distiller" /m "Acrobat Distiller"然后执行它创建一个虚拟打印机,然后将打印机的名字修改为“Sybase DataWindow PS”3. 修改打印机的用户操作权限如果没有ASPNET用户,必须先添加。

(注意我的是在XP下的操作)最后将打印机设置为默认打印机。

4. 最后就可输出dw的内容了示例代码如下://dw_report的“Data Export”下的“format to configure”修改为PDF //Saving as PDF select the distill methoddw_report.Object.DataWindow.Export.PDF.Method = Distill!//select printerdw_report.Object.DataWindow.Printer = "Sybase DataWindow PS"dw_report.Object.DataWindow.Export.PDF.Distill.CustomPostScript=" Yes"//printing pdf filesdw_report.SaveAs ( "zzz.pdf",PDF!,false)#if defined PBWEBFORM thenDownloadFile("zzz.pdf", true) // true=打开, false=下载#end ifdw_report.print() //如果要显示内定的打印任务窗口。

pb11新特性及增强内容(精)

pb11新特性及增强内容(精)

.NET Web Forms转化
选择win32 DLL文件
.NET Web Forms转化
选择JavaScript文件
.NET Web Forms转化
选择发布的类型
.NET Web ForБайду номын сангаасs转化
确认发布
.NET Web Forms转化
.NET Web Forms转化
所有属性都可以在IIS服务器的对应应用上修改, 在PB中修改需要重新发布。
记忆Retrieval Arguments
仅在设计时有效 Composite样式的DW无效 新建的DW必须保存,退出再打开后才有效。
Powerbuilder11.0的其他增强内容
窗口控件的增强
增加了打开和关闭窗口的动画效果 增加了窗口透明度的属性
系统函数的增强
GetByteArray实现blob数据转化为byte数组。 Blob函数支持byte数组作为参数。 各种Trim函数增加第二个参数,可以去除任何空 白的符号,包括回车换行和TAB等。 SetFilter函数增加\s选项,对字符串的比较使用 Ascii模式,不加选项使用的是字典模式。例 如:”#2 >= 'a' and #2 < 'c' \s”
DataWindow的增强
UseEllipsis属性,Edit或EditMask样式的列可以 选择UseEllipsis属性,隐藏显示不了的数据。
设定了Autosize Height属性后无效 设定了Escapement属性后无效
Treeview样式的DW
隐藏树结点(设置height为0) 保留展开状态挪动节点 特有的节点展开等事件无需手工添加
PowerBuilder 11.5(2008第三季度)

PB11简介PPT课件

PB11简介PPT课件
FindItem,SelectItem、ExpandItem等 树形控件与数据集相互配合使用
2021/7/22
23
谢谢大家!
个人观点供参考,欢迎讨论
2021/7/22
17
2.9 应用程序开发及发布
创建一个应用调试 利用开发工具编译成Dll或PBD 发布EXE、Dll(PBD) + Pb的支持动态库,类
似于Java的虚拟机
2021/7/22
18
3.1 Dw数窗的详细介绍
不同风格数窗使用介绍(12种风格) 如何设计数窗 数窗检索数据,正常检索、带参数检索 数窗更新数据 数窗的数据源介绍(无数据源、SQL语句组
PowerBuilder是著名的数据库应用开发工具生产 厂商PowerSoft公司推出的产品(PowerSoft现已 被数据库厂商Sybase所收购),它完全按照客 户机/服务器体系结构研制设计,在客户机/服 务器结构中,它使用在客户机中,作为数据库 应用程序的开发工具而存在。由于PowerBuilder 采用了面向对象和可视化技术,提供可视化的 应用开发环境,使得我们利用PowerBuilder,可 以方便快捷地开发出利用后台服务器中的数据 和数据库管理系统的数据库应用程序。
*.Pbl,*.PBD,*.Pbw,*.pbt,*.pbr,*.dll的介绍。
2021/7/22
15
2.7 PB开发工具与Sql语句
嵌入式SQL语句 4种动态游标 代码中直接写Sql语句 数窗与视图 数窗与存储过程
2021/7/22
16
2.8 应用程序开发及发布
创建一个应用调试 利用开发工具编译成Dll或PBD 发布EXE、Dll(PBD) + Pb的支持动态库
2021/7/22

PB数据窗口技巧问答

PB数据窗口技巧问答

PB数据窗口技巧问答一、控制数据窗口的显示方式1.使用数据窗口的打开方式:数据窗口可以在工具栏上选择打开方式,如:只读、可更新、可插入等。

3.使用数据窗口对象属性:在对象属性中设置数据窗口的显示方式,如设置为只读或可更新。

二、使用过滤器1. 使用过滤器自动过滤:在PowerBuilder中,可以通过在数据窗口对象的过滤器属性中设置过滤条件,自动过滤查询结果。

2.使用过滤器窗口:在运行时,可以使用过滤器窗口手动设置过滤条件,实时过滤查询结果。

三、使用计算列1.创建计算列:计算列用于在数据窗口中显示计算结果。

可以通过在数据窗口对象的计算列属性中设置计算表达式来创建计算列。

2. 使用计算列函数:PowerBuilder提供了一系列的计算列函数,可以通过在计算列属性中设置函数来实现复杂的计算操作。

四、使用排序功能1.使用数据窗口控制台进行排序:在数据窗口控制台中,可以使用排序按钮对查询结果进行排序。

2.使用数据窗口对象属性进行排序:在数据窗口对象的排序属性中设置排序条件,可以在运行时自动对查询结果进行排序。

五、使用数据窗口查询功能1.使用查询按钮:在数据窗口中添加查询按钮,可以方便用户执行查询操作。

2.使用自定义查询功能:可以在数据窗口对象的SQL属性中设置自定义查询语句,从而实现更高级的查询操作。

七、使用导航功能1.使用导航按钮:在数据窗口中添加导航按钮,可以方便用户浏览查询结果。

2. 使用导航函数:PowerBuilder提供了一系列的导航函数,可以通过调用这些函数实现数据的导航操作。

八、使用图形功能1.添加图形控件:可以在数据窗口中添加图形控件,用于显示图形数据。

2. 使用图形函数:PowerBuilder提供了一系列的图形函数,可以通过调用这些函数实现图形数据的处理和显示。

九、使用数据窗口布局功能1.使用数据窗口布局:可以在数据窗口对象的布局属性中设置布局方式,实现不同的显示效果。

2.使用数据窗口常规属性:在常规属性中,可以设置数据窗口的大小、位置、标题等。

pb11+webservice开发分布式三层应用

pb11+webservice开发分布式三层应用

pb+webservice开发分布式三层应用(演示或测试例程代码:WebserviceExample.rar)一、 WEBSERVICE服务端的开发1、新建立一个workspace工作区先择FILE菜单下的NEW,选择标签页‘Workspace’新建一个工作区。

点击后出现下图在文件名处输入工作区的名称,假设我们的工作区名为webserver,单击保存按钮。

这样工作区就建立成功了。

2、建立一个.net web service 应用点击FILE菜单下的NEW选中.net web service 点击ok按钮点击next按钮点击next按钮这里我们不修改pbl库名,当然你可以按你的意思修改库名,点击next 按钮。

一直点Next按钮直到出现这里需要注意一点,如果你当前的IIS端口,不是默认的80 ,假设是7000的话,那么在localhost后面要加上“:7000” ,。

再点击一次next直到finish按钮。

3、连接数据库(建立测试环境所用文件CreateENV.sql)我们先来建立一个数据库的连接以为后期的webservice服务提供一个连接。

打开系统生成的n_webservice对像在其constructor里面写上SQLCA.DBMS = "ODBC"SQLCA.AutoCommit = FalseSQLCA.DBParm = "ConnectString='DSN=localdbora8;UID=scott;PWD=tiger',PBCatalogOwner='scott'"我是拷贝的这里你可以修改成你的数据库连接参数。

数据库连接建立完成后,我们再建立一个uf_retrieve的方法用来提取数据库数据long ll_row,ll_returnrowstring ls_oldsql,ls_newsql,ls_err_a,ls_errorint i,LI_WHEREdatastore ds1ds1 = create datastoreconnect using sqlca;if SQLCA.SQLCode <> 0 thenp_ref_returnerr="连接数据库出错,请检查数据库连接参数。

pb11新特性及增强内容

pb11新特性及增强内容

#1Pb11.1是当前pb的最新版本所有新特性都是相对于pb10.5而言#2Pb原有的target包括pb app相关的3个target(application 从空白新建立application,也是最常用的,existing application 对于低版本pb程序的转化,template application在模版的基础上建立application)jsp相关的2个target(区别仅是是否带有版本控制),服务器组建的target 因为app server plug-in而一分为二(easerver和其他server)。

这三种再加上新的.net转化,现在一共有4种pb的target。

其中,仅jsp的target不使用powerscript,pb11之后jsp target 将从pb中移到sybase的另一个产品workspace中。

数据库接口中,sql(snc)和sybase 的是新接口,其他仅是一些功能上的提升。

除了数据库接口,其他都要详细讲,数据库接口开发人员只是作为使用者。

#3Ellipsis就是英语的省略号,这样一行显示不下的数据可以在数据后显示省略号,该列得到焦点后,恢复正常显示。

如果你的程序想要转化.net webform的话,不要使用该属性,它属于转化后自动不被支持的属性之一,你如果想知道你的应用中都有哪些属性不被支持,那么你可以直接转化,pb11的另一个新特性,就是在消息输出区增加了unsupport feature,在转化时显示哪些特性不被支持。

Treeview样式的DW是pb10.5才出现的,估计还会逐步改善,个人感觉最需要改善的是他不能支持任意级别的数,只能支持固定级别的数原来的设置height=0,可以消除数据,但是不能消除连线,等于实际没法应用。

#4窗口可以同时指定打开和关闭的动画效果,可以指定效果的持续时间。

透明度可以指定一个1到100之间的数值,使窗口呈现半透明效果(0为不透明,数字越大透明度越高)例子中的过滤条件将留下小写a,b开头的纪录,但是如果不用/s选项,除了小写a,b字母开头的以外,大写A,B开头的纪录也将被留下。

高版本PB问题续

高版本PB问题续

关于把企星ERP升迁到高版本PB的若干问题(续)小试PowerBuilder 11.0新功能PB11增加了几种对微软dotNet支持的新功能。

其中之一是可以把原来开发的C/S程序转成网页,PB11叫做生成Web Form。

现在就尝尝鲜吧。

小试一下,看看有什么效果。

环境搭建既然是网页的东西,又是dotNet就一定要安装Windows的IIS,而且是5.0及以上。

既然是支持微软dotNet的东西,一定要安装微软的FremeWork SDK 2.0。

除此之外,PB11还要求事先安装微软的“IE WebControls”,这东西只有1.0版,而且据说微软已经不再支持了。

试验时使用了一台P III 933,256M内存,30 G硬盘,Windows XP sp2。

屏幕分辨率为800×600。

试验效果在看这篇文章的其它内容之前,先看看转换效果吧。

如果有兴趣,看完效果再耐着性子看下集《用PB11生成Web Form的操作过程》的内容。

试验时先用PB 651做了两个简单的程序,升迁成PB11。

转换一下试试,能够成功。

然后直接用企星ERP演示版的PB651基类,升迁成PB11转换一下,看看对基类支持到哪种程度。

下面是一些屏幕截图。

·QXERP登录界面因为制作时没有修改PB11默认的屏幕分辨率,欢迎图片超出了我的800×600的范围。

·QXERP主菜单界面也是屏幕分辨率的关系,显示成这个样子了·左边的树展开一层之后的主菜单界面·在部门管理中想用菜单查看组织结构图·能够打开组织结构图的窗口,说明菜单是可用的·在表管理中能够知道支持标签页(TabPage)·人员基本信息管理,支持动态生成的数据窗口·支持下拉数据窗口·双击“性别”字段,弹出对话框·支持下拉日历对话框·数据变更后未保存,退出时弹出询问对话框·工具栏图标有小提示初步印象从上面的一些屏幕截图看好像还比较完美,不像相像的那么糟糕。

PB11.5+WEB客户端编程技巧总结

PB11.5+WEB客户端编程技巧总结

PB11.5+WEB客户端编程技巧总结PB11.5+WEB客户端编程技巧总结PB11.5WEB客户端编程技巧总结一、概述用PB11.5把现有C/S程序转换成WEB应用程序后,保留了大部分C/S环境下的代码,并且大部分都能执行过去。

但是在BS平台下,原来的PB代码从客户端转成了IIS上的服务代码,原的“客户端”就成了浏览器,转换后的客户端编程其实就是面向浏览器的编程。

根据目前我对PB11.5所了解的情况,PB11在代码方面可以使用条件编译方式嵌入.NET代码,其实我感觉.net里能实现的内容,用PB代码也基本能实现,.net 里不能实现的,PB也可实现(如datawindow),但这些都属于服务端的编程范畴,实际应用中很少会碰到在PB里再嵌入.net代码的,除非要写一些很特殊的代码,所以,可以说,服务端方面仅用PB代码就可以彻底解决。

但实际上,这种纯PB代码的程序一发布成WEB后,会存在不少问题,在C/S 环境下,要完成一个操作往往需要多个交互过程,如“打开窗口、选择行、输入数据、返回、刷新页面”这么一个过程,转成B/S后,运行是这样的“打开窗口(POSTBACK)、选择行(POSTBACK)、输入数据(回车后POSTBACK)、返回(POSTBACK)”,那么多的POSTBACK使得操作变得很笨重,就连简单的一个MESSAGEBOX,都要2次POSTBACK:“打开消息窗(POSTBACK)、点确定(POSTBACK)”。

因此,使用PB11开发WEB程序将要面临一个很严峻的问题:如何提高客户端的性能,减少POSTBACK次数。

值得庆幸的是,PB11.5的WEB页面使用了AJAX技术,POSTBACK并不会产生整个页面的提交,而是部分提交。

另外,PB11.5还提供了不少客户端的编程接口,可以通过这些编程接口进一步优化页面。

那么,有哪些地方可以运用javascript 和html代码优化页面呢?1、数据窗口对象appendedhtml属性。

PB11的WEBFORM应用使用

PB11的WEBFORM应用使用

PB11的WEBFORM应用使用.NET功能一例使用PB11也有一段时日了,并尝试使用它正在开发和完善原有C/S系统或使用ASP制作的网页。

期间获取信息的主要途径是sybase的 newsgroup,今尝试了利用.NET功能实现PB11无法实现或比较麻烦的操作的一个示例,那就是在WebForm中获取有关网络的一些属性。

要使用.NET功能,必须在创建WebForm的Target中加入有关名字空间的DLL,方法是在Target名上右击鼠标,选择“属性”,在如下所示的窗口中点第2个图标加入需要的.NET库,例如System/System.Web等。

然后就可在PowerScript中加入实现代码了。

但因为考虑程序其他功能模块的调试必须在本机的C/S方式下先调通,所以最好使用PB11的“条件编译”,如下所示:#IF DEFINED PBDOTNET THEN// 取得服务器的名字stringls_hostnamels_hostname=.Dns.GetHostName()//取得客户端的IP地址stringclientIPSystem.Web.HttpContext context = system.web.httpcontext.current System.web.httprequest request = context.requestclientIP=request["REMOTE_ADDR"]//取得对应IP地址的客户机的名字clientName = .Dns.Resolve(clientIP).HostName#End IF这里只是一个简单的应用,仅此抛砖引玉而已,更多的实际应用等待我们在研究.NET和PB11的完美结合的基础上去发掘吧。

以下代码可以获取注册用户的名称(不是ASPNET哦)stringuserID#if defined pbwebform thenSystem.Web.UI.Page page = System.Web.HttpContext.Current.Handler;userID = ;#end if处理XML的示例(未验证)stringls_String, ls_User#if defined pbdotnet thenSystem.Xml.XmlDocumentxmlDocSystem.Xml.XmlNodeListxmlElementsxmlDoc = create System.Xml.XmlDocumentxmlDoc.LoadXml(ls_String )xmlElements=doc.SelectNodes&("//n1/n2[@name='"+ls_User+"']/*");#end if。

PBWebForm问题

PBWebForm问题

PowerBuilder 11~12.5的WebForm问题PowerBuilder11及更高版本提供将已经开发完毕的软件转化为类似于B/S的,客户端可以只使用浏览器的WebForm版本。

这个功能看似给熟悉传统PB开发的人员带来极大方便,实际上并没有什么实用性,并不能代替B/S开发。

开发人员还是要踏踏实实去学习B/S开发方法。

还是需要自己去亲自掌握C#(PowerBuilder的转WebForm是把原来程序先转成C#的),不能认为有了就能够偷懒。

一Resize问题(改变大小问题)由原来程序转成WebForm后,Resize的表现很不好。

打开窗口后,窗口中该扩大的控件——例如数据窗口、图片等不能够扩大到预想的大小。

用鼠标点击菜单等,或者出来一个对话框后,才能达到预想大小。

原来的程序在Resize的计算中是以newheight和newwidth为准的。

在WebForm的Target 里有一个Configuration的选项卡,其中的PBWindowDefaultHeight和PBWindowDefaultWidth 分别为指定MDI、MDIHelp及main类型窗口高度和宽度用的,默认值是600和1003。

折合成PB单位为2400和4585,newheight和newwidth就是这个值了。

以此作为Resize的基准,在1024×768显示器上看就会觉得不对头。

PowerBuilder制作出来的网页文件中,有一个default.htm,这个文件将检测当前屏幕分辨率,计算出浏览器工作区的大小,然后带参数启动default.aspx?<参数列表>。

传入的参数将改变PBWindowDefaultHeight和PBWindowDefaultWidth的值。

这样一来使MDI、MDIHelp 及main类型窗口的大小更适合于屏幕,看上去就好多了。

对于MDI或MDIHelp窗口中的Sheet窗口,需要以workspaceHeight()和workspaceWidth()为准来计算。

PPB调用PB11的WEBSERVICE

PPB调用PB11的WEBSERVICE

PPB学习44-PPB调用PB11的WEBSERVICE首先先感谢Q群的深圳-谬谬,把这个问题解决了,我在此基础上做一个例程。

PB11可以向.NET上直接发布WEBSERVICE服务,下面我们就举个例子来看下如何实现这个过程。

以下是例程的工作环境:.net2005,PB11.2,PPB2.5,ASA9,IIS数据库采用ASA9自带的SAMPLE数据库,准备工作,为SAMPLE数据库创建一个系统的DSN。

如下图所示,命名为ASADEMO9。

这个DSN设成服务方式启动,如下图IIS请检查WWW服务是否已经开启,默认网站是否已经启动,如果没有启动可以更改一下WWW端口试下,可能你的80端口被其他程序占用。

如下图所示。

这一切准备好了,下面我们就开始先用PB11发布一个WEBSERVICE,在这个实例中,我要完成的是将一个SELECT的SQL语句做为参数,将这个SELECT语句的结果返回去。

打开PB11,NEW一个TARGET,在下面的对话框中选择.net web service,创建一个发布到.NET上的WEB SERVICE应用下面是一个向导过程,第一页,NEXT,没啥要设置的。

第二页设置是新做一个还是使用一个已有库列表,这里我们选择新做一个。

第一个选项,按NEXT设置PROJECT的名字及PBL和PBT的文件路径,我命名为P_mywebservice,文件路径我就放在下面的目录,大家根据自己的需要放置。

按NEXT这一页是否要增加其他PBL,这里我们没有其他PBL加入,直接按NEXT创建一个用户对象,取名n_mywebservice,如下图所示,按NEXT这页是设置发布到.net上的目录,可以用默认值,如下图,按NEXT添加其他资源文件和目录,这里我们就不填了,按NEXT添加需要的动态库,在我们这个例子里也没有要添加的,按NEXT设置输出,一个是生成SETUP文件,用于安装,另一个是直接发布到IIS 上,我们选发布到IIS上,并且设定IIS的地址,包括端口号。

Pb11编写webservice数据库连接性能研究

Pb11编写webservice数据库连接性能研究

Pb是很好的开发数据库应用的软件,pb8以前可以用其自带的Transport 对象实现三层结构,但pb8以后简单好用的只有easerver,但据说这是很贵的软件,就是盗版也不好找。

Pb11可直接将nvo发布为webservice,这对pb熟手来说是一个很好的事情,可是,习惯了C/S结构开发的思路,用webservice,数据库连接会不会过于频繁?用pb内部的数据库连接方式有没有连接池?Webservice连接性能到底怎样?等等问题,是每个从C/S编程转向B/S编程或采取三层结构编程的人都会涉及到的。

下面就以pb11写webservicepb8调用对其连接池及性能进行测试。

1、单客户端、不连接数据库、pb写的webservice的响应速度测试方案:Pb11 webservice函数of_adder(),累加当前秒钟值 10000 次的结果。

客户端pb8,在不同电脑上,调用1000次。

Webservice代码如下图。

测试结果:耗时25秒,无数据库连接会话。

2、单客户端、连接数据库、pb的webservice的响应速度测试方案1:函数f_connect()连接数据库,函数of_getdbhandle()返回当前连接数据库事务对象的句柄,客户端保持webservice连接(每次调用不重新初始化),webservice 保持数据库连接不断开。

客户端pb8,在不同电脑上,调用100次。

客户端代码如下:string ls_wsdllong i, jlong numssetpointer(hourglass!)//连接系统库SQLCA.DBMS = "IN7 INFORMIX-7"SQLCA.Database = "sysmaster"erId = "informix"SQLCA.DBPass = wf_sa_pwd()SQLCA.ServerName = "192.168.0.1@server1"SQLCA.AutoCommit = FalseSQLCA.DBParm = "CommitOnDisconnect='No',DisableBind=1"connect using sqlca ;if sqlca.sqlcode <> 0 thenmessagebox('错误',"连接系统库失败",stopsign!)returnend iftime t1,t2t1 = now()st_times.text = ''//循环调用for j = 1 to long(sle_cs.text)yield()if not isvalid(w_1) then exitst_nums.text = string(j)//未创建 webservice连接则创建 ( ws为窗口实例变量 )if not isvalid(ws) thenws = Create oleobjecti = ws.ConnectToNewObject("MSSOAP.SoapClient30")if i <> 0 thendestroy wsmessagebox('提示 ','请检查是否安装了SoapSDK3.0和XML4.0', exclamation!)returnend ifws.ClientProperty("ServerHTTPRequest",true)ls_wsdl = profilestring("soap.ini", "soap", "url", "")ws.mssoapinit(ls_wsdl)ws.ConnectorProperty("Timeout",180000)end if//webservice 方法中每次连接数据库且用完即断开st_dbhandle.text = ws.of_getdbhandle() //webservice方法连接数据库时的dbhandle()//st_dbhandle.text = ws.of_adder()//从 sysmaster 库中查看 webservice 中每次连接是否都释放了,SessionID 是否保持一个// myvpc 为webservice所在主机名(web服务器主机名)select count(*) into :nums from syssessions where hostname = 'myvpc' using sqlca ;if not isvalid(w_1) then exitif sqlca.sqlcode =0 thenst_nums_dq.text = string(nums) //循环第j次时连接数据库的sid数if long(st_nums_min.text) > nums then st_nums_min.text = string(nums) if long(st_nums_max.text) < nums then st_nums_max.text = string(nums) end ifif not isvalid(w_1) then exitnextt2 = now()st_times.text = string(SecondsAfter(t1, t2))if isvalid(sqlca) thendisconnect using sqlca ;end ifif isvalid(ws) thenws.DisconnectObject ( )destroy wsend ifwebservice代码如下图:测试结果:耗时81秒,最大SID数100,每次dbhandle均不同。

pb11数据窗口新特性

pb11数据窗口新特性
所有的这些特性都可用于传统的客户机/服务器、Windows Forms、智能客户端应用和 InfoMaker。
工具提示(Tooltips)
当你拿到 PB 11.5 的软件拷贝时,你会注意到,现在所有的数据窗口控件和列都有了一 个额外的属性选项卡(见图 1)。
图1
这些属性的意思和你所认为的完全一样,它们就是那样易用。如果你无法确定,那就试 试随便设置一下,然后将鼠标移到预览窗口(见图 2)。
多格式文本(Rich Text)作为一种的新的列编辑风格被引入。你的数据再也不必只能是 以单一的颜色和字体来展示了,而且使用它不会比使用其它编辑风格费事费力。图(Graph), 不管是单独的控件还是在数据窗口中,都有了一种新的 3D 外观。我们增强了对位图的支持, 通过使用 PNG 格式来使用透明色。
文本透明度 字体选项卡拥有一个新的属性:透明度。
多格式文本编辑风格
为了允许同一个字段中可以使用不同的字体和颜色,我们引入了一种新的编辑风格,那 就是多格式文本编辑风格。多格式文本编辑风格类似于纯文本编辑,不同的是它允许使用不 同的字体和文字颜色。每当此风格的列被编辑时,都会弹出一个字体工具栏。当列失去焦点 时,工具栏自动消失。工具栏可以被移动,它的最后一次位置将被记下来。
请注意渐变,来进行渐 变。
图6 “比例(Scale)”、“焦点(Focus)”和“伸展(Spread)”属控制从一个渐变色到另一个
渐变色这个过程的各个不同方面。在此,我就此打住,不再多费口舌来描述这些属性了,当 你拿到你的 PowerBuilder 11.5 的拷贝时,你可以自己试试。11.5 中数据窗口的特性被设计为 “心想事成”(借用同事 Reed Shilts 的术语):你对程序做出某些修改,你就能立刻见到效 果。 数据窗口的背景

PowerBuilder+Web+Form+应用开发的转换特性探讨

PowerBuilder+Web+Form+应用开发的转换特性探讨

PowerBuilder+Web+Form+应⽤开发的转换特性探讨PowerBuilder 主題⽂章:PowerBuilder Web Form應⽤開發的轉換特性探討前⾔PB開發Web應⽤,最⼤的特⾊就是『快』,如果⾮要給⼀個⽐喻的話,PB開發⼯具就像為Web開發鋪設了⼀條⾼速鐵軌上,以C/S的程式設計⽅法為起點,以Web應⽤為終點,程式的轉換與部署就像運作在上⾯的⼦彈列⾞,保證了Web專案能夠穩定、⾼速地的到達⽬的地,過程中沒有必要拐彎繞路、遇河搭橋、遇⼭鑽洞,不會遇到紅綠燈也沒有迷路的⾵險,⼀旦準備好就能⼀步到位。

這樣的模式對於熟悉PB的程式設計師⽽⾔,⾄少有兩個好處:1.以無痛、無縫的⽅式介接兩個全然不同架構的應⽤開發領域(C/S→Web),無須重頭學習全新的語⾔或技術,⽣產⼒不中斷。

2.簡單快速的開發部署流程,可減少程式設計師犯錯的機會,讓程式設計師將全部⼼⼒放在程式邏輯本⾝的設計上。

但凡事沒有⼗全⼗美,C/S與Web兩個不同架構天⽣存在的差異是無法輕易抹去的,換⾔之,不是所有的物件都能夠被百分之百轉換為Web應⽤的,所謂特快列⾞,在初始的設計上就必須考慮到轉換成Web應⽤後的特性,⼀體成形,難以變動既定的結果,因此程式設計師若⼀無所知,便無法好好利⽤PB開發⼯具的⾧處,開發⼯作也就會事倍功半。

也因此本⽂將探討以PB11⼯具進⾏Web應⽤開發時必須注意哪些程式碼轉換後的差異,以及有哪些類別、物件在Web應⽤中是不被⽀援的,以便輔助程式設計師更能掌握Web應⽤開發的⾛向,並妥善利⽤PB開發⼯具⽅便、⾼速開發的特性。

PB .NET Web Form開發,Un-support Feature與轉換後運作特性說明1 Datawindow部份:在這個部分我們⾸先就Datawindow轉換成Web Form後有哪些不⽀援的功能與特性轉化作⼀介紹。

October 09 M-Power eNewOctober 09 M-Power eNew1.1 Presentation styles:除了RichText 與OLE 以外的其他格式都能⽀援,⽽原本C/S 架構中與Datawindow 相關的對話框(如:Specify Retrieval Arguments, Specify Retrieval Criteria, Import File, Save As, Print, Sort, Filter, and Crosstab),在Web 下也都能夠⽀援。

pb新特性及增强内容

pb新特性及增强内容
DataWindow可以用WebService作为数据源 Application Server Plug-in
pb11新特性及增强内容
DataWindow的增强 UseEllipsis属性,Edit或EditMask样式的列可以选择 UseEllipsis属性,隐藏显示不了的数据。 设定了Autosize Height属性后无效 设定了Escapement属性后无效 Treeview样式的DW 隐藏树结点(设置height为0) 保留展开状态挪动节点 特有的节点展开等事件无需手工添加 记忆Retrieval Arguments 仅在设计时有效 Composite样式的DW无效 新建的DW必须保存,退出再打开后才有效。
pb11新特性及增强内容
谢谢!
pb11新特性及增强内容
OrcaScript增强 可以使用unicode文件 支持创建Windows Forms
Retrieve Argument可以指定空值。
pb11新特性及增强内容
转化的前置工作 安装IIS 注册于IIS上(aspnet_regiis.exe -i ) 选择版本 安装IE Web Control(可选) 给ASPNET (IIS 5), IIS_WPG (IIS 6), 或 IIS_IUSRS (IIS 7) 用 户或用户组授权。 (Vista) 修改程序所在的application pool为Classic managed pipeline 模式,(默认为Integrated managed pipeline模式) (Vista)修改程序所在的application pool,选择Enable 32-bit Applications选项。
pb11新特性及增强内容 1.新建.NET Web Forms Target

webform理解

webform理解

webform隶属于架构下的一个重要组成部分,负责封装用于用户端显示的数据。

在EasyJWeb中,WebForm是一个非常重要,也是使用最为频繁的对象,他充当了在视图及程序之间传输、处理数据的媒介。

下面是WebForm中的常用用法:1、WebForm中包含了视图页面中传输进来的数据,可以通过form.get("键名")的方式来读取这些数据,也可以通过form.set("属性名",值)来改变视图中传过来的数据值。

2、可以把表单中传来数据,通过WebForm提供的快捷方法toPo可以把表单中的数据快速存入模型(域或Command)对象中。

如form.toPo(Person.class)可以把表单中的属性值经过转换后存入到Person的对应属性中,并返回一个Person实例。

3、WebForm的toPo方法还会数据校验,可以通过参数设置当校验未通过时是否回滚等。

4、程序中通过WebForm把数据发送到视图模板。

要在程序中把一个对象添加到视图,使用form.addResult("名称",obj)来添加,这里即可在视图模板中使用"$对象名"来访问该对象。

5、WebForm的addPo方法可以把一个对象根据其中的属性名称,传到视图中。

如form.addPo(person);则在视图可以通过$name来访问person对象的name属性值。

-------------------------------------------------------------------------------------------------------------------------------- 首先WebForm即web窗体包含两个页面文件:aspx前台页面和cs后台页面文件。

通过反编译器Reflector我们可以看到在Dll程序集中前台页面和后台页面分别生成了两个不同的类,而且前台页面aspx类继承于后台页面CS类。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PB11的WEBFORM应用使用.NET功能一例
使用PB11也有一段时日了,并尝试使用它正在开发和完善原有C/S系统或使用ASP制作的网页。

期间获取信息的主要途径是sybase的 newsgroup,今尝试了利用.NET功能实现PB11无法实现或比较麻烦的操作的一个示例,那就是在WebForm中获取有关网络的一些属性。

要使用.NET功能,必须在创建WebForm的Target中加入有关名字空间的DLL,方法是在Target名上右击鼠标,选择“属性”,在如下所示的窗口中点第2个图标加入需要的.NET库,例如System/System.Web等。

然后就可在PowerScript中加入实现代码了。

但因为考虑程序其他功能模块的调试必须在本机的C/S方式下先调通,所以最好使用PB11的“条件编译”,如下所示:
#IF DEFINED PBDOTNET THEN
// 取得服务器的名字
stringls_hostname
ls_hostname=.Dns.GetHostName()
//取得客户端的IP地址
stringclientIP
System.Web.HttpContext context = system.web.httpcontext.current System.web.httprequest request = context.request
clientIP=request["REMOTE_ADDR"]
//取得对应IP地址的客户机的名字
clientName = .Dns.Resolve(clientIP).HostName
#End IF
这里只是一个简单的应用,仅此抛砖引玉而已,更多的实际应用等待我们在研究.NET和PB11的完美结合的基础上去发掘吧。

以下代码可以获取注册用户的名称(不是ASPNET哦)
stringuserID
#if defined pbwebform then
System.Web.UI.Page page = System.Web.HttpContext.Current.Handler;
userID = ;
#end if
处理XML的示例(未验证)
stringls_String, ls_User
#if defined pbdotnet then
System.Xml.XmlDocumentxmlDoc
System.Xml.XmlNodeListxmlElements
xmlDoc = create System.Xml.XmlDocument
xmlDoc.LoadXml(ls_String )
xmlElements=doc.SelectNodes&
("//n1/n2[@name='"+ls_User+"']/*");
#end if。

相关文档
最新文档