向TADODataSet批量添加记录后再提交如何实作? |
尚未結案
|
lovelypp
初階會員 發表:122 回覆:111 積分:46 註冊:2003-02-19 發送簡訊給我 |
|
terrychen
尊榮會員 發表:90 回覆:794 積分:501 註冊:2003-05-01 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 一般來講﹐使用ADODataSet元件平做批量處理的事務﹐需要注意以下兩點﹕
1. ADODataSet元件的CursorType屬性值需為ctKeySet或ctStatic
2. ADODataSet元件的LockType屬性值需為ltBatchOptimistic 舉一個範例如下﹕
1. 正确設定ADOConnection元件的ConnectionString屬性
2. 使用一個ADODataSet元件連接上此ADOConnection元件﹐設定以上注意的兩個屬性之外﹐將CommandType屬性值設定為cmdText﹐CommandText屬性值設為Select * From 資料表名﹐并將其Active屬性設為True﹐即開啟資料庫
3. 在Form中加入DataSource元件﹐指向上游的ADODataSet﹐再加入DBGrid元件和DBNavigator元件﹐其DataSource屬性值指向上游的DataSource元件﹒
4. 加入兩個Button元件﹐一個作用為UpdateBatch﹐即更新資料庫﹐另一個的作用為CancelBatch﹐即取消之前的更新﹒
Button1的OnClick事件中﹕ begin ADODataSet1.UpdateBatch(arAll); end; Button2的OnClick事件中﹕ begin ADODataSet1.CancelBatch(arAll); end;執行範例程式﹐先使用DBNavigator元件的新增或者刪除功能對資料表進行異動﹐然后再分別使用兩個Button元件的事件﹐比較看看就知道其效果了﹒ 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟 |
lovelypp
初階會員 發表:122 回覆:111 積分:46 註冊:2003-02-19 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 程式碼可照同正常的Insert語法﹕
ADODataSet1.Insert; 每筆新增動作之后用Post存入﹕
ADODataSet1.Post; 如果需要真正將新增資料的異動存入資料庫﹐必須使用UpdateBatch做批處理﹕
ADODataSet1.UpdateBatch(arAll) 取消之前的新增異動﹐可使用CancelBatch做批處理
ADODataSet1.CancelBatch(arAll) 參考看看﹗ =====================
努力,相信會獲得美麗!
忻晟
------
忻晟 |
lovelypp
初階會員 發表:122 回覆:111 積分:46 註冊:2003-02-19 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好! CursorType屬性: 指標形態
ctKeySet值: 選出的資料表若事后被其它使用者新增的資料看不到
ctStatic值: 資料移動時完全看不到 LockType屬性: 資料表的鎖定形態
itBatchOptimistic值: 可寫入, 當執行時立即鎖下, 執行Updates時是整批寫入資料, 主要用于ADODataSet元件的批處理功能. 這樣寫有些模糊, 建議您參考一下Help中的說明, 里面寫得比較詳細. =====================
努力,相信會獲得美麗!
忻晟
------
忻晟 |
lovelypp
初階會員 發表:122 回覆:111 積分:46 註冊:2003-02-19 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |