線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:927
推到 Plurk!
推到 Facebook!

關於資料更新的問題

答題得分者是:channel
persiarug
一般會員


發表:5
回覆:6
積分:2
註冊:2003-05-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-16 15:53:31 IP:61.230.xxx.xxx 未訂閱
我的問題是: 當我沒更改Form2任何一個欄位內的值 而按了確定更新之Button 會出現 [Project Project1.exe raised exception class EDatabaseError with  message 'ADOQuery1:Dataset not in edit or insert mode'.  Process stopped. Use Step or Run to continue.] 這樣的錯誤訊息 我該如何修改才不會有這樣的錯誤訊息呢? 麻煩各位幫忙 謝謝    下面是我的原始碼    procedure TForm2.Button1Click(Sender: TObject); begin if Application.MessageBox('確定儲存修改?','注意',MB_YESNO+MB_ICONQuestion)=IDYES Then    begin      Form1.ADOQuery1.UpdateRecord;      Form1.ADOQuery1['姓名']:=name.Text;      Form1.ADOQuery1['電話']:=tel.Text;      Form1.ADOQuery1['地址']:=addr.Text;      Form1.ADOQuery1['性別']:=sex.Text;      Form1.ADOQuery1['出生日期']:=birthday.Text;      Form1.ADOQuery1['狀況']:=sti.Text;      Form1.ADOQuery1.ExecSQL;         Form1.ADOQuery1.Post;      messageBeep(0);      Form1.ADOQuery1.Close;      Form1.ADOQuery1.Open;      showmessage('已將修改儲存');     end; end;
nachi
初階會員


發表:40
回覆:116
積分:31
註冊:2003-02-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-16 16:01:01 IP:218.165.xxx.xxx 未訂閱
form1.ADOQuery1.FieldByName('姓名').value:=name.Text;    以此類推....    Form1.ADOQuery1.ExecSQL;<==不需要 Form1.ADOQuery1.UpdateRecord;<==不需要 try it........ 發表人 - nachi 於 2003/05/16 16:16:13 發表人 - nachi 於 2003/05/16 16:17:44
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-16 17:35:38 IP:211.21.xxx.xxx 未訂閱
引言: 我的問題是: 當我沒更改Form2任何一個欄位內的值 而按了確定更新之Button 會出現 [Project Project1.exe raised exception class EDatabaseError with message 'ADOQuery1:Dataset not in edit or insert mode'. Process stopped. Use Step or Run to continue.] 這樣的錯誤訊息 我該如何修改才不會有這樣的錯誤訊息呢? 麻煩各位幫忙 謝謝 下面是我的原始碼 procedure TForm2.Button1Click(Sender: TObject); begin if Application.MessageBox('確定儲存修改?','注意',MB_YESNO MB_ICONQuestion)=IDYES Then begin Form1.ADOQuery1.UpdateRecord; Form1.ADOQuery1['姓名']:=name.Text; Form1.ADOQuery1['電話']:=tel.Text; Form1.ADOQuery1['地址']:=addr.Text; Form1.ADOQuery1['性別']:=sex.Text; Form1.ADOQuery1['出生日期']:=birthday.Text; Form1.ADOQuery1['狀況']:=sti.Text; Form1.ADOQuery1.ExecSQL; Form1.ADOQuery1.Post; messageBeep(0); Form1.ADOQuery1.Close; Form1.ADOQuery1.Open; showmessage('已將修改儲存'); end; end;
if Application.MessageBox('確定儲存修改?','注意',MB_YESNO MB_ICONQuestion)=IDYES Then
begin
  Form1.ADOQuery1.Edit;
  Form1.ADOQuery1['姓名']:=name.Text;
  Form1.ADOQuery1['電話']:=tel.Text;
  Form1.ADOQuery1['地址']:=addr.Text;
  Form1.ADOQuery1['性別']:=sex.Text;
  Form1.ADOQuery1['出生日期']:=birthday.Text;
  Form1.ADOQuery1['狀況']:=sti.Text;
  Form1.ADOQuery1.Post;
  messageBeep(0);
  Form1.ADOQuery1.Close;
  Form1.ADOQuery1.Open;
  showmessage('已將修改儲存');
end;
這樣就可以了!
~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
Justmade
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-16 17:41:01 IP:218.16.xxx.xxx 未訂閱
if not (Form1.ADOQuery1.State in [dsInsert,dsEdit]) then Form1.ADOQuery1.Edit; 會比較安全 記得 Form2 要 uses DB
persiarug
一般會員


發表:5
回覆:6
積分:2
註冊:2003-05-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-16 19:13:06 IP:61.230.xxx.xxx 未訂閱
謝謝幫忙 我試過了沒問題了 謝謝Justmade的建議 也謝謝nachi的幫忙
Justmade
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-16 20:20:47 IP:218.16.xxx.xxx 未訂閱
建議你先試試修改某些欄位再按 save, 若不加上    if not (Form1.ADOQuery1.State in [dsInsert,dsEdit]) then Form1.ADOQuery1.Edit; 會出錯的。若你已加上就應沒問題了。
persiarug
一般會員


發表:5
回覆:6
積分:2
註冊:2003-05-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-18 19:32:30 IP:61.230.xxx.xxx 未訂閱
對不起 我還想再針對此項目問一個問題 就是 當我按了確定更新之Button後 Form2所顯示的資料會變成資料庫內第一筆的資料 但是 我希望Form2能仍維持顯示我修改過後的那筆資料 我該如何修改呢? 謝謝
Justmade
版主


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-18 21:44:05 IP:218.16.xxx.xxx 未訂閱
刪除最後 close 和 open 那兩句
系統時間:2024-11-23 3:33:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!