請教主/明細表問題 |
尚未結案
|
skycap
一般會員 ![]() ![]() 發表:10 回覆:14 積分:4 註冊:2002-11-07 發送簡訊給我 |
請問:
我使用D6+MS SQL server 2000+ADOQuery (Client->2000 professional)的情況下:
主表我設定單據編號,用程式帶入,明細表我設定單據編號及明細編號<01,02,03...>,並在資料庫(SQL SERVER)中的索引鍵設定為此兩個欄位(順序->遞增),並建成為一UNIQUE,建立成叢集-CLUSTERED
問題﹝一﹞:若在明細表中,ADOQuery設定為ltBatchOptimistic(Locktype),因為要加總明細表的借貸平衡才能存檔.key入一筆資料後,此時若要修改此筆資料沒有問題,但若再key入下一筆資料,此時要回到上一筆修改,離開此筆卻發現修改的資料又回復成原來的資料?
我測試的結果,總之只有最後一筆資料可以重複編修,但之前的資料卻一編修完就回復成原來的資料? 是否哪裡出錯了? 或是該怎麼處理呢? 問題﹝二﹞:user要求明細表無論在哪一筆插入,都必須在那個位置,不可放在最後一筆? 又該怎麼做呢? 請大家幫幫忙!謝謝!
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 1﹒當ADOQuery的Locktype屬性值設定為ltBatchOptimistic時﹐其意義為允許User做寫入動作并使用于批次更新作業中﹐需要以UpdateBatch方法來更新修改內容: ADOQuery1.UpdateBatch(arAll); 若要取消修改內容﹐可用CancelBatch方法﹕ADOQuery1.CanceleBatch(arAll);
補充﹕若要使用批次更新處理的功能﹐需要符合下列條件﹕
1. CursorType屬性值必須是ctKeySet或者ctStatic;
2. LockType屬性值必須是ltBatchOptimistic 2﹒在第一個問題您有提到明細表的編號是(01)(02)(03)..﹐是否是為自動編號的欄位形態﹖
=====================
努力,相信會獲得美麗!
忻晟 發表人 - cashxin2002 於 2003/09/20 12:23:09
------
忻晟 |
skycap
一般會員 ![]() ![]() 發表:10 回覆:14 積分:4 註冊:2002-11-07 發送簡訊給我 |
引言: 您好﹗ 1﹒當ADOQuery的Locktype屬性值設定為ltBatchOptimistic時﹐其意義為允許User做寫入動作并使用于批次更新作業中﹐需要以UpdateBatch方法來更新修改內容: ADOQuery1.UpdateBatch(arAll); 若要取消修改內容﹐可用CancelBatch方法﹕ADOQuery1.CanceleBatch(arAll); 補充﹕若要使用批次更新處理的功能﹐需要符合下列條件﹕ 1. CursorType屬性值必須是ctKeySet或者ctStatic; 2. LockType屬性值必須是ltBatchOptimistic 2﹒在第一個問題您有提到明細表的編號是(01)(02)(03)..﹐是否是為自動編號的欄位形態﹖ ===================== 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/09/20 12:23:09您好! 不好意思,我沒表達清楚.1.在明細表中我用的是wwDBGrid,在wwNavigater中我自訂一個savebutton,按下此savebutton才作ADOQuery1.UpdateBatch(arAll); 在我編輯時因為尚未按下savebutton,所以尚未更新至資料庫.而我CursorType屬性值是ctStatic. 2.明細表的單據編號及明細編號(01,02,03...)也是我程式中帶入的. |
jeffreck
高階會員 ![]() ![]() ![]() ![]() 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
|
skycap
一般會員 ![]() ![]() 發表:10 回覆:14 積分:4 註冊:2002-11-07 發送簡訊給我 |
引言:若要在Afterinsert中重編編號會有問題,不知為何?就如同我第一個問題一樣, 很奇怪的是,只要不是最後一筆,一作Edit,在編輯完後,似乎那個ADOQuery就會自動存檔(但未寫回資料庫),其他筆數資料就會回復,若要Insert第二筆,則編完號, ,資料建完,一移到下一筆,則這個編輯的第二筆資料,會自動跑到最後一筆,編號也變成最後一筆的編號,連資料都變成其上一筆的資料,除了數值金額外. 是資料已經存入記憶體了嗎?才造成上述的情況? 是否無法選擇插入的位置了呢? 也無法重編輯其他已存資料?引言: 問題﹝二﹞:user要求明細表無論在哪一筆插入,都必須在那個位置,不可放在最在Afterinsert事件中重編以下的流水號( 1),試試 發表人 - jeffreck 於 2003/09/20 15:42:27 |
skycap
一般會員 ![]() ![]() 發表:10 回覆:14 積分:4 註冊:2002-11-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |