在数据库应用程序中,经常需要与外部的数据源进行数据交换。通常我们会考虑利用开放式数据库互连标准ODBC。ODBC由驱动程序管理器和一系列把SQL作为它们访问语言的驱动程序所组成。当需要时,ODBC驱动程序翻译各种产品的SQL语言以使不同产品间的连接完美无缺,从而使得连接另外一个应用程序上的数据成为可能,甚至可以在Visual FoxPro并不直接支持的格式(例如电子表格)中提取和修改数据。鉴于ODBC早已经被很多程序员所熟知,我们这里仅仅讨论一种不太常用的方法:DDE。
----DDE是一种动态数据交换机制(Dynamic Data Exchange,DDE)。使用DDE通讯需要两个Windows应用程序,其中一个作为服务器处理信息,另外一个作为客户机从服务器获得信息。客户机应用程序向当前所激活的服务器应用程序发送一条消息请求信息,服务器应用程序根据该信息作出应答,从而实现两个程序之间的数据交换。在Visual FoxPro中,一共十一个常用的DDE函数,它们是:
DDEAbortTrans() 删除异步的DDE处理
DDEAdvise() 建立与服务器应用程序的温或热连接
DDEEnabled() 设置或返回DDE状态
DDEExecute() 向服务器应用程序发送一条执行消息
DDEInitiate() 打开到服务器应用程序的DDE控制板
DDELastError() 返回DDE函数引起的最后一条错误信息
DDEPoke() 传送数据库到客户机或服务器应用程序
DDERequest() 服务器应用程序请求数据
DDESetOption() 修改或返回DDE设置
DDESetService() 添加、删除、修改服务名的状态
DDESetTopic() 连接服务名与标题名
DDETerminte() 关闭DDE控制板
----Visual FoxPro既可以作为DDE客户机,也可以作为DDE服务器。当Visual FoxPro作为客户机时,一个典型的请求从其他应用程序输入数据的FoxPro程序由包含以下步骤的代码组成:
调用DDEInitiate()函数建立与服务器应用程序的连接。
如果成功地建立了连接关系,调用DDERequest()函数请求从服务器应用程序输入信息。可以重复调用DDERequest()函数请求输入其他的信息。
完成对数据的请求后,调用DDETerminate()函数技术与服务器应用程序的连接关系。只有这样做才能够释放系统资源。
当Visual FoxPro作为服务器时,一个典型的响应其他应用程序请求数据的FoxPro程序由包含以下步骤的代码组成:
调用DDESetService()函数生成服务过程(建立服务过程名)并且指定服务过程的类型。
调用DDESetTopic()函数生成服务标题并且指定客户机请求中设定标题时的运行过程。
生成DDESetTopic()中指定的过程用以接受传递给过程的参量。客户机请求信息调用此过程,此过程执行请求操作并且向客户机应用程序返回所请求的信息。
----应用程序之间的DDE会话可以使用冷连接、温连接和热连接。当Visual FoxPro做为客户机时,所建立的连接为冷连接;当Visual FoxPro做为服务器时,可以使用其中任意的一种连接方式。可以使用DDEAdvise()函数来初始化DDE温连接和热连接的会话。传递给DDEAdvise()函数的参数之一是一个用户自定义函数的名称,服务器应用程序调用该函数通知客户机数据已经改动。因此,在温连接和热连接会话中,当数据源有所改动时,客户机能够根据服务器的通知自动进行数据更新。
----以下是一个利用DDE与Word进行数据交换的示例程序。该程序打开一个DOC文件,将其全部内容拷贝到剪贴板上,然后关闭文件并退出Word。
* 启动应用程序Word
RUN /N1 D:/WORD/WINWORD.EXE
* 建立DDE连接
Channel=DDEInitiate(“WinWord”,”System”)
* 判断连接是否已经建立
IF Channel<>-1
* 将Word应用程序最大化
=DDEExecute(Channel,”[AppMaximize]”)
* 打开文件d:/word/test.doc
=DDEExecute(Channel,’[FileOpen “d:/word/test.doc”]’)
* 选取所有内容
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。