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

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

多用戶應用程序中應注意問題

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


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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蕲春县| 扬中市| 湟中县| 邵阳市| 伊春市| 双牌县| 礼泉县| 河南省| 萨迦县| 南昌县| 武安市| 扬中市| 灵川县| 盘山县| 河池市| 武邑县| 西华县| 英吉沙县| 十堰市| 吉隆县| 临泽县| 新平| 土默特左旗| 独山县| 广平县| 桑日县| 贺州市| 淮安市| 临西县| 景泰县| 榆林市| 湖北省| 马边| 内黄县| 和田县| 沂南县| 永济市| 长宁县| 南昌县| 宁阳县| 禹城市|