当前页面位置: » 丰搜网 » 文档中心 » 详细内容
在pb中利用dde
在pb中利用dde
华中科技大学电子与信息工程系 郭小兵
| powerbuilder(以下称pb)是一种强有力的企业级数据库应用系统开发工具,利用它可以方便地开发出数据库系统的前台应用软件。但由于用pb所开发的报表具有一定的局限性:报表的表头、列宽等都不能在应用程序中由用户来进行调整,所以若用户报表的格式有所变动,则必须在原程序中对报表进行调整,这在很大程度上降低了软件的灵活性。 |
| excel是microsoft公司的表格处理软件,由于其简单易用,近年来在各单位的报表处理中得到广泛的应用。那么,在应用程序中是否可以调用excel,让用户在用pb开发的应用程序中管理数据库中的数据,而在用户熟悉的excel表格处理软件中调整并打印报表呢? |
| 答案是肯定的,本文介绍如何利用动态数据交换dde(dynamic data exchange)技术,在pb中把数据库中的数据传送到excel应用程序中,以便由用户在excel中调整打印报表。 |
| dde用于在windows平台上的两个正在运行的应用程序之间动态交换数据,它是一种在windows操作系统中基于消息的协议。动态数据交换总是发生在两个正在运行的程序之间,在这两个应用程序之间相互发送和接收命令及数据。这两个正在运行的程序分别称为客户程序和服务器程序,客户程序就是请求服务的程序,而提供服务的程序称为服务器程序。 |
| dde应用程序在开始交换数据以前必须由客户端发出初始请求,建立与服务器端的dde连接(又称为通道或会话)。在建立连接后客户端可以连续向服务器发送数据请求和命令请求。 |
| 在本文的应用程序中,我们用excel做dde应用服务器程序,在pb中进行dde连接。 |
| excel.exe可以在windows环境下单独启动,也可以在pb中用run函数启动。 |
| run(string{,windowstate}) |
| ●windowstate:枚举型,程序启动后的窗口状态,可以是最小化(minimized!)、最大化(maxized!)或原尺寸(normal!)。 |
| 在本文中,我们从客户程序pb中启动服务器应用程序excel.exe,并假设excel.exe的路径为: |
| c:\program files\microsoft office\office\excel .exe |
| run(“c:\program files\microsoft office\office\excel.exe”, minimized!) |
| 在客户程序和服务器程序均启动之后,就必须建立客户程序和服务器程序之间的连接。在客户程序pb中,可以使用openchannel函数建立这种连接,打开一个从客户程序到服务器程序的通道。 |
| openchannel(appname,topicname{,windowhandle })) |
| ●topicname:主题名,即客户端要使用的实例,如word文档或excel文档; |
| ●windowhandle:客户端的窗口句柄,如果客户端程序打开了多个窗口,需要指定其中一个作为客户端窗口。 |
| ●冷连接:是指运行中的客户程序和服务器程序进行直接的数据交换,不需要建立通道或连接,每次操作都要指定应用程序名和项目名; |
| ●暖连接:是指用openchannel函数建立的连接,它可以利用openchannel函数返回的句柄对指定的应用进行操作; |
| ●热连接:是指用starthotlink建立的连接。 |
| 无论是冷连接还是暖连接都无法在客户端知道服务器端是否修改了数据,同样,在服务器端也无法知道客户端的数据修改情况。而用热连接就可以使服务器端和客户端彼此知道数据是否被修改。 |
| 在本文中,只是在pb中调用excel报表,并向其中传递数据库数据,并不需要知道excel中对数据的修改处理情况,所以选用暖连接方式比较合适。 |