全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2450
推到 Plurk!
推到 Facebook!

Record already locked by this session

答題得分者是:P.D.
chi120
一般會員


發表:16
回覆:16
積分:6
註冊:2007-08-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-04-01 08:56:58 IP:61.221.xxx.xxx 訂閱
程式原先可以使用,沒去修改什麼
這幾天無故無法新增資料
出現的錯誤訊息如下
「project pcrspec .exe raised exception class EDBEngineError with message 'Record already locked by this session.'.Process stopped. Use Step or Run to continue.」


請問各位大大,這個錯誤訊息可能的原因為何?
謝謝…!!!!
------
Aki..就算沒有明天
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-04-01 12:01:55 IP:61.67.xxx.xxx 未訂閱
你使用的資料庫是那一種, db(paradox), dbf(dbase), mdb(accdss) or else?
如果是 db 請搜尋程式位置下或其他地方有沒有 paradox.lck, pdoxusrs.lck, 如果有全數刪掉, 應該就可以解開了
chi120
一般會員


發表:16
回覆:16
積分:6
註冊:2007-08-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-04-01 15:30:28 IP:61.221.xxx.xxx 訂閱
使用的是parodox的 .db的資料表
.lck的檔案我之前都刪除過了
問題還是一樣存在
@@ 不知道大大還有沒有別的解答呢
------
Aki..就算沒有明天
chi120
一般會員


發表:16
回覆:16
積分:6
註冊:2007-08-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-04-01 15:59:16 IP:61.221.xxx.xxx 訂閱
使用的是parodox的 .db的資料表
.lck的檔案我之前都刪除過了
問題還是一樣存在
@@ 不知道大大還有沒有別的解答呢
------
Aki..就算沒有明天
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-04-02 00:02:46 IP:61.67.xxx.xxx 未訂閱
如果所有的 lck 都確定移除的話, 
1.請檢查 bde administrator 中 configuration=>drivers=>native=>paradox=>net dir 改到 d:\ 試試看
2.請檢查你自己程式是否有拉一個TDataBase 的元件, 而且是 Active:= True 改為False, 請改為 False 後重新complier 執行
3.請檢查你自己程式中的Table, Query 是否有 Active=True, 請改為 False 後重新complier 執行
===================引 用 chi120 文 章===================
使用的是parodox的 .db的資料表
.lck的檔案我之前都刪除過了
問題還是一樣存在
@@ 不知道大大還有沒有別的解答呢
chi120
一般會員


發表:16
回覆:16
積分:6
註冊:2007-08-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-04-02 09:02:21 IP:61.221.xxx.xxx 訂閱
問題一樣存在 
------
Aki..就算沒有明天
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-04-02 11:46:09 IP:61.67.xxx.xxx 未訂閱
可否丟上你的程式碼(不要用po的, 丟檔案)
chi120
一般會員


發表:16
回覆:16
積分:6
註冊:2007-08-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-04-02 17:43:41 IP:61.221.xxx.xxx 訂閱
檔案功能複雜
我只copy新增時錯誤的程式
(這裡如何將程式丟上來?)

[code delphi]
procedure TFormTireAdd.Button1Click(Sender: TObject);
var Vtireno1 : string;
i,Vno,cnt,Vversion : integer;
xVal : variant;
begin
if kind.ItemIndex = 0 then
begin
IF (Edit1.Text <> '') AND (Edit2.Text <> '') AND (Edit3.Text <> '') AND
(Edit4.Text <> '') AND (opno1.Text <> '') AND (bdep2.Text <> '' ) THEN
BEGIN
i := length(Edit1.Text);
case i of
1 : Vtireno1 := '0' Edit1.Text '-';
2 : Vtireno1 := Edit1.Text '-';
end;
i := length(Edit2.Text);
case i of
1 : Vtireno1 := Vtireno1 '00' Edit2.Text '-';
2 : Vtireno1 := Vtireno1 '0' Edit2.Text '-';
3 : Vtireno1 := Vtireno1 Edit2.Text '-';
end;
Vtireno1 := Vtireno1 Edit3.Text '-' Edit4.Text;
DM1.Qtireno1.Close;
DM1.Qtireno1.SQL.Clear;
DM1.Qtireno1.SQL.Add('select * from Pspec1 order by tireno1');
DM1.Qtireno1.Prepare;
DM1.Qtireno1.Open;
DM1.Qtireno1.Filtered := False;
DM1.Qtireno1.Filter := 'tireno1=' '''' Vtireno1 '*' '''';
DM1.Qtireno1.Filtered := True;
IF DM1.Qtireno1.IsEmpty THEN
Vtireno1 := Vtireno1 '01'
ELSE
BEGIN
DM1.Qtireno1.Last;
Vno := strtoint(copy(DM1.Qtireno1.FieldByName('tireno1').asstring,12,2));
Vno := Vno 1;
IF Vno < 10 THEN
Vtireno1 := Vtireno1 '0' inttostr(Vno)
ELSE
Vtireno1 := Vtireno1 inttostr(Vno);
END;
DM1.QPSpec1.Append;
DM1.QPSpec1.Edit;
DM1.QPSpec1.FieldByName('tireno1').asstring := Vtireno1;
DM1.QPSpec1.FieldByName('version').asstring := '';
DM1.QPSpec1.FieldByName('opno').asstring := opno1.Text;
DM1.QPSpec1.FieldByName('bdep').asstring := bdep2.KeyValue;
DM1.QPSpec1.FieldByName('usrno').asstring := Vusrno;
DM1.QPSpec1.FieldByname('indat').asvariant := date;
DM1.QPSpec1.Post;
FormTireAdd.Close;
END ELSE
showmessage('新增欄位不可為空');
end;
///////套用新增////////
if kind.ItemIndex = 1 then
begin
IF (Edit1.Text <> '') AND (Edit2.Text <> '') AND (Edit3.Text <> '') AND
(Edit4.Text <> '') AND (opno1.Text <> '') AND (bdep2.Text <> '' ) AND (Edit10.Text <> '') THEN
BEGIN
DM1.QPSpec1.Filtered := False;
DM1.QPSpec1.Filter := 'tireno1=' '''' Edit10.Text '''' ' and version is null';
DM1.QPSpec1.Filtered := True;
IF DM1.QPSpec1.IsEmpty THEN
BEGIN
DM1.QPSpec1.Filtered := False;
showmessage('無此生胎標準');
Edit10.SetFocus;
END ELSE
BEGIN
cnt := DM1.QPSpec1.FieldCount - 1;
xVal := VarArrayCreate([0,cnt],varVariant);
for i := 0 to cnt do
xVal[i] := DM1.QPSpec1.Fields[i].AsVariant;
DM1.QPSpec1.Filtered := False;
i := length(Edit1.Text);
case i of
1 : Vtireno1 := '0' Edit1.Text '-';
2 : Vtireno1 := Edit1.Text '-';
end;
i := length(Edit2.Text);
case i of
1 : Vtireno1 := Vtireno1 '00' Edit2.Text '-';
2 : Vtireno1 := Vtireno1 '0' Edit2.Text '-';
3 : Vtireno1 := Vtireno1 Edit2.Text '-';
end;
Vtireno1 := Vtireno1 Edit3.Text '-' Edit4.Text;
DM1.Qtireno1.Close;
DM1.Qtireno1.SQL.Clear;
DM1.Qtireno1.SQL.Add('select * from Pspec1 order by tireno1');
DM1.Qtireno1.Prepare;
DM1.Qtireno1.Open;
DM1.Qtireno1.Filtered := False;
DM1.Qtireno1.Filter := 'tireno1=' '''' Vtireno1 '*' '''';
DM1.Qtireno1.Filtered := True;
IF DM1.Qtireno1.IsEmpty THEN
Vtireno1 := Vtireno1 '01'
ELSE
BEGIN
DM1.Qtireno1.Last;
Vno := strtoint(copy(DM1.Qtireno1.FieldByName('tireno1').asstring,12,2));
Vno := Vno 1;
IF Vno < 10 THEN
Vtireno1 := Vtireno1 '0' inttostr(Vno)
ELSE
Vtireno1 := Vtireno1 inttostr(Vno);
END;
DM1.QPSpecP2.Close;
DM1.QPSPecP2.SQL.Clear;
DM1.QPSpecP2.SQL.Add('select * from pspecp1 where tireno1=' '''' Edit10.Text '''' ' and version is null');
DM1.QPSpecP2.Prepare;
DM1.QPSpecP2.Open;
DM1.QPSpecP2.first;
if not DM1.QPSpecP2.IsEmpty then
begin
While not DM1.QPSPecP2.eof do
begin
DM1.QPSpecP1.Append;
DM1.QPSpecP1.Edit;
DM1.QPSpecP1.FieldByName('tireno1').asstring := Vtireno1;
DM1.QPSpecP1.FieldByName('version').asstring := '';
DM1.QPSpecP1.FieldByName('plylevel').asstring := DM1.QPSpecP2.FieldByName('plylevel').asstring;
DM1.QPSpecP1.FieldByName('partno').asstring := DM1.QPSpecP2.FieldByName('partno').asstring;
DM1.QPSpecP1.FieldByName('plylen').asfloat := DM1.QPSpecP2.FieldByName('plylen').asfloat;
DM1.QPSpecP1.FieldByName('plywgt').asfloat := DM1.QPSpecP2.FieldByName('plywgt').asfloat;
DM1.QPSpecP1.FieldByName('plyup').asfloat := DM1.QPSpecP2.FieldByName('plyup').asfloat;
DM1.QPSpecP1.FieldByName('plyrem').asstring := DM1.QPSpecP2.FieldByName('plyrem').asstring;
DM1.QPSpecP1.Post;
DM1.QPSpecP2.Next;
end;
end;
DM1.QPSpec1.Append;
DM1.QPSpec1.Edit;
DM1.QPSpec1.FieldByName('tireno1').asstring := Vtireno1;
DM1.QPSpec1.FieldByName('version').asstring := '';
DM1.QPSpec1.FieldByName('opno').asstring := opno1.Text;
DM1.QPSpec1.FieldByName('bdep').asstring := bdep2.KeyValue;
DM1.QPSpec1.FieldByName('usrno').asstring := Vusrno;
DM1.QPSpec1.FieldByname('indat').asvariant := date;
DM1.QPSpec1.Post;
DM1.QPSpec1.Edit;
for i:=0 to cnt do
if (DM1.QPSpec1.Fields[i].FieldName<>'Tireno1') AND
(DM1.QPSpec1.Fields[i].FieldName<>'Version') AND
(DM1.QPSpec1.Fields[i].FieldName<>'Bdep') AND
(DM1.QPSpec1.Fields[i].FieldName<>'Opno') AND
(DM1.QPSpec1.Fields[i].FieldName<>'Indat') AND
(DM1.QPSpec1.Fields[i].FieldName<>'Usrno') then
DM1.QPSpec1.Fields[i].AsVariant:=xVal[i];
DM1.QPSpec1.Post;
FormTireAdd.Close;
END;
END ELSE
showmessage('新增欄位不可為空');
end;
///// 生胎變更版次 ////////
if kind.ItemIndex = 2 then
begin
IF (Edit10.Text <> '') THEN
BEGIN
DM1.QPSpec1.Filtered := False;
DM1.QPSpec1.Filter := 'tireno1=' '''' Edit10.Text '''' ' and version is null';
DM1.QPSpec1.Filtered := True;
IF DM1.QPSpec1.IsEmpty THEN
BEGIN
DM1.QPSpec1.Filtered := False;
showmessage('無此生胎標準');
Edit10.SetFocus;
END ELSE
BEGIN
cnt := DM1.QPSpec1.FieldCount - 1;
xVal := VarArrayCreate([0,cnt],varVariant);
for i := 0 to cnt do
xVal[i] := DM1.QPSpec1.Fields[i].AsVariant;
DM1.QPSpec1.Filtered := False;
DM1.Qtireno1.Close;
DM1.Qtireno1.SQL.Clear;
DM1.Qtireno1.SQL.Add('select * from Pspec1 where tireno1=' ''''
Edit10.Text '''' ' order by tireno1,version');
DM1.Qtireno1.Prepare;
DM1.Qtireno1.Open;
IF DM1.Qtireno1.IsEmpty THEN
showmessage('此筆生胎標準未存在,無法變更版本')
ELSE
BEGIN
DM1.Qtireno1.Last;
Vversion := DM1.Qtireno1.FieldByName('version').asinteger 1;
END;
DM1.QPSpecP2.Close;
DM1.QPSPecP2.SQL.Clear;
DM1.QPSpecP2.SQL.Add('select * from pspecp1 where tireno1=' '''' Edit10.Text '''' ' and version is null');
DM1.QPSpecP2.Prepare;
DM1.QPSpecP2.Open;
DM1.QPSpecP2.first;
if not DM1.QPSpecP2.IsEmpty then
begin
While not DM1.QPSPecP2.eof do
begin
DM1.QPSpecP1.Append;
DM1.QPSpecP1.Edit;
DM1.QPSpecP1.FieldByName('tireno1').asstring := Edit10.Text;
DM1.QPSpecP1.FieldByName('version').asinteger := Vversion;
DM1.QPSpecP1.FieldByName('plylevel').asstring := DM1.QPSpecP2.FieldByName('plylevel').asstring;
DM1.QPSpecP1.FieldByName('partno').asstring := DM1.QPSpecP2.FieldByName('partno').asstring;
DM1.QPSpecP1.FieldByName('plylen').asfloat := DM1.QPSpecP2.FieldByName('plylen').asfloat;
DM1.QPSpecP1.FieldByName('plywgt').asfloat := DM1.QPSpecP2.FieldByName('plywgt').asfloat;
DM1.QPSpecP1.FieldByName('plyup').asfloat := DM1.QPSpecP2.FieldByName('plyup').asfloat;
DM1.QPSpecP1.FieldByName('plyrem').asstring := DM1.QPSpecP2.FieldByName('plyrem').asstring;
DM1.QPSpecP1.Post;
DM1.QPSpecP2.Next;
end;
end;
DM1.QPSpec1.Append;
DM1.QPSpec1.Edit;
DM1.QPSpec1.FieldByName('tireno1').asstring := Edit10.Text;
DM1.QPSpec1.FieldByName('version').asinteger:= Vversion;
DM1.QPSpec1.Post;
DM1.QPSpec1.Edit;
for i:=0 to cnt do
if (DM1.QPSpec1.Fields[i].FieldName<>'Tireno1') AND
(DM1.QPSpec1.Fields[i].FieldName<>'Version') then
DM1.QPSpec1.Fields[i].AsVariant:=xVal[i];
DM1.QPSpec1.FieldByName('usrno').asstring := Vusrno;
DM1.QPSpec1.FieldByname('indat').asvariant := date;
DM1.QPSpec1.FieldByName('state').Asstring := '*';
DM1.QPSpec1.Post;
DM1.QPSpec1.Prior;
DM1.QPSpec1.Edit;
DM1.QPSpec1.FieldByName('usrno').asstring := Vusrno;
DM1.QPSpec1.FieldByname('indat').asvariant := date;
DM1.QPSpec1.Post;
FormTireAdd.Close;
END;
END ELSE
showmessage('新增欄位不可為空');
end;
//補號
if kind.ItemIndex = 3 then
begin
IF Edit10.Text <> '' THEN
BEGIN
DM1.Qtireno1.Close;
DM1.Qtireno1.SQL.Clear;
DM1.Qtireno1.SQL.Add('select * from Pspec1 where tireno1=' '''' Edit10.Text '''');
DM1.Qtireno1.Prepare;
DM1.Qtireno1.Open;
IF not DM1.Qtireno1.IsEmpty THEN
showmessage('此一次生胎代號已存在,不可補號')
ELSE
BEGIN
DM1.QPSpec1.Append;
DM1.QPSpec1.Edit;
DM1.QPSpec1.FieldByName('tireno1').asstring := Edit10.Text;
DM1.QPSpec1.FieldByName('version').asstring := '';
DM1.QPSpec1.FieldByName('bdep').asstring := 'C';
DM1.QPSpec1.FieldByName('usrno').asstring := Vusrno;
DM1.QPSpec1.FieldByname('indat').asvariant := date;
DM1.QPSpec1.Post;
FormTireAdd.Close;
end;
END ELSE
showmessage('新增欄位不可為空');
end;
if (kind.ItemIndex <> 1) and (kind.ItemIndex <> 0 ) and (kind.ItemIndex <> 2 ) and (kind.ItemIndex <> 3 ) then
begin
showmessage('請選擇新增種類');
kind.SetFocus;
end;
FormTire1.recno.Text := inttostr(DM1.QPSpec1.RecNo);
FormTire1.total.Text := inttostr(DM1.QPSpec1.RecordCount);
end;
[/code]
------
Aki..就算沒有明天
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-04-02 18:21:55 IP:61.67.xxx.xxx 未訂閱
PO文上來實在很難判斷問題所在, 如果不方便完整丟檔的話, 那只好建議你上這個網站
http://www.eurekalog.com/
下載它的試用版, 裝在你的Delphi上, 直接啟動這個元件, 當發生你上述的錯誤時, 它會把
發生錯誤時的程式行數告訴你, 你再從這裡去看是那一行程式出問題, 再去追吧!
系統時間:2024-11-23 11:29:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!