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

[問題]資料新增時出錯

尚未結案
iva0629
一般會員


發表:28
回覆:14
積分:8
註冊:2003-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-22 22:59:01 IP:218.170.xxx.xxx 未訂閱
請問大大 我在新增資料到資料庫時會出現錯誤 這是我寫的部份 procedure TForm_a1.Button1_addClick(Sender: TObject); begin if Edit1.text <> '' then //有輸入 begin         if MessageDlg('確定是否要加選',mtConfirmation,[mbYes,mbNo],0)=mrYes then begin try         table1.Edit;         table1.insert;         table1.FieldByName('S_number').value:=edit1.text;            table1.FieldByName('Sub_ID').value:=dbedit1.text;           table1.Post;  table1.Close;  table1.open;  finally  ShowMessage('已修課程');  end;  end  end  else      ShowMessage('請先登入'); end; 會出現 第一次用delphi,請大家多多指教
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-22 23:43:29 IP:63.84.xxx.xxx 未訂閱
您好!    錯誤信息的意思是指資料表未處于新增或修改的狀態, 這樣的話, 就是跟您的Post方法有關, 因為當資料表未處于新增或修改的狀態而執行Post的話, 就會出現這樣的錯誤信息.    但從您的程式碼來看似乎沒有這方面的問題, 但有一些說明如下:
procedure TForm_a1.Button1_addClick(Sender: TObject);
begin
  if Edit1.text <> '' then
    begin
      if MessageDlg('確定是否要加選',mtConfirmation,[mbYes,mbNo],0)=mrYes then
        begin
          try
            table1.Edit;
            table1.insert;
            //此處有些不解, 為何您要在資料表處于修改(Edit)的狀態時, 
            //又使用新增的方法(Insert), 根据您的需要選擇使用一個即可
            table1.FieldByName('S_number').value:=edit1.text; 
            table1.FieldByName('Sub_ID').value:=dbedit1.text;
            table1.Post;
            table1.Close;
            table1.open;
          finally
            ShowMessage('已修課程');
          end;
        end;//這里的漏寫了結束分號
   end
else
  ShowMessage('請先登入');
end;
參考看看! ===================== 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/10/22 23:46:33
------
忻晟
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-22 23:56:08 IP:218.160.xxx.xxx 未訂閱
1:你的table元件 readonly屬性要設為false    2: 如果第一項有的話   那麼在最前面的程式碼可以再加一段
 
if not (table1.state in [dsinsert,dsedit] ) then
    table1.edit; 
天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
iva0629
一般會員


發表:28
回覆:14
積分:8
註冊:2003-08-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-24 02:28:15 IP:218.170.xxx.xxx 未訂閱
感謝cashxin2002和T.J.B二位大大 我照二位大大指出錯誤的地方去修改了.. 但還是不行.. 目前還在研究中..^^"
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-24 08:59:54 IP:202.39.xxx.xxx 未訂閱
引言:
procedure TForm_a1.Button1_addClick(Sender: TObject);
begin
  if Edit1.text <> '' then
    begin
      if MessageDlg('確定是否要加選',mtConfirmation,[mbYes,mbNo],0)=mrYes then
        begin
          // ...
        end;//這里的漏寫了結束分號
   end
else
  ShowMessage('請先登入');
end;
關於漏寫分號這部份這樣子是可以的 end 前面一句的分號是可以不寫的 以下是合法的範例:
procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessage('test') // 這行可以不加分號
end;
procedure TForm1.Button2Click(Sender: TObject);
var i: integer;
begin
  try
    i := 3   5;
    ShowMessage(IntToStr(i)) // 這行可以不加分號
  finally
  end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i: integer;
begin
  i := 3   5;
  if i > 10 then begin
    ShowMessage('i > 10') // 不加分號
  end else begin
    ShowMessage('i < 10') // 不加分號
  end // 這個 end 也可以不加分號
end;
--- 歡迎光臨 KTop 研究院
系統時間:2024-06-22 18:52:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!