如何運用 P.D兄 解釋 DBASE Lock 問題? |
答題得分者是:P.D.
|
y2485967
一般會員 發表:9 回覆:0 積分:1 註冊:2002-10-21 發送簡訊給我 |
感謝 P.D 兄來信指導,但我還有一些疑問?
1.BDE CONFIG 如何設定成網路可以使 A,B 兩台電腦
使用同一個 TEST.DBF 知道 哪一方正在 LOCK(編輯)?
2.若 TSET.DBF 中有一個 SEQ Field(欄位)為自動流水號
如何防止 A,B 兩台電腦同時在(Test.DBF) 新增一筆資料
流水號會相同?
3.執行 Table.BatchMove 目的檔與來源檔
BDE 是否會自動 File(TABLE) IS LOCK
寫如何得知 BATCHMOVE 已完成或者失敗
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
感謝 P.D 兄來信指導,但我還有一些疑問?
1.BDE CONFIG 如何設定成網路可以使 A,B 兩台電腦
使用同一個 TEST.DBF 知道 哪一方正在 LOCK(編輯)?
這個問題, 在網站上有討論許多, 你可以找找看, 因為這個說來話長,
我去頭掐尾省中間, 抓重點說
1.
A台當->SERVER
B台當->CLIENT
2.
A,B台BDE的CONFIG頁次中Configuration->System->Init->LocalShare->True
3.
B台建立一個磁碟共享目錄(例如O:\)
4.
B台BDE的CONFIG頁次中Configuration->Drivers->Native->Paradox->Net Dir指向 O:
(如果是DBF本項不做)
5.B台BDE的DataBases頁次中Alias(視你自己的設定), 其中的Path指向 O:的資料庫位置 O.K.
2.若 TSET.DBF 中有一個 SEQ Field(欄位)為自動流水號
如何防止 A,B 兩台電腦同時在(Test.DBF) 新增一筆資料
流水號會相同?
這個問題太難了, 原本在網路上你要使用Local Database 來共享一個自動流水號, 要考慮的層面太多, 無法一言以蔽之, 我所採的方式是以另一個資料庫來記錄已開序號, 只要新增就向該資料庫索取一新號同時回存下來, 而只要該新號被索取後, 不論user是否放棄該筆新增記錄, 此號永不再使用, 這樣才不會造成其他網路者的誤取, 但有一個問題是此序號一定會發生不連號的情況, 如果你十分注重連號, 則必須再自個想想辦法了, (我已經想了十年, 仍想不到一個最完善的做法)
3.執行 Table.BatchMove 目的檔與來源檔
BDE 是否會自動 File(TABLE) IS LOCK
寫如何得知 BATCHMOVE 已完成或者失敗
Batchmove如果執行有問題, 自然會跳出錯誤視窗並中斷, 所以你用try..except即可得知, 另外batchmove有一個problemTableName, 可以指定batchMove中有問題的記錄轉存到該資料庫, 你可以從這裡下手(不過我來沒有用過這項)
另外使用BatchMove, 強烈建議你要鎖定整個資料表(Lock Table), 而不是鎖定一筆記錄, 絕對會出問題(即使你BatchMove設定只有一筆), BDE 基本上是不會對資料庫做任何自動的鎖定行為, 不管在下那一個指令, 這是BDE本身不干預政策, 所以為何BDE只提供鎖定功能, 並不封包成簡單的鎖定函式(除TTable.locktable)
另外, 看你問那麼多有關bde問題, bde在delphi5以後Borland即不再進行維護與發展, 未來勢必消失, 如果你要設計的資料庫系統是要做為公司以後運行之用的話, 不建議你走bde, 趁早改走 ado 吧!但ado的鎖定模式我並未進行研究, 在此無法為你解說了~!
另外, 如果這篇問題是延續上一篇的問題, 建議你在同一篇(上一篇)內容回覆, 小心站長扣你分哦!(開玩笑啦!)
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |