熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL語言 >> 正文

PB環境下分布式應用程序的開發(二)

2013-11-13 12:36:14  來源: SQL語言 

實例

  先看如下兩個圖圖二表示DTS端圖三表示Client端其中DTS已經建立了與數據庫服務器的連接數據窗口中顯示的是所有的數據Client並沒有數據庫接口而是通過DTS間接的訪問數據在數據窗口中顯示的是所有男性職工

圖(二)

圖(三)

  該程序的大部分源代碼如下

  DTS端

  首先定義一個全局變量Transport mytrans;

  開始監聽按鈕中輸入如下代碼

  long ll

  mytrans=create transport

  mytransdriver=winsock

  mytransapplication= //端口號

  mytranslocation= //本地服務器

  ll=mytranslisten() //開始監聽

  if ll<> then

  messagebox(string(mytranserrcode)mytranserrtext)

  return

  end if

  serversettranspool() //設置連接緩沖注意server為應用的名稱

  thistext=正在監聽中

  thisenabled=false

  結束監聽按鈕中輸入如下代碼

  mytransstoplistening() //結束監聽

  destroy mytrans

  cb_text=開始監聽

cb_enabled=true

  建立一個NVO

  利用PB的User Objects畫板建立一個classàcustom的用戶對象建立用戶對象函數nvoretrieve(ref blob bufferstring filter) returns long函數體如下

  long ll

  SQLCADBMS = ODBC

  SQLCAAutoCommit = False

  SQLCADBParm = Connectstring=DSN=person

  connect; //建立與數據庫的連接

  datastore datastore_buffer

  datastore_buffer=create datastore

  datastore_bufferdataobject=dw_person //dw_person是一個數據窗口

  datastore_buffersettransobject(sqlca)

  datastore_bufferretrieve()

  datastore_buffersetfilter(filter)

  datastore_bufferfilter()

  ll=datastore_buffergetfullstate(buffer) //函數getfullstate()和setfullstate()常用於分布式應用程序

  disconnect;

  return ll

  建立NVO的代理對象

  在用戶對象上點鼠標右健選擇Set Proxy Name輸入NVO_dw保存用戶對象

  打開Library畫板NVO_dw輸出為文件以便在客戶端導入該代理

  Client端

  打開Library畫板將剛才輸出的文件導入

  定義兩個全局變量

  connection myconn

  nvo_dw proxy_dw

  連接按鈕中輸入如下代碼

  long ll

  myconn=create connection

  myconndriver=winsock

  myconnapplication= //必須和DTS端的端口號一致

  myconnlocation= //DTS的IP地址

  ll=myconnconnecttoserver() //建立連接

  if ll<> then

  messagebox(string(myconnerrcode)myconnerrtext)

  return

  end if

  thistext=正在連接中

  thisenabled=false

  cb_enabled=true

  cb_enabled=true

  斷開按鈕中輸入如下代碼

  myconndisconnectserver() //斷開連接

  destroy myconn

  cb_enabled=true

  cb_text=連接

  cb_enabled=false

  thisenabled=false

  查詢按鈕中輸入如下代碼

  long result

  blob buffer

myconncreateinstance(proxy_dw) //建立代理對象

  result=proxy_dwnvoretrieve(buffersex=) //檢索所有男性職工

  result=dw_setfullstate(buffer) //dw_是一個數據窗口控件

  四小結及注意事項

  以上程序在WINDOWSPB環境中調試通過在客戶數量很多數據量很大的情況下查詢的速度會快很多

  編程時注意如果NVO的函數體發生變化則無須重新生成代理如果NVO的函數接口發生變化則必須重新生成它的代理並將它輸入到客戶端中

  NVO對象是一個不可視對象只能通過函數調用的方法使用它不可將它作為一個控件放在窗口上


From:http://tw.wingwit.com/Article/program/SQL/201311/16219.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.