回复 35楼 lyxc34
每個Page不同的數據環境,類似單機共享模式,即一機多用戶,共享處理手段是免不了的。這裡,關鍵的問題是兩個Page都要修改數據時怎麽辦?一旦有這種現實,就無法說不影響對方數據環境。這個意思就是説,有沒有這種必要?
好了,假定真要這樣做,也是有辦法的。
首先,盡量隔絕兩個Page訪問同一個數据庫的途徑,即它們訪問同一個數据庫時,使用不同的別名(工作區),這可以通過重復打開數據表來實現,USE命令中用AGAIN參數,可以重復打開同一個數据表,但要用不同的別名,在兩個Page中的程序,各自用自己的一套別名訪問數據(假定自己不知道有別的Page存在以及對方打開了什麽)。
其次,激活數據環境的時機,視你如何激活另一個Page中代碼的方式。如果你確保都是通過點擊PageFrame標簽激活頁面的,那自然可以在Page.Activate事件中設置數據環境(同時在Deactivate事件中關閉數據環境)。若非如此,則應在PageFrame中一次性統一設置各Page所需的數據環境,效果是一樣的——因爲每個Page只按分配給它們的別名檢索數據庫,不會弄混。事實上,在同一臺機器同一個程序中,基本上沒必要分開數據環境。
第三,時刻注意數據衝突,一切以共享模式考慮問題。
Form的情況相對簡單,Form控件有私有數據期,設置它,每個Form啓動時會複製一份數據副本給自己使用。其原理其實與我上面說的相似,都是同一套實體不同的訪問指針,也是Windows内核的基本處理辦法(Windows中實際上任何程序生成的窗口,都是用同一個窗體内核代碼,所以表現才會如此一致)。
[
本帖最后由 TonyDeng 于 2011-7-25 23:04 编辑 ]