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

C/S数据库客户端,当在线程在设置表的Active时出错

尚未結案
visli
一般會員


發表:5
回覆:1
積分:1
註冊:2003-02-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-27 10:18:47 IP:218.18.xxx.xxx 未訂閱
unit Client_Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, DB, DBClient, MConnect, SConnect; type TForm1 = class(TForm) SocketConnection1: TSocketConnection; ClientDataSet1: TClientDataSet; DataSource1: TDataSource; DBGrid1: TDBGrid; Button1: TButton; Button2: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; myThread = class(TThread) //一个线程 private { Private declarations } CDataSet:TClientDataset; protected procedure Execute; override; procedure changActive; //处理 public constructor create(DataS:TClientDataset); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ClientDataSet1.Active:=false; ClientDataSet1.Active:=true; ClientDataSet1.Close; ClientDataSet1.Open; //这里操作都没问题。 end; { myThread } procedure myThread.changActive; begin CDataSet.Active:=True; CDataSet.Open; //这也没问题 CDataSet.Active:=false; CDataSet.Close; //就这两句会出错 end; constructor myThread.create(DataS: TClientDataset); begin inherited create(false); CDataSet:=DataS; FreeOnTerminate:=True; end; procedure myThread.Execute; begin inherited; ChangActive; end; procedure TForm1.Button2Click(Sender: TObject); begin myThread.create(ClientDataSet1); end; end.
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-27 10:40:50 IP:218.16.xxx.xxx 未訂閱
錯誤訊息是甚麼?
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-27 10:48:34 IP:211.74.xxx.xxx 未訂閱
改成這樣試看看 procedure myThread.changActive; begin CDataSet.Active:=True; CDataSet.Open; 问题 CDataSet.Close; CDataSet.Active:=false; end; TRY TRY SEE
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-27 10:58:58 IP:218.16.xxx.xxx 未訂閱
CDataSet.Close 根本就等於 CDataSet.Active:=false 不信到 TDataSet 的 Close Procedure 看看 : procedure TDataSet.Close; begin Active := False; end; CDataSet.Close 比 CDataSet.Active:=false 慢一點點(極少),因為要做多一重呼叫,其他完全一樣。
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-04-30 13:45:18 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
系統時間:2024-04-27 4:59:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!