線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1102
推到 Plurk!
推到 Facebook!

請教主/明細表問題

尚未結案
skycap
一般會員


發表:10
回覆:14
積分:4
註冊:2002-11-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-20 11:52:46 IP:61.216.xxx.xxx 未訂閱
請問:      我使用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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-20 12:16:49 IP:63.84.xxx.xxx 未訂閱
您好﹗    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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-20 14:16:59 IP:61.216.xxx.xxx 未訂閱
引言: 您好﹗ 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-20 15:29:07 IP:61.70.xxx.xxx 未訂閱
引言: 問題﹝二﹞:user要求明細表無論在哪一筆插入,都必須在那個位置,不可放在最
在Afterinsert事件中重編以下的流水號( 1),試試 發表人 - jeffreck 於 2003/09/20 15:42:27
skycap
一般會員


發表:10
回覆:14
積分:4
註冊:2002-11-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-23 10:09:09 IP:61.216.xxx.xxx 未訂閱
引言:
引言: 問題﹝二﹞:user要求明細表無論在哪一筆插入,都必須在那個位置,不可放在最
在Afterinsert事件中重編以下的流水號( 1),試試 發表人 - jeffreck 於 2003/09/20 15:42:27
若要在Afterinsert中重編編號會有問題,不知為何?就如同我第一個問題一樣, 很奇怪的是,只要不是最後一筆,一作Edit,在編輯完後,似乎那個ADOQuery就會自動存檔(但未寫回資料庫),其他筆數資料就會回復,若要Insert第二筆,則編完號, ,資料建完,一移到下一筆,則這個編輯的第二筆資料,會自動跑到最後一筆,編號也變成最後一筆的編號,連資料都變成其上一筆的資料,除了數值金額外. 是資料已經存入記憶體了嗎?才造成上述的情況? 是否無法選擇插入的位置了呢? 也無法重編輯其他已存資料?
skycap
一般會員


發表:10
回覆:14
積分:4
註冊:2002-11-07

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-23 11:19:11 IP:61.216.xxx.xxx 未訂閱
我用ADO.onWillChangeRecord顯示正在異動的 Record 狀態(DataSet.Recordset.Status), 只有最後一筆是adRecModified,其他筆皆是adRecUnmodified.. 有辦法改成adRecModified嗎?
系統時間:2024-09-09 4:07:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!