国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

多用戶應用程序中應注意的其它問題(2)--多客戶環境下VB數據庫編程之(9)

2019-11-18 17:45:41
字體:
來源:轉載
供稿:網友
問題二再查詢與事務

1.再查詢數據

在多用戶應用程序中,如果以可視的形式把數據顯示在窗口中,則需要用最新的數據來更新用戶的視圖。而要獲得由其他用戶修改了的最新視圖,應用程序必須顯式地對數據執行再查詢操作。為了獲得記錄集中數據的最新視圖,首先應確定記錄集是否支持Requery方法。如果ReCordset對象的Restartable屬性值為Tme,則可以使用Requery方法來刷新Recordset對象的內容。如果記錄集不支持Requery方法,則必須用OpenRecordset方法再次打開記錄集。一般說來,重新打開記錄集比使用Requery方法要慢一些。下面這個過程,用來測試一個記錄集是否可執行再查詢。

過程如下:

FunctionRequeryRecordset(dbsAsDatabase,rstAsRecordset)AsInteger
OnErrorResumeNext
'能夠再查詢記錄集嗎?
Ifrst.Restartable=FalseThen
requeryRecordset=-1
EXitFunction
Endlf
rst.Requery'再查詢記錄集
SelectCaseErr'處理所有錯誤
Case0
RequeryReCordset=0
EXitFunction
CaseElse
Err=0
'重新打開記錄集
'使用rstNane來獲取SQL
'字符串、表或QueryDef的值
'記錄集最初是基于它們的
Setrst=dbs.OpenRecordset(rst.Name,rst.Type)
SelectCaseErr
Case0
RequeryRecordset=0
EXitFunction
CaseElse
'不返回錯誤給調用程序
Err=0
RequeryRecordset=-l
EXitFUnctlon
EndSelect
EndSelect
EndFunction

用上面的過程可以再查詢一個指定的記錄集。如果再查詢成功,則過程返回0;如果程序不能對記錄集進行再查詢,則重新打開記錄集。如果不能重新打開記錄集,則過程返回-1。該過程有兩個參數,其中參數dbs是一個數據庫對象;而rst是一個Recordset對象。為了調用上面的過程,可以在窗體上畫一個命令按鈕,然后編寫如下的事件過程:

Endif
EndSub

程序運行后,單擊命令按鈕,將調用上面的過程,然后根據具體情況顯示相應的信息框。在一般情況下,大多數Recordset對象是可重啟動的(或者是可以被再查詢的),但基于傳遞查詢和沒有固定列寬的交叉表查詢的Recordset對象例外,不能再查詢這些類型的Recordset對象,為了獲得數據的最新狀態,必須重新打開這些對象。

2.在多用戶環境中使用事務

可以用MicrosoftJet事務把更新劃分為多個單元,使它能夠被當作整體提交或回退。由于事務緩沖區的更新是臨時文件,而不是實際的表,所以它們在多用戶環境中也是有用的。在多用戶環境中,事務的一般用途是:確保用戶在變更共享數據時,所看到的共享數據的視圖是完整的。例如,假定應用程序正在執行更新數據的代碼,而另一個用戶又正在生成相同數據的報表。如果更新沒有被包裝進事務中,則生成報表的用戶接收到的數據可能是不一致的。而如果把更新包裝進事務中,則可以確保共享數據的其它用戶視圖在代碼結束運行之前不會受到代碼的影響。注意,不要使事務保持打開的時間太長。由于編輯事務而產生的所有鎖定,在事務被提交或回退之前,將保持鎖定狀態,這可能會對應用程序的多用戶并發產生有害的影響。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定南县| 绥芬河市| 衡南县| 内江市| 于田县| 泸定县| 泸西县| 江安县| 常德市| 固阳县| 乐平市| 怀集县| 宕昌县| 黄骅市| 剑阁县| 金堂县| 诸暨市| 金山区| 宁国市| 唐山市| 凯里市| 德化县| 宁乡县| 绥化市| 曲麻莱县| 五家渠市| 雷波县| 凤冈县| 宣武区| 日照市| 衡南县| 广州市| 桂林市| 永靖县| 社旗县| 宁晋县| 青岛市| 芦山县| 芦山县| 博爱县| 平乐县|