网站导航:首页 -> 软件水平考试 -> 系统工程师考试认证 -> 在builder中向Excel传递数据

在builder中向Excel传递数据

  powerbuilder是面向对象的数据库开发工具之一,它可以操纵很多大型数据库和桌面数据库,但它对中国式报表打印不太方便,而 excel对此却非常容易,若把两者结合起来使用则可取长补短。

  建立一个excel工作表,以mxz.xls为文件名保存。  

  然后编写脚本如下并执行:

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

  上述脚本执行后,再打开mxz.xls,它变成了如图2的模样:

  其实,这段脚本用到了三个dde客户函数:openchannel()、setremote()和execremote(),其实,掌握了这三个dde函数,就可以随心所欲地写出打印功能十分强大的powerbuilder数据库程序来。

  1、openchannel()

  它的功能是打开连接dde服务器的通道。

  语法: openchannel ( applname, topicname {, windowhandle } )

  参数:       
  
  applname:string类型,指定dde服务器应用的dde名称。

  topicname:string类型,指定命令中要使用的dde应用的数据或实例。

  windowhandle:long类型,可选项,指明用作dde客户的powerbuilder窗口的窗口句柄。省略该参数时,当前应用中的活动窗口用作dde客户。  

  返回值:long类型。函数执行成功时返回一个正数作为已打开通道的句柄,发生错误时返回下述值之一:  

  -1  打开失败。  

  -9  句柄为null。   

  示例: 下面的代码建立到excel的dde通道,之后请求三个单元格的数据,并把这些数据保存在数组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))