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

有關Record/Key delete ..的錯誤....

尚未結案
albert0917
一般會員


發表:5
回覆:4
積分:1
註冊:2004-01-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-05 23:04:26 IP:210.241.xxx.xxx 未訂閱
小弟要寫一個更新程式... 但都會發生Record/key delete的錯誤... 實在是找不出bug...麻請幫忙...    我想在一開始時,就更新資料... 所以將程式寫在Form的OnActivate中..    var   mili_total,in_int,surplus_int:integer;   out_mili: String;    for update_a := 1 to table1.RecordCount do begin        table1.Edit;        Table1.FieldByName('today').AsString := datetostr(now);           //當兵天數        in_int := CalcDates( strtodate(DB_in.Field.Text),NOW,1);                 //存入當兵天數        Table1.FieldByName('mili_day').AsString := inttostr(in_int);          //將年、月換算成日     mili_total := array_M(strtoint(Table1.FieldByName  ('sub_year').AsString),strtoint(Table1.FieldByName('sub_month').AsString));           //退伍日期計算        out_mili := datetostr(strtodate(Table1.FieldByName('in_mili').AsString) + mili_total - strtoint(Table1.FieldByName('prior').AsString)- strtoint(Table1.FieldByName('mili').AsString));        Table1.FieldByName('out_mili').AsString := out_mili;         //破冬計算      if in_int < 365 then      Table1.FieldByName('now').AsString := '菜鳥'      else      Table1.FieldByName('now').AsString:= '破冬';          //剩於天數       surplus_int := CalcDates(NOW,strtodate(out_mili),1) + 1;       Table1.FieldByName('surplus').AsString := inttostr(surplus_int);       //剩於小時數    Table1.FieldByName('hour').AsString := inttostr(surplus_int * 24);            //儲存         Table1.Post ;         if table1.Eof then         break         else         Table1.Next; end;         
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-06 01:31:06 IP:203.204.xxx.xxx 未訂閱
以迴圈內部來看 應該沒有問題才對,先不管運算邏輯部份
1.最好在執行For迴圈之前 將Table1歸回起點
  Table1.First;  // 加入這行
  for update_a := 1 to table1.RecordCount do
.....    2.循環前的判斷改成以下程式
  //儲存
  Table1.Post ;
  Table1.Next;
  // 以下判斷其實是不需要的
  if table1.Eof then
    break;
end;    
若還不行的話 你應該可在Delphi的環境下追縱,看程式是在那一行出錯,或許根本不在這程序內出錯, 另 For Update_a:=1 ...... 沒有宣告可行嗎? 發表人 - chance36 於 2004/02/06 01:37:18
albert0917
一般會員


發表:5
回覆:4
積分:1
註冊:2004-01-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-06 08:03:37 IP:210.241.xxx.xxx 未訂閱
我都有在開始更新前 加入table1.first.. 但還是會出現這樣的錯誤... 追蹤到原始碼時... 錯誤都會出現在.. table1.edit.. or table1.post
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-06 23:24:57 IP:211.20.xxx.xxx 未訂閱
引言: 我都有在開始更新前 加入table1.first.. 但還是會出現這樣的錯誤... 追蹤到原始碼時... 錯誤都會出現在.. table1.edit.. or table1.post
可以說明Table1對映表格的主KEY或Table1是否有設定索引?那其鍵值為何? 若有索引而在上述更新動作中又有動到該欄位值造成記錄的先後次序變更,也會造成錯誤,請確認! 發表人 - chance36 於 2004/02/06 23:26:22
albert0917
一般會員


發表:5
回覆:4
積分:1
註冊:2004-01-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-07 21:18:02 IP:210.241.xxx.xxx 未訂閱
謝謝...把索引關掉...就不會產生此錯誤了... 程式就執行正常了...謝謝.. 再另外請教一個問題... 我將資料檔做成DBF格式... 則一定要安裝BDE才可正常執行..... 請問BDE有地方可以下載嗎?? 還是要安裝delphi才會出現..
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-07 21:36:46 IP:203.204.xxx.xxx 未訂閱
在KTOP 輸入BDE搜尋就有一堆  以下提供一個連結(在KTOP找到的) ftp://ftp.borland.com/pub/bde/devsupport/updates/bde511en.exe
系統時間:2024-11-25 20:22:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!