在用VB编数据库程序的时候,关于表格的打印,好象VB的功能不如PB,不知如何解决。请大家帮忙。谢谢

解决方案 »

  1.   

    我认为是各有所长,PB的datawindow是VB中任何控件不能替代的。和数据库绑定很容易实现快速应用开发。不过按多层式体系结构开发还是VB要好一些。
      

  2.   

    我用vb.
    pb用的总是不痛不痒的感觉.
      

  3.   

    快速应用程序开发工具NSTL关于微软产品的声明 这个报告由NSTL提供。根据NSTL与微软公司的合约,对于微软公司产品所提供的服务,NSTL不保证数据的精确、充分和完整。对于所有引用报告的内容的个人或团体,NSTL不做任何授权,一切后果自负。本报告中提到的产品如果把报告内容用于商业的或其它的目的,NSTL也不做任何授权。 评测说明
    NSTL是为微型计算机业界进行硬件和软件测试的最主要的中立机构,主要是向PC界提供高质量的服务和测试工具。对新推出产品或已有产品的兼容性、性能、可用性、容错测试以及BIOS评估等方面进行评价,NSTL有丰富的实施客观测试的经验。NSTL凭借熟练和完备的能力,完全可以给客户提供高质量的、有效的方法完成测试。 微软公司与NSTL签定合约,让其对Windows 95和Windows NT上主要的快速应用程序开发(RAD)工具进行比较。参加评估的产品是:微软公司的Visual Basic 6.0,Sybase公司的PowerBuilder 6.0和Inprise公司(先前是Borland国际公司)的Delphi 4.0。 可用性/生产能力的评价结果(概要)三种产品中Visual Basic最易于使用。到目前为止Visual Basic具有最好的数据库开发工具,创建数据库窗体和报表十分简单,只要把数据库的字段从数据库浏览器窗格里拖到窗体或报表中。Visual Basic使您在开发环境中可以完全控制数据库:可修改和创建表,可编辑和调试存储过程,可在开发环境中可视化地创建SQL查询。 操作Web站点也同样十分简单。第一次创建Web站点时,只需简单地双击app wizard(Web站点已经建立),然后点击“run”,您就有了一个漂亮的站点。使用Visual Basic也可以动态调试的Web站点,点击debug选项就会在Internet Explorer中打开相应的页。有了这个调试器,Visual Basic成了唯一支持COM的工具。Visual Basic有最好的在线文档,与其Web站点保持实时的连接。 Delphi 4.0在加入了代码浏览器和多项目管理器后,与其以前版本相比生产能力有很大提高。但不幸的是,其代码中的错误以及不完全的文档使人们在学习使用时感到吃力。Delphi的数据库编程工具在三者中是最差的。Inprise SQL Explorer是一个独立的数据库浏览应用程序,几乎没有与开发环境的进行集成。用于调试Microsoft Internet Information服务器的代码段是错误的,而用于调试Transaction Server的代码段没有任何用处。在Delphi中配置Borland Desktop Engine是件困难的问题,其帮助文档或管理工具中几乎没有什么指导。 PowerBuilder 6.0比以前的版本有所改进,但仍然很不够。即使是PowerBuilder极力鼓吹的DataWindows,与Visual Basic中新的拖放式数据库工具相比仍显得繁琐,新的调试器比老版本的要好,但仍没有达到Visual Basic或Delphi调试器的高度。 在PowerBuilder开发环境中其Web开发模型一直是最差劲的。PowerBuilder的Web模型容易掌握,但由于不能动态调试Web站点,因此没什么吸引力。不过另一方面,PowerBuilder具有优秀的集成化报表方案以及完整的在线文档。 性能评价结果(概要)Visual Basic和Delphi性能的比较不相上下,二者都带有很好的代码编译器。Visual Basic的编程强调ODBC和ADO数据库访问,这比Delphi的BDE要快。在Delphi中,也可以使用不完整的ODBC和ADO以获得较好性能,代价是许多支持可视化的工具不可用。Delphi带的ISAPI Web模型比Visual Basic基于COM的模型更快,不过二者都很快,差别不大,而Visual Basic的Web站点可更好地升级到多处理器的机器上。两种编译器都十分快,编译几乎是在瞬间完成。从性能上看,Delphi与以前的两种版本相比几乎没有改进,Visual Basic 6.0由于使用了新的OLEDB驱动程序,数据访问性能有很大提高(比5.0),其他方面的性能与5.0类似。 在性能方面PowerBuilder不在同一档次上。它在客户机/服务器方式下很慢,在三层开发时更慢,而在Web应用中慢得令人认为它停止运行了。ISAPI连接不工作,使性能问题更加糟糕。6.0版与5.0版相比没有明显的性能改善。 功能评价结果(概要)Visual Basic在多个重要领域都十分有用。其调试器在很多方面都表现出色,它可以很方便地跟踪进COM调用和SQL Server存储过程,只有Visual Basic可以使我们在不窃用注册表的情况下调试IIS应用程序,它同样还支持对Microsoft Transaction Server(MTS)组件的调试。它有最完整的扩充开发环境的自动模型。在三种测试产品中,Visual Basic是唯一支持自身生成Alpah代码的产品,这对于创建快速Web服务器十分有用。 Visual Basic带有最强大的“附件包”,企业版中带有Source Safe、SQL Server 6.5、SNA Serve、Microsoft Transaction Server、Microsoft Repository、Visual Modeler以及Microsoft Message Queuing Server等产品的开发版。除了标准的关系数据库接口外,Visual Basic还提供与CICS、IMS、AS/400以及VSAM数据源的接口。 Delphi还具有一些Visual Basic和PowerBuilder中没有的功能。它支持所有的主Web服务:ISAPI、NSAPI、CGI和WIN-CGI。Delphi已经集成了对CORBA的支持,Visual Basic和PowerBuilder不支持。Delphi自带的插件,对指针的支持,以及对自由流程应用程序的支持,还可为高级程序员提供更多方便。Delphi具有最小的附件包,不提供源控件包,提供的SQL开发平台是很少配置的InterBase。Delphi提供Midas和OLEnterprise支持三层结构。 PowerBuilder的附件(主要是ObjectCycle和SQL)并不吸引人。PowerBuilder自身除了支持对传统SQL数据源的访问外还支持对Lotus数据库的访问。PowerBuilder是唯一支持在UNIX平台上执行代码的产品,不过Visual Basic和Delphi在所有支持浏览器的平台上支持Web应。PowerBuilder对Web站点的开发提供很少的支持。 结论和建议Visual Basic是功能最强的企业开发工具包,它可以提供优越的性能,最易于掌握和使用,具有无可比拟的特性,新的OLEDB驱动程序使其在所测试的工具中具有最快的数据访问速度。Visual Basic新的数据库工具是市场上最强大的数据库编程工具,对于与COM相关的应用,使用Visual Basic无疑是最好的。由于其特殊的调试器和自带的COM对象模型,创建ActiveX控件和Microsoft Transaction Server组件十分简单。新的ADO支持以及与Microsoft Transaction Server的集成,使得用Visual Basic开发三层应用十分简单。对于Web开发,相信所有已使用了这一平台的众多开发人员一定为Visual Basic对ASP和IIS的集成所吸引。95%的Visual Basic的开发人员都是开发以数据库为中心的应用程序,新版本的产品将使程序开发更加简便,使产品更加快捷,因此升级到6.0是不用置疑的。 Delphi可提供与Visual Basic相似的性能,但没有Visual Basic吸引人的用户界面,也不具有拖放式的数据库编程工具,与Visual Basic所用的OLEDB驱动程序相比,Borland Desktop Engine更慢,更不可靠,更难管理。Delphi中的ActiveX和COM组件可提供与Visual Basic相类似的性能,但相对难于编程。Delphi有一些高级编程的特性,但程序员更愿意使用C++完成这些工作。如果有紧急的CORBA需求,那么Delphi 3程序员必须进行技术升级。Delphi其他方面的特征,如代码浏览器和微Object Pascal的增强都没有太引人注目。 在Windows平台下做开发选择PowerBuilder是不明智的,做客户机/服务器开发还可以对付,做Web或三层开发令人难以容忍。它的性能问题、错误以及不好的调试器(比早些版本好多了,但仍很差)使其十分不适合这方面的工作。即使您必须在PowerBuilder下工作,那么也只有调试器值得升级。 面向客户机/服务器的RAD合作开发最常用的范型是客户机/服务器编程方法:客户应用程序运行于Windows 95环境下,通过网络连接到数据库服务器。为评价每种工具对客户机/服务器编程的支持,我们考查四种基本功能: 数据库集成。在开发环境下访问SQL(或非SQL)数据源是否比较简便,创建数据库查询以及据此建立窗体和报表是否比较简便。 
    存储过程。在开发环境中控制存储过程是否比较简便?创建(及调试)使用存储过程的代码是否比较简便? 
    生成报表。创建可以作为最终应用程序的一部分运行的SYSIWYG报表是否比较简便? 
    扩充开发环境。创建新的ActiveX控件及COM组件是否比较简便?把第三方的特定COM/ActiveX组件添加到工具中是否比较简便,创建定制/私有组件以及附加工具的工具是否比较简便? 数据库集成新的可视化数据库工具使Visual Basic在数据库访问能力方面超过了Delphi和PowerBuilder。数据库数据会一直保持在桌面上(不仅是形式上的);可缩减的“数据视窗”窗格可使数据库如Explorer一样成树状显示,从而可以把数据库对象拖到开发环境中;数据视窗中的弹出式菜单可实现在开发环境中创建和修改数据库对象;表、视窗、存储过程以数据库结构图都十分方便于访问。 在新的“Data Environment”下可以放入不可见的编程要素如存储过程和定制查询等,Data Environment支持对特定程序所使用的数据库对象进行快速浏览,Data View可对数据库全局状态进行查看。Data Environment还支持对数据库分级,以创建drill-down报表。在Data Environment下,可以把数据库对象拖到可见的应用组件上,包括数据库窗体以及新的WYSIWYG报表生成工具。使用“点击右键拖动”,可以立即对数据在窗体中如何进行处理作出选择:绑定控件、数据网格或是新的分层网格。 在PowerBuilder开发环境中可以完成许多Visual Basic可完成的工作,但在集成和可访问方面不可同日而语。用PowerBuild开发时您必须使用许多固定模式的对话框,而不是进行直接操作。 Delphi与流行的SQL数据库的集成比较差,Delphi中的SQL Explorer与Delphi的集成很少,对数据库的操作都没有太大帮助,大部分开发人员更喜欢使用数据库厂家提供的浏览工具(如Enterprise Manager)。 使用存储过程为了增强实现安全性、商务规则和数据一致,以及为提高性能,开发人员要大量使用存储过程,所有的工具至少支持一些自身编程对象“包容”的存储过程。 Visual Basic有对存储过程最高级的支持,尤其是在使用Microsoft SQL Server的情况下。只要一个简单的导入操作,我们可以使用所有存储过程,就好像它们是Visual Basic的方法。在数据浏览窗中双击一个存储过程,可以对存储过程进行编辑/调试。存储过程可以和源码控件以及调用它们的客户端应用程序结合在一起,下面是一个执行存储过程的Visual Basic代码段: Visual Basic存储过程调用: cn.is_valid_publisher "9999" is_valid= cn.rs_is_valid_publisher(0) .rs_is_valid_publisher..Close Delphi对存储过程的支持比较初级,存储过程每次一个地连接到项目中,参数使用对话框映像为自身的Delphi类型。在Delphi开发环境下,存储过程可被执行,但不可修改。下面是同一存储过程的Delphi语法: Delphi存储过程调用: with is_valid_publisher_sp do begin ParamByName('@a').AsString := '9999'; Open; Is_valid := Fields[0].AsInteger; Close; end; PowerBuild对存储过程没有可视化支持,它们不能作为编程对象导入。另外,PowerBuilder用特殊的语法实现对存储过程的调用。 PowerBuilder存储过程调用: long id declare is_valid_publisher_sp procedure for is_valid_publisher @id=:id; execute is_valid_publisher_sp; fetch is_valid_publisher_sp into :is_valid; close is_valid_publisher_sp; 这种方法存在一定的优点和缺点,它与程序员所熟悉的嵌入式SQL相兼容,但对于有可视化编程/面向对象背景的程序员而言,这种方法有些不自然。 制作窗体利用新的拖放式数据库集成,在创建窗体方面Visual Basic比Delphi更加优越。二者都可以指导程序员按照Wizard从基本的数据库开始,但Visual Basic只要简单地把需求拖到窗体中,更加方便。在Visual Basic中修改窗体也更简单,因为拖放操作把三个操作组合到了一起:创建、命名以及连接新的控件。Visual Basic还带有更丰富些的控件集(尽管并没有明显的优势)。Visual Basic对定制数据源的支持更简便,在窗体Wizard中有支持,Delphi也支持定制数据源,但要平稳集成需做较多的工作。 Visual Basic已经把COM/ActiveX对象模型作为了自身的对象模型,市场上还没有其他开发环境可以在与ActiveX控件的平稳集成方面与其竞争。Delphi的设计者为使ActiveX组件可工作在Delphi中,已做了很多工作,但与Visual Basic相比还有一些差距。Delphi 4中的浏览器与3.0相比是一大进步,但它与Visual Basic的对象浏览器比缺少在线帮助以及方法描述。Delphi的弹出式完整编辑器与Visual Basic编辑器相比不够优雅,功能也差一些。Pascal不能象Basic那样按名传递参数,或是按名调用,这使有些控件用起来比较繁琐。我们不能说这些特性使程序更加漂亮,但确实有很多现有的对象得益于这些特性。 Visual Basic在6.0版中还引入了一个新的窗体生成工具,功能与Internet Explorer差不多。这种称为DHTML的窗体,即使应用程序在本地运行,看起来也象是一个Web站点(与新的HTML帮助文件相似),这种窗体在象传统Visual Basic窗体一样使用事件处理模型的同时,引入了Internet Explorer丰富的格式处理功能。 Delphi提供了一些Visual Basic没有的很好的纹理控件。大多数Delphi自身的控件都带有源码,它们静态连接到最终的窗体对象。除了可以方便地跟踪进源代码查找错误外,代码静态连接到对象会使得窗体感觉更加生动。读源代码是获得编程经验最好的方法,您可以使用系统提供的源代码对陈旧的表格进行重用:进行剪贴就够了。 PowerBuilder 6.0也做了一些努力试图改善用户界面,但仍停留在原来版本那种低效率的界面形式上。PowerBuilder坚持每次只向用户展示一种功能,如果试图激活一个已打开的对象而不是去找到这个已打开的对象,PowerBuilder就会报错。PowerBuilder的工具条以奇怪的方式变幻,但又不能不理它们,因为很多操作只能在工具条下进行。 在ActiveX/COM集成方面PowerBuilder已经落后于Delphi和Visual Basic了,它只支持动态派发。Visual Basic和Delphi在编译时可以安全检查出的错误,在PowerBuilder中会只到运行时才报错。不支持静态键入也影响了系统性能。PowerBuilder虽然标价很高,但所带控件最差。 生成报表无纸办公需要些什么?管理人员还是需要报表,在客户机/服务器编程工具中报表生成器是一个重要部分。 Visual Basic现在具有良好的报表生成器,这要归功于数据库拖放操作的加入。通过添加新的Active组件,新的报表设计器可方便地进行扩充。 尽管如此,在Visual Basic强大的功能中报表生成器仍是一个薄弱环节。新的报表只能在可执行程序中使用,在DLL中不行。这样报表对于Web站点设计者就不大有用,因为Visual Basic Web服务器一般是DLL格式,而且HTML输入只能定向到一个文件。在Visual Basic中生成Crosstab报表仍需使用Crystal报表。 Delphi报表生成器有许多与Visual Basic相似的缺陷,包括差的Web集成。另外,Delphi的报表生成器没有完整的说明文档,不方便使用。好处是其代码可用。 PowerBuilder仍然具有最强大的报表功能,只有它具有可以直接在Web应用程序中使用的报表生成器。PowerBuild支持Crosstab报表,nested报表以及其他一些吸引人的特性。其用户界面可以与Visual Basic报表产生器相比,而且支持更多类型的报表。 创建组件RAD工具是要使用组件者,现在的RAD工具也提供创建新软件组件的功能。使用根据自己的需要制作的组件,开发组可以增强其客户机/服务器编程项目的功能。 对于客户机/服务器开发人员来说,创建自己的组件是相对比较新的技术。由于可以把组件迅速集成到成品中,开发环境才得以流行。但在很多情况下,使用这个工具开发组件是比较困难的,或是不可能的。PowerBuilder现在仍然如此,不可能创建新的控件或其他组件,Delphi和Visual Basic都有较强的创建组件的能力。 在Visual Basic中创建新控件比较容易,创建时使用创建应用窗体的使用的窗体设计器。这些控件本身是ActiveX控件,可立即在任何ActiveX容器中使用。主要的不足之处在于DLL运行时间长以及流程受到限制(只对于apartment模型)。除了DLL运行时间的缺陷外,Visual Basic控件通常要比Delphi和PowerBuilder的类似的控件小。 Delphi提供了与Visual Basic类似的创建控件的方法。另外,使用Delphi 4还可以选择小控件方式(动态连接)和零运行时间方式(静态连接)。零运行时间方式只能在非数据库控件或基于MIDAS的控件方式下工作,产品带的所有数据库控件,都需要使用BDE。不仅BDE要作为单独的程序进行安装,按照许可协议它还必须由Inprise许可的安装安装人员安装(也就是安装防护)。MIDAS允许只在服务器上安装BDE,但它需要另外为每台服务器付许可费。从这方面看Delphi 4比Delphi 3.0退化了,在Delphi 3.0中不需另外的许可证,可以从基于服务器配置的BDE中借用控件。 PowerBuilder组件只对于其他PowerBuilder应用程序有用,在使用多种语言的公司中,使用这些组件所受的限制将使其他一些优点变的没有意义。组件不能静态键入,也不能被调试,用户只能在单独安装了PowerBuilder的机器上使用这些组件。PowerBuilder坚持每发送一个应用带一许可证,但其技术仍瞄向使用向最终用户收费的许可证。 面向企业的RAD这三种工具都以某种方式宣称自己适合于“企业”软件开发,不过这可以从多个方面解释。在本报告中,我们从三个基本方面来看企业软件开发: 创建新类型服务器的能力。为了升级和支持功能,创建可用企业广域网访问的“事务逻辑”组件十分有用。这些组件可能可以或根本不能运行在象Microsoft Transaction Server这样的事务管理软件下。 
    支持非正规数据源的能力。相对而言只有较小比例的企业信息存放到了关系数据库中,企业软件必须能从非关系型数据库、普通文件或其他不基于SQL的数据源中获取数据。 
    支持有几十个程序员的工作组开发项目的能力,。与源代码控件的集成是一先决条件,不过其他一些工具如建模工具以及组件仓库等,对于大型项目的开发组来说也很有用处。 创建新服务器对RAD工具另一个新的需求领域是“三层”应用程序的设计,三层逻辑是指客户端、“事务逻辑”服务器以及后端数据库服务器。 Delphi和Visual Basic中的三层设计是基于DCOM的,而PowerBuilder有自己的分布对象模型库。这种状况反映了Delphi和Visual Basic集中面向Windows,而不是象PowerSoft那样设计目标是多种操作系统。在PowerBuilder中首次出现分布对象时,所有支持PowerBuilder的平台上还不支持DCOM和CORBA。 在Visual Basic中创建三层逻辑比较容易,因为COM是Visual Basic自带的对象模型,创建分布式对象和创建本地对象一样容易。多个COM组件可在相同的工作环境下创建,然后在代码可正确工作后再分布到其他地方。调试器有很多支持多组件测试的强大功能,对COM调用的跟踪可以使调试者跟踪到其他的过程然后返回。当组件被另一个应用程序创建时,断点生效,即使不是在调试器的控制下启动应用程序,也仍然如此。这对于测试NT服务使用的组件十分有用。有时候会困扰您的问题是开发环境的单流程特性,这时必须求助于Visual Studio的调试器。遗憾的是这种多流程的调试器还没有被集成到Visual Basic开发环境中。 6.0中一个简单却十分重要的改进是,向CreateObject加第二个参数时允许计算机安装制定的要求创建这个对象(这在Visual Basic 5.0中是不可思议的)。6.0中另一个重要的改进是支持ADO。ADO允许结果集合从服务器交回,在客户端进行浏览。创建新的独立的ADO数据源(非从SQL数据库中取回)十分方便,只要向数据组中填充数据即可。 Microsoft Transaction Server可加速三层应用程序的实现。使用MTS,可在几乎没有编程的负担的情况下获得分布式处理支持、安全序列以及性能管理能力。尽管使用Delphi和PowerBuilder也可以创建MTS对象,但Visual Basic提供了开发MTS组件最便捷的方式。通过在对象浏览器中设置一个属性,COM组件就变成了一个纯粹的MTS组件。Visual Basic支持COM调试的功能很多,您可以轻松地从客户软件通过MTS跟踪到服务器组件,就好象没有中间层的存在一样。相比较而言,Delphi需要在两个开发环境中切换(一个用于客户端,一个用于服务器端),而PowerBuilder根本不支持在这种环境下的调试。 在Delphi中创建三层逻辑要困难一些。尽管使用Delphi创建DCOM和CORBA对象十分简单,但Delphi自身的对象不能简单地传送到外部的客户程序,一种类型的库只能由提供的类型库工具创建,其他的都不能完成。其较差的文档资源也令开发人员感到十分不方便。 Delphi在其MIDAS产品中提供了与ADO相似的特性,MIDAS甚至比ADO有更多的配置选项。二者都可以在DCOM或TCP连接之上操作(ADO工作在TCP上需要远程数据服务(RDS)的支持)。另外MIDAS技术支持在加入DCE的CORBA和OLEnterprise上应用。MIDAS只支持Inprise产品,不象基于Microsoft的ADO模型那样有足够多的第三方支持能力。Delphi的调试器不能象Visual Basic那样跟踪进程的COM调用,这需要安装一些其他配件以使调试工作正常进行(尤其是与MTS一起时)。 MIDAS必须另外付费进行许可验证(与ADO不同),支持CORBA的部分也必须在编译器之外另付许可费用。在竞争如此激烈的市场领域中,Inprise是否会坚持这么做,让我们拭目以待。这些特性是否会吸引开发人员进行另外的投资呢,现在还不清楚。 通过创建“自由流程”程序,Delphi可提供更大的灵活性,自由流程对创建服务器对象很有好处。Visual Basic的顶尖高手也可以做到这些,但要冒一定风险,他有可能会跟踪到自己的流程之外,而Delphi自带的编译器可灵活地处理多流程程序。 PowerBuilder对流程的控制比Visual Basic还要差,调试器在多组件的环境中毫无用处。PowerBuilder中的调试方法一般是先在单用户非分布的环境中测试组件(任何语言都可做到),然后期望它可以在分布式多组件的环境下正常工作(不是好的做法)。 PowerBuilder差劲的性能决定其在开发服务器应用时无所作为。在一个快速的客户端,可以花费一定的处理器周期运行PowerBuilder脚本,但在一个需要为几百个用户并发服务的服务器上,不可能使用PowerBuilder。 非关系型数据源企业的大部分数据仍然未放置到关系型数据库中:普通文件、继承型数据库,或者是字典服务器或消息服务器上的新数据。三种产品都支持程序员对非关系型数据库的数据源进行处理。 Visual Basic和PowerBuilder解决这个问题使用的方法相类似,首先把从数据源收集来的数据放到一个通用的记录容器对象中,然后把数据的集合送到客户端。这个过程最基本的内容是有一个未连接到SQL源的记录容器对象。 Delphi的方法遵循了传统的OOP模式:要创建自己的数据源,必须在自己定制的对象中实现IProvider接口。这种方法对于OOP程序员来说可能比较熟悉,但要人从头学起就比较困难。使用这种方法的好处是可以创建更加灵活的高性能数据源。Visual Basic也支持这种方法,途径是创建OLEDB源。 使用非关系型的数据源另一方面的工作是把数据收集到服务器以为客户端服务。尽管人们一直用ODBC接口放置非关系型的数据,但ODBC并不太适合这类应用。如果处理的不是SQL数据源,ODBC所需的SQL会在性能上带来麻烦。在处理非SQL数据源方面,新的OLEDB/ADO模型是更灵活的模式。 通过编写访问ADO对象模型的代码,所有程序都可以处理OLEDB数据源。 Basic中的ADODim rs As New ADODB.Recordset Dim r As String rs.Open "select * from publishers", "DSN=pubs;UID=sa;PWD=;DATABASE=pubs" While Not rs.EOF r = r & rs(0) rs.MoveNext Wend Visual Basic是唯一完全支持其他ADO的开发环境,所有的数据库浏览器和Wizard程序都支持ADO数据源。 Delphi中的ADOVar 
    rs: Recordset; 
    r: string; 
    Begin 
    rs:= CoRecordset.Create; 
    rs.Open('select * from publishers','DSN=pubs;UID=sa;PWD=;DATABASE=pubs' 
    adOpenForwardOnly,adLockReadOnly,adCmdText); 
    while not rs.EOF do 
    Begin 
    r := r + rs.Fields[0].Value ; 
    rs.MoveNext; 
    end;
    除了语法有些不同外,Delphi代码和Visual Basic代码看起来非常相似。在第6行我们可以看出,在Visual Basic和PowerBuilder中我们需要提供作为缺省参数的参数,而在Delphi 4中就可以不提供,它会自动支持缺省参数。Delphi 4中的Object Pascal支持缺省参数,但还不支持类型库导入特性。Delphi还要做很多工作以把ADO数据源与Delphi控件绑定,目前Delphi 4中的所有工具都不支持ADO。 PowerBuilder中的ADOstring r 
    rs = CREATE OLEObject 
    rs.ConnectToNewObject("ADODB.Recordset.1") 
    rs.Open("select * from publishers", "DSN=pubs;UID=sa;PWD=;DATABASE=pubs") 
    do while Not rs.EOF 
    r = r + rs.Fields[0].Value 
    rs.MoveNext 
    Loop
    PowerBuilder不支持COM接口的静态键入。在我们看来,这一点只是对不多用ADO编程有影响。其语法十分简洁(与Visual Basic例子相近),但一些语法错误只有在运行时才能发现,而不是在编译时。动态键入对性能也有较大影响,在处理外部对象模型的语法时,PowerBuilder不提供弹出式的帮助信息。 
    工作组编程三种产品都面向多种程序员的企业级项目,这意味着它们最低也要有源代码控件的集成。新遇到的问题是源代码控件和预先创建的软件组件,即组件仓库等价的问题,另外许多基于OOP的项目都寻求可视化的建模器进行类设计。最流行的可视化类设计方法是基于Unified Modeling语言(UML)的,UML超越了先前的Booch和DMT方法。 Visual Basic和PowerBuilder自身都提供一个源代码控件系统,同时有将这些控件系统与其他源代码控件系统相集成的接口。Visual Basic可提供被广泛使用的Source Safe产品(微软提供),而PowerBuilder提供知名度稍低的ObjectCycle(同是Sybase提供)。二者中Source Safe更容易使用,与项目管理器相集成得更好。ObjectCycle的特性是,它唯一建立在关系数据库基础上的源代码控件系统,这种设计以前做过专门的介绍。 Delphi不提供源代码系统,但提供集成第三方系统的接口。Inprise的市场部门特别强调Delphi可集成广泛使用的PVCS。 Visual Basic提供最完整的库以及三种产品中唯一的可视化建模器。Visual Basic使用Microsoft Repository,它包含了多种语言和对象模型。它还提供Visual Component Manager,为向仓库中插入和取出组件提供了GUI接口。Microsoft Repository本身是基于关系型数据库的,这一特点便其方便于制作专门的报表和扩充。可视化建模器基本上是Visual Basic中Rational Rose的完整子集,Rational Rose是市场上最流行的可视化建模器之一。 比较而言,Delphi和PowerBuilder只提供自己的对象库,Delphi不基于关系数据库,所以生成报表相对困难,两种产品都不提供可视化建模器。 Visual Basic还提供Application Performance Explorer,这个工具可以测试使用不同数据库及接口(如ADO和ODBC等)的两层或三层方案不同配置下的性能。在进行编程之前研究不同方案并进行测试是很有好处的,当然这种工具不是一种常用的工具。 
    RAD对Web站点的支持现在许多企业的编程项目把Web作为基本组件。尽管客户机/服务器仍然是现有企业结构中的重要部分,现在RAD工具已重新定向到支持创建具有Web配置的应用程序。这个报告中测试的三种产品都支持开发Web配置的应用程序,支持相同级别的抽象概念。与标准的Web CGI开发相类似,所有工具都方便于解析HTTP请求,提供图形界面来支持设计用HTML格式显示的数据库查询。三种工具都不支持HTML编辑器和HTML窗体设计器。三者都支持使用外部工具,我们可以方便地使用InterDel和FrontPage等工具,当然还有Notepad。三种产品都支持GUI数据库窗体和报表作为Netscape插件或ActiveX控件在浏览器中运行。 Visual Basic是最方便实现Web站点的工具。不需改动配置,用Web启动Wizard建立一个工作的Web站点,随后可以进行修改。调试时可在应用程序加载Web站点的同时,在Internet Explorer中打开它,真是太棒了。InterDev用户在看到Active Server Page(ASP)和Visual Basic的集成情况时一定十分高兴,通过用Visual Basic重写丰富的页面,可方便地改善ASP站点。在ASP下,完整的应用程序可作为COM对象运行,一个完整应用程序最低应该包括一个自动记录的COM对象、一个管理器COM对象、Visual Basic运行时间DLL以及一个Visual Basic自动产生的ASP保存页。整个站点的性能十分好。 Visual Basic使得使用cookie跟踪用户会话变得十分简单。按照标准ASP模型,用户第一次访问Web应用程序时,系统自动建立一个会话cookie,Web对象引用会话系统对象获取和存储当前会话的信息。另外会话被自动设置超时。另外的两种产品若使用cookie,Web开发人员必须编写cookie跟踪代码,在PowerBuilder中使用cookie尤其糟糕。 Visual Basic也存在一些缺陷。从Web DLL我们不能访问新的报表生成器,为完成这一工作,我们必须启动一个Active执行服务器,然后进行过程外的调用。即使在内部执行体中,我们也只能把报表写到文件而不能直接送回浏览器,这很不值得.这样的Web站点会比基于C++/ISAPA的系统更慢。 Delphi在这项工作上遇到了极大挑战,使用Delphi,分布工作十分难,下面是一些问题和方案的列表(以免您被要求用Delphi开发Web站点): 实现“Hello, World”Web站点。与Visual Basic不同,使用Web站点Wizard不能建立一个可工作的站点,不过在参考书的指导下,一个小时内还是可以让其工作起来。 
    向站点加载任务,站点崩溃。 
    在调试器中按照说明运行IIS,不能正常工作。在IIS文档中寻求帮助,可找到运行IIS过程的指导。现在我们可以让IIS在Delphi调试器中运行了。 
    现在Web站点最多可工作在有10个访问加载的情况,否则就崩溃,显示“too many connection error”这样的信息。在打印文档中查不到帮助。在在线帮助中找到关于“Max Connection”属性的帮助,现在“Hello, World”Web站点可工作在多达100个流程的情况下。 
    启动数据库,会出现错误,显示“BDE out of memory”,重新启动Delphi,会出现“BDE Directory Locked”错误,重启机器,这次未出现前面的错误,可正常工作。 
    加载的站点又出现“duplicate database name”错误,指出如何在最初创建单一的数据库名。为什么数据库会话可自动获得它们所需的单一名字,而数据库不行呢? 
    对站点加载访问又出现“BDE out of memomy”错误。查看BDE管理帮助手册,看看BDE需要多少内存,不清楚;它现在用了多少内存,不清楚。在手册中只能找到一些设置错误、挂起情况、错误信息和参数使用的说明。天哪,它又可以工作在负载下了。
    与Visual Basic类似,Delphi的报表也不能在Web应用下访问。不过Delphi有一个TQueryTableProducer组件,可支持可视化地创建简单数据库查询,以及用一些简单代码连接Web站点。 与Visual Basic相比,Delphi的真正实力在于对Web服务器的支持,Visual Basic是对IIS的支持。Delphi不支持与Active Server page的集成,但也可以通过其他一些措施完成。Delphi的配置方法在三者中是最简单的,直到把可执行代码放到脚本目录就完成了安装。 完全的Delphi应用程序在某些测试中性能很好,但在另一些测试中可能会出人意料得很差。Delphi的运行时间库不能很好地在SMP机上升级,在使用多个处理器时比较困难。它所提供的运行时间源码具有一些“临界段”,会影响Delphi的性能。 在服务器环境下BDE的健壮性也是潜在的问题,它偶尔会产生内存漏洞,使Delphi应用程序不能正常工作(返回“BDE out of memory”)。一种可能的解决方法是重启Web处理机(清除BDE),另一种方法就是不使用BDE。在进程之间共享有限内存情况下使用BDE令人不放心,这样可能会使某些关键任务的应用程序被同一机器上其他使用BDE的应用程序破坏。即使BDE具有稳固的状态(只有在所有BDE应用程序重新启动时BDE才重新启动),但还没有工具能查询它的健康和操作特性。 用PowerBuilder进行Web站点开发被证明过于繁琐。三种工具中只有PowerBuilder不允许在浏览器中进行调试应用程序,相反每个功能块都必须作为单独应用程序进行测试,然后期望它能正确运行在Web浏览器中。配置后应用程序的性能是不可知的。 PB Web方案的健壮性是可怕的,我们甚至不能保证运行几秒钟的ISAPI时整个Web服务器不崩溃。甚至在我们使用原来的CGI时,偶尔也会见到PowerBuilder CGI模块出现保护错(至少使用CGI时Web服务器仍在运行)。因为应用程序保护错误层出不穷,我们不推荐用PB Web做任何Web开发,甚至是Web站点的改进。 与其他两种产品不同,一个PowerBuilder Web应用程序必须按自己的过程运行。一个PowerSoft提供的执行模块把Web服务器生成的ISAPI、NSAPI及CGI请求映像为PowerBuilder远端过程调用,这些额外开销影响了服务器的性能。PowerBuilder应用程序的配置包括PowerBuilder小模块,即一个启动应用的小执行体,一个真正应用程序代码的DLL,一个支持PowerBuilder Web库的DLL以及将它们组合在一起的一个pbweb.ini文件。 在使用IIS和Netscape 3.51分别测试ISAPI和NSAPI时,我们一直不能无错地运行很长的时间,SyBase内部的消息以及使用PowerBuilder 6.0的开发人员也证实了相同的问题。离开CGI就不能提供工作区,但可以预测PowerBuilder中的CGI性能很差。 三种产品中PowerBuilder是唯一可在Web应用程序中有效使用可视化设计报表的工具。由于所有数据窗口都可以按HTML串格式输出,因此在Web站点中使用它意义不是很大。PowerBuilder还是唯一可以展开到Solaris、HP/UX和AIX服务器的产品,不过Solaris、HP/UX和AIX服务器只支持CGI,不支持PowerBuilder在Windows中的一些其他Web开发特性。 
    性能评测结果    Visual Basic
    Delphi
    PowerBuilder概括(比数的方法,越大越好)总体
    与PowerBuilder相比的速度
    9.3
    9.0
    1.0SQL
    与PowerBuilder相比的速度
    1.8
    1.2
    1.0字符串
    与PowerBuilder相比的速度
    2.7
    1.9
    1.0编译器
    与PowerBuilder相比的速度
    53
    89
    1.0Web
    与PowerBuilder相比的速度
    18.2
    19.1
    1.0SQL(毫秒,越小越好)  调用存储过程
    2.8
    3.8
    4.0  准备好的查询
    2.8
    4.2
    8.9  复杂查询:计算中值
    5.4
    8.9
    7.5编译器(毫秒,越小越好)编译器
    COM调用
    1.8
    .70
    290  Tak
    5.9
    5.4
    210  Sieve
    17
    8.2
    490  Permutations
    160
    120
    7,800字符串测试(毫秒,越小越好)字符串
    格式字符串
    140
    47
    820  查找所有串
    0.4
    11
    21  查找一个(向前)
    4.4
    3.1
    0.7  查找一个(向后)
    3.4
    3.3
    1.0  全部替换
    100
    100
    1100Web(页/秒,越大越好)Web/SQL
    Web插入记录
    58
    110
    2.5  Web查询23个记录
    50
    25
    2.3Web
    Hello, world
    120
    230
    11(1)  Hello, world x 1K
    80
    29
    1.8(1)  Hello, program
    120
    120
    9.5(1)  Shared State
    110
    230
    9.5(1,2)测量结果到两位精度(1%)ISAPII为100个流程(Visual Basic和Delphi),CGI为10个流程(PowerBuilder)测试系统为两台200MHz的Pentium Pro计算机SQL Server 6.5Windows NT 4.0, service pack 3, option pack(IIS 4.0)使能所有编译器的优化1 CGI应用崩溃2整个应用崩溃
     Delphi和Visual Basic所带编译器生成代码的代码相近,用Delphi编译的结果比Visual Basic编译的结果稍快。但Visual Basic带的组件(很多用汇编和C++实现)比Delphi带的组件更快,Visual Basic基于OLEDB的数据库访问组件也无可质疑地比Delphi的基于BDE的数据库访问组件更快。PowerBuilder生成的程序最慢,总体性能PowerBuilder要比Visual Basic和Delphi慢九倍,源代码速度要比Visual Basic和Delphi慢50倍。PowerBuilder的ActiveX组件在没有预先绑定支持的情况下特别慢,比Delphi使用ActiveX组件慢400倍以上,与Visual Basic相比约慢200倍。我们知道,在PowerScript中没有明确的方法可进行预先绑定。限制Web站点使用CGI,使PowerBuilder比其对手慢了很多,我们不得不把并发的流程降到10以使CGI的工作能与服务器的性能相匹配。即使只有10个并发访问,我们的两台200MHz服务器在整个测试中还保持在100%的利用率。PowerBuilder自带的编译器,在5.0中曾着力宣传,在6.0中却不被重视(p-code又被重新利用)。尽管自带编译器很慢,但PowerBuilder的p-code更慢(慢8到20倍)。 
    测试说明总体速度
      使用比值法,用PowerBuilder时间除其他工具的时间SQL
    调用存储过程
    调用一个简单的存储过程检查一个记录是否存在  简单查询
    与存储过程类似的查询,但不使用存储过程  计算中间量
    在21个记录的集合中寻找中间值(Pub.sales)编译器
    COM调用
    对程序中的COM进行10K次调用  Tak(整型)
    如果y大于或等于x,Tak(x,y,z)=z。这是非递归的停止条件。否则,如果y比x小,Tak(x,y,z)=Tak(Tak(x-1,y,z),Tak(y-1,z,x),Tak(z-1,x,y))  Sieve
    在小于100K的整数中寻找素数,做100个循环。  Permutations
    寻找0到8的整数之间所有的置换。这个算法用于数据最小化和其他代码优化,取自C++标准库。字符串
    格式化字符串
    联接1000个从整型转换来的含10字符的字符串。  查找所有字符串
    在10000字节的字符串中查找100个含某两字符的字符串。  向前查找
    在10000个字符的串尾查找10个字符的串。  向后查找
    在10000个字符的串首查找10字符的串,从字符串的最后开始查找。  全部替换
    在一个10000字节的串中,用两字符的串替换某个字符,完成100个。Web
    插入记录
    插入单个40字节的记录响应Web页访问,使用100个流程统计页每秒。  查询23个记录
    利用从SQL服务器返回的23个记录创建HTML表格(Pubs数据库,author字段),使用100个流程统计页每秒。  Hello, world
    一个只是动态产生"Hello, world"的Web页,它体现了动态Web页的最小开销。使用100个流程统计页每秒。  Hello, world x 1K
    大的Web页(16K),用于测试所生成Web页的传输开销。使用100个流程统计页每秒。  Hello, program
    测试提交一个窗体并返回响应所用时间。使用100个流程统计页每秒。  Shared State
    更新一个应用计数器,显示从程序启动开始共有多少次访问。使用100个流程统计页每秒。
     
    功能性评测结果  Visual Basic
    Delphi
    PowerBuilder 6.0 EnterpriseCOM支持
          
    后绑定
    Yes
    Yes
    Yes预先绑定
    Yes
    Yes
    No命名参数
    Yes
    Yes
    Yes在服务器内
    Yes
    Yes
    Yes在服务器外
    Yes
    Yes
    No对象浏览器
    Yes
    Yes
    NoApartment流程
    Yes
    Yes
    No自由流程
    No
    Yes
    No调试器
          
    跟踪进入
    Yes
    Yes
    Yes跟踪跳过
    Yes
    Yes
    Yes显示调用栈
    Yes
    Yes
    Yes条件断点
    Yes
    Yes
    Yes观察变量
    Yes
    Yes
    Yes显示CPU寄存器
    Yes(Visual Studio Debbuger)
    Yes
    No调试机器代码
    Yes(Visual Studio Debbuger)
    Yes
    No显示反汇编
    Yes(Visual Studio Debbuger)
    No
    No单步通过存储过程
    Yes
    No
    No多流程
      Yes
    No停止COM创建对象
    Yes
    只在进行中可以
    No跟踪COM调用
    Yes
    No
    No跟踪有MTS的COM调用
    Yes
    No
    No远程调试器
    No
    Yes
    No编辑器
          
    可扩充环境
    Yes
    Yes
    No拖放
    Yes
    Yes
    Yes多功能窗口
    Yes
    Yes
    No语法额颜色标注
    Yes
    Yes
    Yes函数功能
    Yes
    Yes
    No在编辑器中设置断点
    Yes
    Yes
    No编程语言
          
    对象的再利用
    Yes
    COM对象
    Yes类继承
    No
    Yes
    Yes多重抽象接口
    Yes
    Yes
    No模板/类
    No
    No
    No栈分配对象
    No
    No
    No方法重载
    No
    Yes
      
    运算符重载
    No
    No
    No缺省参数
    Yes
    Yes
    NoApartment流程
    Yes
    Yes
    No自由流程
    No
    Yes
    No函数指针
    只用于调用
    Yes
    No运行时间类型检查
    Yes
    Yes
    Yes按名调用
    Yes
    No
    Yes"标准"调用方式函数
    Yes
    Yes
    No"C"调用方式函数
    No
    Yes
    No用户定义联合类型
    No
    Yes
    No通过值传递用户定义的类型
    Yes
    Yes
    Yes通过指针传递用户定义的类型
    Yes
    Yes
    Yes返回用户定义的类型
    Yes
    Yes
    Yes通过值传递数组
    Yes 
    Yes
    Yes通过指针传递数组
    Yes
    Yes
    Yes返回数组
    Yes
    Yes
    Yes例外
    Yes
    Yes
    No内嵌汇编
    No
    Yes
    No调用Windows API
    Yes
    Yes
    无调用使用源文件进行定位
    Yes
    Yes
    No提供运行时间库的源代码
    No
    Yes
    No数据绑定
          
    绑定控件与数据库查询
    Yes
    Yes
    Yes绑定控件与ADO/OLEDB对象
    Yes
    No
    No绑定控件与用户创建的数据源
    Yes
    Yes
    Yes绑定存储过程
    Yes
    Yes
    Yes创建OLEDB数据源
    Yes
    Yes
    No编写报表
          
    输出HTML
    Yes
    No,查询可用HTML格式,但不是QuickReport
    Yes输出双字节码
    Yes
    No
    正在Beta测试Cross列表报表
    No
    No
    Yes编译器
          
    警告未用到的变量
    No
    Yes
    No警告使用未初始化的变量
    No
    Yes
    No警告未用到的赋值
    No
    Yes
    No警告对循环变量的赋值
    No
    Yes-视为错误
    No警告无返回值的函数
    No
    Yes
    Yes─视为错误随意地删除Pentium FDIV错
    Yes
    Yes
    No随意删除数组限定检查
    Yes
    Yes
    No创建Windows API DLL's
    No
    Yes
    No创建单独可执行体(无需DLL)
    No
    Yes
    No面向的平台
          
    Windows 95/NT
    Yes
    Yes
    YesUnix
    通过HTML
    通过HTML
    YesNT/Alpha
    Yes
    No
    NoWindows CE
    Yes
    No
    NoWeb特征
          
    调试作为服务的Web服务器
    Yes
    No
    No调试作为应用的Web服务器
    No
    Yes
    No在浏览器中嵌入窗体
    Yes
    Yes
    Yes在浏览器中调试窗体
    Yes
    Yes
    NoISAPI
    Yes(通过ASP)
    Yes
    NoNSAPI
    No
    Yes
    YesCGI
    No
    Yes
    Yes联接轮询
    Yes
    Yes
    Yes创建可下载的控件
    Yes
    Yes
    需要单独安装GUI窗体可被嵌入到Web浏览器中
    Yes
    Yes
    Yes创建Web界面的本地应用
    Yes
    Yes
    No为Web界面提供源代码
    Yes
    Yes
    YesWizard/代码产生工具
          
    Client/Server Wizard
    Yes
    Yes
    Yes3 Tier Wizard
    Yes
    Yes
    Yes创建Web应用
    Yes
    Yes
    YesNT服务
    No
    Yes
    NoWizard Wizard(生成Wizard)
    Yes
    No
    No属性页Wizard
    Yes
    Yes
    No安装/配置Wizard
    Yes
    Yes
    YesWeb配置Wizard
    Yes
    Yes
    Yes数据窗体Wizard
    Yes
    Yes
    Yes存储过程生成工具
    Yes
    Yes
    No设计/分析
          
    UML对象范型
    Yes
    No
    No代码结构分析器
    No
    No
    Yes设计模拟器
    Yes
    No
    No组件结构分析器
    Yes
    No
    No组件
          
    日历
    Yes
    Yes
    YesTab
    Yes
    Yes
    YesWizard
    Yes
    No
    No网格
    Yes
    Yes
    Yes树
    Yes
    Yes
    Yes控件列表(控件转发器)
    Yes
    Yes
    Yes分级网格
    Yes
    No
    No制图
    Yes
    Yes
    YesModem/Telephony
    Yes
    No
    NoFTP/HTTP/SMTP
    Yes
    Yes
    NoTCP
    Yes
    Yes
    NoWeb Browser
    Yes
    Yes
    NoMAPI
    Yes
    No
    YesLotus Notes
    通过MAPI
    通过SMTP/POP
    自带API丰富的文本
    Yes
    Yes
    Yes发展
    Yes
    Yes
    Yes提供的服务器
          
    数据库服务器
    SQL Server
    InterBase
    SQL Anywhere源代码控件
    Source Safe

    Object CycleSNA
    SNA服务器

    无组件仓库
    Yes
    No
    No字符串功能
          
    查找子串
    Yes
    Yes
    Yes反向查找子串
    Yes
        
    查找并替换
    Yes
        
    无用串的收集
    Yes
    Yes
    Yes数据管理
          
    创建/编辑/查看查询
    Yes
    Yes
    Yes可视化地创建/修改表格/查看
    Yes
    不通过SQL
    Yes编辑存储过程
    Yes
    No
    No对数据库图解
    Yes
    No
    No将存储过程与源控件集成
    只对SQL Server
    No
    No创建组件
          
    CORBA支持
    No
    Yes
    Yes  Yes
    Yes
    YesActiveX文档
    Yes
    No
    NoNetscape插件
    第三方
    Yes
    Yes轻(无窗口)控件
    Yes
    No
    No
     
    可用性评测结果  Visual Basic
    Delphi
    PowerBuilder调试器
    很好

    一般编译速度(调试)
    很好
    很好
    很好编译速度(正式)
    很好
    很好
    差编译警告/错误

    很好
    差编辑器
    很好
    很好
    一般语言


    好安装/配置

    很好
    差Wizard


    好报表生成器
    很好
    一般
    好查询生成器
    很好
    一般
    一般数据库设计器
    很好
    一般
    一般多流程支持
    一般

    差代码浏览
    很好

    差SQL语法


    很好COM接口
    很好

    一般Win32 API

    一般
    差使用cookie
    很好

    差共享Web状态
    很好

    一般
    Visual Basic比Delphi易于学习,二者都明显比PowerBuilder易于掌握和使用。使用哪个产品需要开发的代码量是相近的(见附录A的代码),基于此,我们可以认为对于熟练的开发人员来说,使用每个产品的生产能力水平应是相近的。由于Visual Basic和Delphi提供了更好的编程条件,因此我们可以认为Visual Basic和Delphi的程序员每天编写的已进行调试代码行,应比PowerBuilder开发人员多。 Visual Basic比Delphi更容易学习。象现在这样编程项目不断更换,Visual Basic可提供使人们迅速跟上项目的发展的环境。Delphi程序员可以做得更好一些,不过在高复杂性、高性能需求方面,二者都不能与基于C++的产品相比。 Visual Basic有最佳编辑器和调试器,被证明最可靠,编译速度快。程序员使用的用户界面友好,在线文档的组织优秀。Visual Basic自身的对象模型是COM,因此没有语言比它更适于使用或创建ADO和MTS这样的组件。Visual Basic是最方便于创建Web站点的RAD工具。 Delphi可静态连接执行,这一点很受欢迎。Visual Basic的设计是派发在运行时间动态连接到一起的应用程序,这表明需要一个启动程序分布组件和修改注册表。运行时间问题可以由安装时的错误得出;或是更坏的情况,由其他人安装时出现错误得知。Delphi的优点是可以生成单独执行体以及DLL's,只需把它们复制到最终目的就完成了配置。Delphi中大部分常用的组件是静态连接到可执行体中的,例外情况比较典型的是Borland Desktop Engine,它必须与大部分Delphi应用程序一起安装。在三层结构支持下,可以把无BDE的Delphi应用程序放到客户端,但在服务器端仍然需要安装。 Delphi与Visual Basic以及PowerBuilder相比有更强的代码分析能力。使用Delphi能在下述代码中发现一些错误,但使用Visual Basic不能找到。Delphi在发现可检测到的编程错误时会发出提示,这些提示有助于我们不进入调试器就发现并解决一些错误。 Private Function foo() As Long Dim x As Long Dim y As Long For x = 1 To 3 x = 2 Debug.Print x Next x = 5 End Function 在PwerBuilder下开发测试代码要花很长的时间。它没有支持Web页的调试器,这就要求我们必须开发另外的测试代码。其调试器虽然比5.0有了很大改进,但与Delphi或Visual Basic相比它与编辑环境的集成还差很远。 在PowerBuilder开发环境下浏览类是困难的,同时查看或打印多个函数也很困难,这样程序员就倾向于写更长的、可读性差的函数。6.0的环境比5.0有很大提高,但还是很不完善。 
    选择RAD工具每种工具都比它们的前一个版本有了很大改进。为便于维护现有的项目,我们建议您对现有的工具从较低版本进行升级(例如是为Web项目使用PowerBuilder 6.0,5.0更稳定些)。如果是为新开展的项目选择工具,需要审慎地作出决定。 对三种工具都没有使用经验的程序员会发现Visual Basic更容易学习。学习时间是最初的开发时间,因此使用Visual Basic可以使他们可以更快地投入到生产性编程工作,从而提高开发组的生产能力。不是Visual Basic本身可提供的组件(如对象模板,组件仓库和源代码组件)可从第三方获得。如果您的开发组已经熟悉了Visual Basic,那么没有什么理由换成别的工具。Visual Basic现在具有与PowerBuilder类似的数据库集成能力,与Delphi相当的自身编译速度。 熟悉PowerBuilder的编程开发组,应该用心考虑选用其他的工具。Delphi和Visual Basic都能提供更好的编译和调试工具,Visual Basic还可提供更好的数据库集成工具。PowerBuilder的性能一直是个问题,在实现Web和多层分布式软件时更是不适用。与Delphi和Visual Basic比,即使是熟练的PowerBuilder开发人员,也要花费很多时间对程序进行调试(由于调试器的限制)和调整(由于性能问题)。由于PowerBuilder开发服务器代码的性能很差,因此PowerBuilder程序很难转向多层应用环境。由于无法克服的性能问题,PowerBuilder项目方案有更大的可能性被推翻重来,这也意味着用PowerBuilder实现真正可用的企业应用程序时,生产效率更低。 对于各种RAD工具,PowerBuilder的开发人员转换到Visual Basic是最容易的。PowerScript主要的是Basic变量(受C的影响),当然比Java, C++或Delphi的Pascal更接近于Basic。Visual Basic中的数据库工具可在一天内掌握,因此重新学习Visual Basic所用的时间很少。 熟练的Delphi开发组面临的选择最困难。选择了Delphi后,Delphi程序员可以与Visual Basic程序员一样高效地编程。Delphi的编译器也十分吸引人:它可生成快速的代码。Delphi的COM集成能力也不错,和除Visual Basic外的其他产品一样简便(包括微软的其他开发语言)。 尽管有这些方面的优势,但Delphi毕竟不是主流。寻找优秀的Delphi程序员是困难的,而培训新程序员代价较高──比Visual Basic高。Delphi所带工具集功能最弱(无源代码控件、无模板、很弱的库),对每三方支持也不够。Delphi最大的不足在于Borland Desktop Engine,它在健壮性和可管理性方面不能达到企业软件的标准。相比较而言,Visual C++和Inprise公司自己的C++ Builder一点不比Delphi难掌握,却可以广泛利用第三方的支持。对于新的项目,程序员和管理人员应该仔细考虑更换到一个更简便的环境(如Visual Basic)或是同样较难但功能更强大,更符合标准的环境(如C++)。
      

  4.   

    简单地说,快速开发pb好,三层体系pb也支持,但是在兼容性方面要差些,不过VB我是觉得没有多少可以推荐的,用它还不如直接使用C
      

  5.   

    我觉得主要问题并不是使用什么速度块,而是客户需要什么?我有一个朋友在一家
    国企(上市公司)主管人事,想升级它们的人事管理系统,你知道原来他们用的什么
    吗?Foxpro 2.5 for dos + 586,2千多人的工资就是用这个管理的!!
      

  6.   

    用VB和PB都可以,不过我强力推荐PB,原因很简单PB的数据库窗口可以解决数据库报表中的任何问题。