如何得知 DBASE 資料被寫入鎖定? |
答題得分者是:P.D.
|
y2485967
一般會員 ![]() ![]() 發表:9 回覆:0 積分:1 註冊:2002-10-21 發送簡訊給我 |
|
P.D.
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 感謝 jackkcg 回信指教,但我想問再local database 中貞測寫入鎖定?你必須用 dbi function(此動作必須安裝 bde 才可以使用), 範例如下 請 uses Db, DBTables, DBConsts, DbiTypes, DbiProcs; 以上這幾個不一定會全部用到, 我不確定那一個不會用到, 你自個兒試 // aDataSet 為要鎖定的TableName, 例如 Table1 function RecordLock(aDataSet: TDataSet): boolean; var RecordProps: RECProps; wresult: DBIresult; begin with (aDataSet as TTable) do begin if State = dsInactive then begin Application.MessageBox(pChar('無法鎖定被關閉的資料庫'), '網路錯誤',MB_ICONERROR MB_OK); exit; end; UpdateCursorPos; wresult:= DbiGetRecord(Handle, dbiWriteLock, nil, @RecordProps); if wresult = DBIERR_NONE then begin DbiRelRecordLock(Handle, False); result:= False; end else begin IDkey:=Application.MessageBox('記錄被鎖定','錯誤' MB_ICONERROR MB_OK); end; end; // 另外解除鎖定 //rlAll=True 表示解除所有鎖定記錄, 反之則解除當筆 function RecordUnlock(aDataSet: TDataSet; rlAll: boolean): boolean; begin result:= True; if aDataSet is TTable then with (aDataSet as TTable) do begin if State = dsInactive then begin Application.MessageBox(pChar('無法解除關閉的資料庫'), '錯誤',MB_ICONERROR MB_OK); exit; end; try DbiRelRecordLock(Handle, rlAll); result:= False; except Application.MessageBox('無效命令','錯誤',MB_OK); end; end; end;~goodLuck |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |