明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

在powerbuilder中向Excel傳遞數(shù)據(jù)

[摘要]PowerBuilder是面向?qū)ο蟮臄?shù)據(jù)庫開發(fā)工具之一,它可以操縱很多大型數(shù)據(jù)庫和桌面數(shù)據(jù)庫,但它對中國式報表打印不太方便,而 Excel對此卻非常容易,若把兩者結(jié)合起來使用則可取長補短。   建立...
    PowerBuilder是面向?qū)ο蟮臄?shù)據(jù)庫開發(fā)工具之一,它可以操縱很多大型數(shù)據(jù)庫和桌面數(shù)據(jù)庫,但它對中國式報表打印不太方便,而 Excel對此卻非常容易,若把兩者結(jié)合起來使用則可取長補短。

  建立一個Excel工作表如圖1,以mxz.xls為文件名保存。  

  然后編寫腳本如下并執(zhí)行:

  long handle_1

  handle_1=openchannel(″excel″,″mxz.xls″) //建立與Excel的通道

  setremote(″r2c1″,″序號″,″excel″,″mxz.xls″)

  setremote(″r2c2″,″摘要″,″excel″,″mxz.xls″)

  setremote(″r2c3″,″收入″,″excel″,″mxz.xls″)

  setremote(″r2c4″,″支出″,″excel″,″mxz.xls″)

  setremote(″r2c5″,″余額″,″excel″,″mxz.xls″)

  setremote(″r2c6″,″日期″,″excel″,″mxz.xls″)

  execremote(″[Save()]″,″excel″,″xmk.xls″)

  上述腳本執(zhí)行后,再打開mxz.xls,它變成了如圖2的模樣:

  其實,這段腳本用到了三個DDE客戶函數(shù):OpenChannel()、SetRemote()和ExecRemote(),其實,掌握了這三個DDE函數(shù),就可以隨心所欲地寫出打印功能十分強大的PowerBuilder數(shù)據(jù)庫程序來。

  一、OpenChannel()   它的功能是打開連接DDE服務(wù)器的通道。

  語法   OpenChannel ( applname, topicname {, windowhandle } )

  參數(shù) applname:string類型,指定DDE服務(wù)器應(yīng)用的DDE名稱。

  topicname:string類型,指定命令中要使用的DDE應(yīng)用的數(shù)據(jù)或?qū)嵗?br>
  windowhandle:long類型,可選項,指明用作DDE客戶的PowerBuilder窗口的窗口句柄。省略該參數(shù)時,當前應(yīng)用中的活動窗口用作DDE客戶。  

 返回值 long類型。函數(shù)執(zhí)行成功時返回一個正數(shù)作為已打開通道的句柄,發(fā)生錯誤時返回下述值之一:   -1打開失敗。  

-9句柄為NULL。   

示例: 下面的代碼建立到Excel的DDE通道,之后請求三個單元格的數(shù)據(jù),并把這些數(shù)據(jù)保存在數(shù)組s_regiondata中。DDE會話的客戶端窗口為w_ddewin:

long handle   

string s_regiondata[3]

handle = OpenChannel(″Excel″, ″REGION.XLS″, Handle(w_ddewin))

GetRemote(″R1C2″, s_regiondata[1], handle, Handle(w_ddewin))   

GetRemote(″R1C3″, s_regiondata[2], handle, Handle(w_ddewin))

GetRemote(″R1C4″, s_regiondata[3], handle, Handle(w_ddewin))

CloseChannel(handle, Handle(w_ddewin))   

二、SetRemote()   功能是請求服務(wù)器應(yīng)用把指定項設(shè)置為指定值。該函數(shù)有兩種語法格式,下面分別予以介紹:  

 語法一,請求DDE服務(wù)器應(yīng)用接收保存在指定位置的數(shù)據(jù),該格式不要求事先打開通道,適用于僅發(fā)出少數(shù)幾個請求的情況。

  SetRemote ( location, value, applname, topicname )

  參數(shù)   

location:string類型,指明要DDE服務(wù)器的哪一部分接收數(shù)據(jù),位置的表達方式由具體的DDE服務(wù)器決定。   

value:string類型變量,指定發(fā)送給DDE服務(wù)器的數(shù)據(jù)。

applname:string類型,指定DDE服務(wù)器應(yīng)用的DDE名稱。   

topicname:string類型,指定要接收數(shù)據(jù)的DDE應(yīng)用的數(shù)據(jù)或?qū)嵗?  

返回值   integer類型。函數(shù)執(zhí)行成功時返回1,發(fā)生錯誤時返回下述值之一:

  -1未啟動連接。

 。2請求被拒絕,

如果任何參數(shù)的值為NULL,SetRemote()函數(shù)返回NULL。  

 示例:下面的代碼請求Excel把工作表SALES.XLS的第5行第8列單元的值設(shè)置為5500:

  SetRemote(″R5C8″, ″5500″, ″Excel″, ″SALES.XLS″)  

 語法二,請求DDE服務(wù)器應(yīng)用接收保存在指定位置的數(shù)據(jù),該格式適用于熱連接的情況,即應(yīng)用程序已經(jīng)與服務(wù)器建立通道。   

SetRemote ( location, value, handle {, windowhandle } )   參數(shù)  

 location:string類型,指明要DDE服務(wù)器的哪一部分接收數(shù)據(jù)。位置的表達方式由具體的DDE服務(wù)器決定。   value:string類型變量,指定發(fā)送給DDE服務(wù)器的數(shù)據(jù)。  

 handle:long類型,指定使用的DDE通道句柄。  

 windowhandle:long類型,可選項,指明用做DDE客戶的PowerBuilder窗口的窗口句柄。省略該參數(shù)時,當前應(yīng)用中的活動窗口用做DDE客戶。   

返回值   integer類型。函數(shù)執(zhí)行成功時返回1,發(fā)生錯誤時返回下述值之一:

 。1未啟動連接。   

-2請求被拒絕。

-9 Handle參數(shù)的值為NULL。

  示例:下面的代碼先打開一個通道,然后請求Excel將第5行第8列單元的值設(shè)置為5500:

  long hand   

lehandle = OpenChannel(″Excel″, ″REGION.XLS″)   

SetRemote(″R5C8″, ″5500″, handle)   

三、ExecRemote()  

 它的功能是請求DDE服務(wù)器應(yīng)用程序執(zhí)行命令。該函數(shù)也有兩種語法格式,下面分別予以介紹。

  語法一,直接向DDE服務(wù)器應(yīng)用發(fā)送一條命令(冷連接方式);

  ExecRemote ( command, applname, topicname )   

參數(shù)   

command:string類型,其值為希望DDE服務(wù)器應(yīng)用執(zhí)行的命令,命令格式和語法需要參看DDE服務(wù)器應(yīng)用的文檔applname:string類型,指定服務(wù)器應(yīng)用的DDE名稱。   

topicname:string類型,指定命令中要使用的DDE應(yīng)用的數(shù)據(jù)或?qū)嵗祷刂礗nteger。函數(shù)執(zhí)行成功時返回1,發(fā)生錯誤時返回下述值之一:   

-1未啟動連接。   

-2請求被拒絕。

-3不能終止服務(wù)器。   

如果任何參數(shù)的值為NULL,ExecRemote()函數(shù)返回NULL。   

示例:下面的語句請求Excel將活動工作表的內(nèi)容保存到文件REGION.XLS中:

  ExecRemote(″[Save()]″, ″Excel″, ″REGION.XLS″)   

語法二,應(yīng)用程序打開某個通道后向DDE服務(wù)器應(yīng)用發(fā)送命令(熱連接方式)   

ExecRemote ( command, handle {, windowhandle } )   

參數(shù)   

command:string類型,其值為希望DDE服務(wù)器應(yīng)用執(zhí)行的命令,命令格式和語法需要參看DDE服務(wù)器應(yīng)用的文檔 handle:long類型,指定使用的DDE通道句柄   

windowhandle:long類型,可選項,指明用做DDE客戶的PowerBuilder窗口的窗口句柄。省略該參數(shù)時,當前應(yīng)用中的活動窗口用做DDE客戶,返回值integer。函數(shù)執(zhí)行成功時返回1,發(fā)生錯誤時返回下述值之一:  

-1未啟動連接。  

-2請求被拒絕

-9handle參數(shù)的值為NULL。   

(新疆 尚建軍)