999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用DDE技術實現PB與EXCEL的數據通訊

2009-04-09 03:17:18侯軍燕
新媒體研究 2009年5期

侯軍燕

[摘要]介紹windows環境下DDE技術的原理,以及DDE在PB和EXCEL中的應用,并通過實例-利用DDE在EXCEL中輸出PB數據并同步打印來說明PB與EXCEL的數據通訊。

[關鍵詞]DDE 應用程序名 主題名 項目名

中圖分類號:TN92文獻標識碼:A文章編號:1671-7597(2009)0310031-01

一、引言

PowerBuilder是一種強有力的企業級數據庫應用系統開發工具,利用它可以方便地開發出數據庫系統的前臺應用軟件。但由于用PB所開發的報表具有一定的局限性:報表的表頭、列寬以及單元格的背景顏色和字體等都不能在應用程序中由用戶來進行調整。而Excel是Microsoft公司的專業的表格處理軟件。我們可以利用DDE技術,通過按鈕響應來實現在PB中把數據庫中的數據傳送到Excel中,以便由用戶在Excel中調整打印報表。

二、正文

(一)DDE技術簡介

DDE英文全稱是DynamicDataExchange,中文叫動態數據交換,它是微軟公司為在應用程序之間傳遞數據所制定的第一個標準。DDE用于在Windows平臺上的兩個正在運行的應用程序之間動態交換數據,它是一種在Windows操作系統中基于消息的協議。動態數據交換總是發生在兩個正在運行的程序之間,在這兩個應用程序之間相互發送和接收命令及數據。這兩個正在運行的程序分別稱為客戶程序和服務器程序。

(二)DDE技術在PB和EXCEL中的應用

Powbuilder支持DDE技術,它既可以是用來提供數據和功能的DDE服務器,也可以是用來請求和顯示數據的DDE客戶端。它的內部提供了一系列的PowerSript函數,通過調用內置函數和處理事件來實現相互之間的通信。當命令或數據從客戶傳向服務器或從服務器傳向客戶端時,將會出發生DDE事件。同樣,EXCEL也是一個支持DDE的應用程序,它一般用來作為DDE的服務器端。

由于通常一個應用程序可以和多個服務器進行數據通信,為了使DDE客戶程序能夠唯一標志一個DDE服務器應用程序,DDE使用一種約定的命名方法來標志服務器應用程序,這種命名方法包括了:應用程序名、主題名和項目名。應用程序名用于指出特定的DDE服務器應用程序名,如Excel代表Microsoft Excel,而主題名則進一步確定當前應用程序與DDE服務器會話的主題內容,例如對EXCEL程序來說,它的主題名是指一個具體的工作表文檔名。而項目名則是為了進一步確定預制通信的內容,對EXCEL程序是指工作表中的具體單元格名。

(三)PowerBuilder與Excel利用DDE技術傳遞數據實例

在這個實例中PB作為通信的客戶端,而Excel作為通信的服務器端。在PB窗口中放一個數據控件用來存放數據窗口中的數據。并放置五個按鈕,前三個按鈕標題是插入、刪除和更新,是對數據的操縱。第四個按鈕標題是打開預設文件,第五個按鈕標題是“保存數據到預設文件并打印”,在這兩個按鈕上加單擊事件腳本來實現DDE技術。其次,我們還需建立一個EXCEL文件取名為chengji.xls,并在此文件中設置好表頭和單元格樣式以及求和和求平均公式。

在兩個應用程序進行數據傳遞之前,首先要使兩個應用程序都啟動才行。PB應用程序顯然已啟動,啟動excel文件的程序如下,如run("c:program filesMicrosoft officeofficeExcel.exe+chengji.

xls",minimized!)。然后開始在PB中和excel中建立DDE連接以便進行動態數據交換。DDE客戶端與服務器端的連接共有三種:冷連接、暖連接和熱連接。根據三種連接的優劣性進行比較選用了暖連接。程序如下:

handle=OpenChannel("Excel","chengji.xls")

for I= 1 to n

SetRemote("r"+string(I+1)+"c1",string(dw_1.getitemnumber(I,1)),handle)

SetRemote("r"+string(I+1)+"c2",dw_1.getitemstring(I,2),handle)

SetRemote("r"+string(I+1)+"c3",string(dw_1.getitemnumber(I,3)),handle)

SetRemote("r"+string(I+1)+"c4",string(dw_1.getitemnumber(I,4)),handle)

SetRemote("r"+string(I+1)+"c5",string(dw_1.getitemnumber(I,5)),handle)

SetRemote("r"+string(I+1)+"c6",string(dw_1.getitemnumber(I,6)),handle)

SetRemote("r"+string(I+1)+"c7",string(dw_1.getitemnumber(I,7)),handle)

next

在應用程序之間除了可以動態交換數據外,還可以執行遠程DDE命令實用函數ExecRemote。如下:

ExecRemote("[print()]",handle)

ExecRemote("[close(true)]",handle)

ExecRemote("[quit()]","Excel","system")

最后是關閉dde連接的程序:CloseChannel(handle)。

三、總結

雖然DDE技術并不是一種新技術,而且它在逐漸被OLE技術所代替,DDE其實是OLE技術的前身,而且DDE的語法很好理解,程序的運行速度也比較快,是一種方便且簡單易學的技術。

參考文獻:

[1]王晟,PowerBuilder數據庫開發經典案例解析[M].清華大學出版社,2005(04).

[2]沈良忠,PowerBuilder數據庫開發教程[M].電子工業出版社,2008(03).

主站蜘蛛池模板: 特级欧美视频aaaaaa| 国产一区二区福利| 九色综合视频网| 欧美h在线观看| 亚洲黄色视频在线观看一区| 午夜福利在线观看成人| 青青草一区二区免费精品| 国产九九精品视频| 欧美国产三级| 国产第三区| 人妻无码中文字幕第一区| 91国内外精品自在线播放| 蜜桃视频一区| 欧洲成人免费视频| 日韩成人在线视频| 青青青草国产| 国产三级国产精品国产普男人| 国产成人综合久久| 青青草国产精品久久久久| Jizz国产色系免费| 亚洲国产精品无码久久一线| 免费看av在线网站网址| 午夜不卡视频| 四虎影视8848永久精品| 日韩精品一区二区深田咏美| 欧美三级不卡在线观看视频| 国产日韩欧美成人| 欧美日韩另类国产| 亚洲精品高清视频| 亚洲成a人在线观看| 久久久久国产精品嫩草影院| 国产亚洲精品自在久久不卡 | 欧美a级在线| 91小视频在线观看免费版高清| 乱人伦视频中文字幕在线| 精品人妻一区无码视频| 国产福利免费在线观看| 91网红精品在线观看| 波多野结衣无码AV在线| 久久综合一个色综合网| 国产理论精品| 日韩欧美高清视频| 日本黄色a视频| 亚洲综合18p| 久久夜色撩人精品国产| 欧美性精品| 看av免费毛片手机播放| 日韩精品一区二区三区免费| 国产极品嫩模在线观看91| 国产精品粉嫩| 亚洲三级a| 丁香婷婷激情综合激情| 黄色在线网| 尤物午夜福利视频| 久久精品人妻中文视频| 91精品专区国产盗摄| 一级毛片在线免费看| 国产免费怡红院视频| a毛片在线免费观看| 久久综合久久鬼| 国产成人资源| 国产91精品久久| 欧美日在线观看| 国产成人精品2021欧美日韩| 国产一级妓女av网站| 国产成人久视频免费| 欧美亚洲网| 免费在线a视频| 99久久性生片| 有专无码视频| 日韩国产高清无码| 亚洲精品大秀视频| 人妻丰满熟妇AV无码区| 91精品亚洲| 国产靠逼视频| 成人免费网站久久久| 国产剧情国内精品原创| 久久久久国产一级毛片高清板| 国产精品九九视频| 美美女高清毛片视频免费观看| 在线国产你懂的| 在线国产毛片|