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

有關 Table 新增資料的連結

答題得分者是:cashxin2002
cklu
一般會員


發表:19
回覆:18
積分:7
註冊:2005-05-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-15 17:46:14 IP:140.130.xxx.xxx 未訂閱
各位厲害的高手好…本人初學 Delphi ,有關一些 資料庫的問題…    我有設兩個表單,如下圖,如果我新增一筆資料到 表(一) ,想用 表(一)「作者」那一欄位,來判斷是否與 表(二)中的「作者」有重複,如果重複,則 表(二) 不必新增,如「作者」沒重複,則將那筆資料也新增至 表(二)      我的程式碼是:<新增資料 - 單純新增至表(一)而已> procedure TForm1.BitBtn2Click(Sender: TObject); begin if edit1.text <> '' then begin IF TABLE1.Locate('書編號',EDIT1.Text,[]) THEN begin SHOWMESSAGE('「書編號」不可重復!!'); exit; end else begin TABLE1.Insert; TABLE1.FIELDBYNAME('書編號').value:=EDIT1.TEXT; TABLE1.FIELDBYNAME('出版社編號').TEXT:=EDIT2.TEXT; TABLE1.FIELDBYNAME('作者編號').TEXT:=EDIT9.TEXT; TABLE1.FIELDBYNAME('書名').TEXT:=EDIT3.TEXT; TABLE1.FIELDBYNAME('作者').TEXT:=EDIT4.TEXT; TABLE1.FIELDBYNAME('出版日期').TEXT:=EDIT6.TEXT; TABLE1.FIELDBYNAME('出版版本').TEXT:=EDIT7.TEXT; TABLE1.POST; DBGRID1.REFRESH; end end else SHOWMESSAGE('請確實輸入資料 !!'); end;
cashxin2002
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-15 18:28:39 IP:202.62.xxx.xxx 未訂閱
您好﹗    修改程式碼如下﹐假設所有的欄位皆為字串形態﹕
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  Table1.Insert;
  //在Post之前即触發以下的BeforePost事件
  Table1.Post;
end;    procedure TForm1.Table1BeforePost(DataSet: TDataSet);
//此處為Table1的BeforePost事件
begin
  if Trim(Edit1.Text)='' then
    begin
      ShowMessage('書編號不允許空白');
      Edit1.SetFocus;
      Abort;
    end
  else
    begin
      if Table1.Locate('書編號', Edit1.Text, []) then
        begin
          ShowMessage('資料已經存在');
          Edit1.SetFocus;
          Abort;
        end
      else
        begin
          Table1.FieldByName('書編號').AsString := Edit1.Text;
          Table1.FieldByName('出版社編號').AsString := Edit2.Text;
          Table1.FieldByName('作者編號').AsString := Edit9.Text;
          Table1.FieldByName('書名').AsString := Edit3.Text;
          Table1.FieldByName('作者').AsString := Edit4.Text;
          Table1.FieldByName('出版日期').AsString := Edit6.Text;
          Table1.FieldByName('出版版本').AsString := Edit7.Text;
        end;
    end;
end;    procedure TForm1.Table1AfterPost(DataSet: TDataSet);
//此處為Table1的AfterPost事件
begin
  ShowMessage('書編號' + Edit1.Text + '已被存入資料庫中');
  Table1.Close;
  Table1.Open;
  Edit1.Clear;
  Edit2.Clear;
  Edit9.Clear;
  Edit3.Clear;
  Edit4.Clear;
  Edit6.Clear;
  Edit7.Clear;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
cklu
一般會員


發表:19
回覆:18
積分:7
註冊:2005-05-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-15 18:46:06 IP:140.130.xxx.xxx 未訂閱
您好: 我將上面的程式碼run 的時候它跑出好多的[Error] [Error] Unit1.pas(100): Undeclared identifier: 'Table1BeforePost' [Error] Unit1.pas(100): ';' expected but '(' found [Error] Unit1.pas(103): Undeclared identifier: 'Edit1' [Error] Unit1.pas(106): Missing operator or semicolon [Error] Unit1.pas(111): Undeclared identifier: 'Table1' [Error] Unit1.pas(114): Missing operator or semicolon .... ↑ 那些是什麼意思啊??
cashxin2002
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-15 18:57:29 IP:202.62.xxx.xxx 未訂閱
您好﹗    環境問題﹗ 每個事件中的程式碼要寫在對應的事件中﹐而不要寫在其它的事件中﹐如Table1的BeforePost事件﹐您選中Table1后﹐在其事件檢視器中﹐就會看到有這個的一個事件﹐然后雙擊它即可開啟相關程式碼的輸入區域﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
cklu
一般會員


發表:19
回覆:18
積分:7
註冊:2005-05-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-15 19:10:15 IP:140.130.xxx.xxx 未訂閱
您好!    我找Table1的相關事件了,可是我雙擊它,它沒有反應耶!並沒有開啟相關程式碼的輸入區域!    
cklu
一般會員


發表:19
回覆:18
積分:7
註冊:2005-05-05

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-15 19:29:01 IP:140.130.xxx.xxx 未訂閱
您好!    我按進去了…相關程式碼的輸入區域    可是執行新增時…卻出現錯誤,為什麼會這樣?    
cashxin2002
版主


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-15 20:07:26 IP:202.62.xxx.xxx 未訂閱
您好﹗    此句錯誤信息是指Table1未進入新增或者修改狀態﹐是不允許存檔的﹒ 檢查一下是否漏寫了以下紅色句﹕
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  Table1.Insert;
  //在Post之前即触發以下的BeforePost事件
  Table1.Post;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
cklu
一般會員


發表:19
回覆:18
積分:7
註冊:2005-05-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-15 20:18:55 IP:140.130.xxx.xxx 未訂閱
您好!    那一行是沒少打 … 不過我是把Table1.Insert; 加在下面箭頭那地方,結果就可以行執了耶! 呵… 謝謝您!          if Table1.Locate('書編號', Edit1.Text, []) then         begin           ShowMessage('資料已經存在');           Edit1.SetFocus;           Abort;         end       else         begin    →     Table1.Insert;           Table1.FieldByName('書編號').AsString := Edit1.Text;           Table1.FieldByName('出版社編號').AsString := Edit2.Text;           Table1.FieldByName('作者編號').AsString := Edit9.Text;           Table1.FieldByName('書名').AsString := Edit3.Text;           Table1.FieldByName('作者').AsString := Edit4.Text;           Table1.FieldByName('出版日期').AsString := Edit6.Text;           Table1.FieldByName('出版版本').AsString := Edit7.Text;         end;
系統時間:2024-06-29 22:52:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!