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).

主站蜘蛛池模板: 国产一级特黄aa级特黄裸毛片 | 精品偷拍一区二区| 91成人免费观看在线观看| 成人噜噜噜视频在线观看| 久久久久久午夜精品| 免费久久一级欧美特大黄| 四虎成人在线视频| 精品成人一区二区| 久久亚洲美女精品国产精品| 亚洲天堂视频在线观看免费| 宅男噜噜噜66国产在线观看| AV熟女乱| 大陆精大陆国产国语精品1024 | 亚洲午夜福利精品无码| 91精品国产情侣高潮露脸| 亚洲精品少妇熟女| 熟女视频91| 国产精品不卡片视频免费观看| 亚洲黄色高清| 妇女自拍偷自拍亚洲精品| 欧美第二区| 欧美精品二区| 精品国产美女福到在线不卡f| 99精品热视频这里只有精品7| 日韩无码视频播放| 亚洲精品老司机| 亚洲成人免费看| 日韩在线欧美在线| 国产精品手机视频一区二区| 扒开粉嫩的小缝隙喷白浆视频| 亚洲欧州色色免费AV| 久久99热66这里只有精品一| 九九热精品视频在线| 中文无码影院| 亚洲精品麻豆| 欧美日韩国产综合视频在线观看| h网站在线播放| 国产肉感大码AV无码| 最新精品国偷自产在线| 精品欧美日韩国产日漫一区不卡| 777国产精品永久免费观看| 99视频在线精品免费观看6| www.精品国产| 五月激激激综合网色播免费| 精品国产美女福到在线直播| 福利视频久久| 精品国产自在在线在线观看| 国产毛片高清一级国语| 伦精品一区二区三区视频| AV网站中文| 99视频在线免费| 在线免费观看AV| 精品福利视频导航| 国产91在线|中文| 日韩第九页| 国产男女XX00免费观看| 国产精品私拍99pans大尺度| 中文字幕天无码久久精品视频免费 | 在线看片免费人成视久网下载| 免费欧美一级| 99久久国产综合精品2020| 女人18毛片水真多国产| 五月天天天色| 欧美在线中文字幕| av手机版在线播放| 亚洲国产成人久久77| 亚洲日韩精品综合在线一区二区| 国产亚洲精品yxsp| 美女一级毛片无遮挡内谢| 成人永久免费A∨一级在线播放| 一级全黄毛片| 久久国产乱子| 国产成人禁片在线观看| 国产精品嫩草影院视频| 国产精品 欧美激情 在线播放| 91网址在线播放| 国产欧美高清| 99久久精品国产自免费| 久久一本日韩精品中文字幕屁孩| 国产全黄a一级毛片| 91精品专区| 欧美一区二区三区香蕉视|