請問那裡的程式錯誤了? |
答題得分者是:william
|
annie
一般會員 發表:5 回覆:6 積分:2 註冊:2002-12-22 發送簡訊給我 |
請問:以下是我的程式,我的原意是在表單1修改編號後,再次在dbedit1上點一下再按F2,開啟的所有編號表(表單2),會自動修改剛才輸入的編號,不是新增而是在該筆記錄上直接修改,可是我沒有辦法讓表單2的記錄馬上修改成功,必須把應用程式關掉再重開,才能看到已修改,請問那裡的程式錯誤了?
表單1:有DbEdit1,adoconnection,adodataset,datasource
procedure Tpart5_1.FormCreate(Sender: TObject);
begin
dsetfactory.Active:=true;
end; procedure Tpart5_1.Button1Click(Sender: TObject);
begin part5_1.dsetfactory.Edit;
part5_1.dsetfactory['廠商編號']:=dbedit1.Text;
part5_1.dsetfactory.Post;
part5_1.dsetfactory.Active:=true;
end; procedure Tpart5_1.DBEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ord(key)=113 then
part5_1_1.Show;
end; 表單2:顯示所有編號的資料,有DbGrid,adoconnection ,adodataset,datasource procedure Tpart5_1_1.FormCreate(Sender: TObject); begin part5_1_1.dset1.Active:=true;
part5_1_1.dset1.Edit;
part5_1_1.dset1['廠商編號']:=part5_1.DBEdit1.Text;
part5_1_1.dset1.Post; end; procedure Tpart5_1_1.Button1Click(Sender: TObject);
begin
part5_1_1.close;
end; procedure Tpart5_1_1.dset1AfterScroll(DataSet: TDataSet);
begin
part5_1.dsetfactory.Active:=false;
part5_1.dsetfactory.Parameters.ParamByName('no').Value:=part5_1_1.adoquery1['廠商編號'];
part5_1.dsetfactory.Active:=true;
end;
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
annie
一般會員 發表:5 回覆:6 積分:2 註冊:2002-12-22 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
引言:不了解你的意思?http://delphi.ktop.com.tw/topic.php?topic_id=20411 I think closing the application is same as closing the ADOConnection and open it again. |
T.J.B
版主 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
|
annie
一般會員 發表:5 回覆:6 積分:2 註冊:2002-12-22 發送簡訊給我 |
在更改按鈕按下後,Form2的dbgrid中,雖然大致上可順利修改,但是有時還是有些值會跑到dbgrid的最下一筆記錄中,形成只有編號的新記錄(最多只有兩筆),怎麼改呢?
Form1:edit1--輸入舊編號,edit2--輸入新編號,button1--變更
procedure Tpart5_1.FormCreate(Sender: TObject);
begin
dsetfactory.Active:=true;
end; procedure Tpart5_1.Button1Click(Sender: TObject);
var f:boolean;
begin
part5_1.dsetfactory.Edit;
part5_1.dsetfactory['廠商編號']:=edit1.Text;
part5_1.dsetfactory.Post;
//part5_1.dsetfactory.UpdateBatch(arall); part5_1.dsetfactory.Active:=true;
part5_1_1.dset1.Close;
part5_1_1.dset1.Open;
f:=part5_1_1.dset1.Locate('廠商編號',part5_1.Edit1.Text,[locaseinsensitive]);
if f=true then
begin
part5_1_1.dset1.Edit;
// part5_1_1.dset1['廠商編號']:='';
part5_1_1.dset1['廠商編號']:=part5_1.Edit2.Text;
edit3.Text:=edit2.Text;
edit2.Text:='';
part5_1_1.dset1.Post; part5_1_1.dset1.Active:=true;
end;
end; procedure Tpart5_1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ord(key)=113 then
part5_1_1.Show;
end; Form2:顯現所有編號資料
procedure Tpart5_1_1.Button1Click(Sender: TObject);
begin
part5_1_1.close; end; procedure Tpart5_1_1.dset1AfterScroll(DataSet: TDataSet);
var f:boolean;
begin
part5_1.dsetfactory.Active:=false;
part5_1.dsetfactory.Parameters.ParamByName('no').Value:=part5_1_1.dset1['廠商編號'];
part5_1.dsetfactory.Active:=true;
part5_1_1.dset1.Active:=true;
f:=part5_1_1.dset1.Locate('廠商編號',part5_1.Edit1.Text,[locaseinsensitive]);
if f=true then
begin
part5_1_1.dset1.Edit;
part5_1_1.dset1['廠商編號']:=part5_1.Edit2.Text;
part5_1_1.dset1.Post; part5_1_1.dset1.Active:=true;
end;
end; procedure Tpart5_1_1.FormShow(Sender: TObject);
begin
dset1.Close;
dset1.Open;
end; procedure Tpart5_1_1.FormActivate(Sender: TObject);
begin
dset1.Active:=true;
part5_1_1.dset1.Active:=true;
因為時間緊迫,請高手多多指點,謝謝!!! 發表人 - annie 於 2003/01/12 01:03:45
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |