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

請問大大...自動編號問題

尚未結案
ert-ert
一般會員


發表:7
回覆:9
積分:3
註冊:2005-02-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-08 00:11:03 IP:220.133.xxx.xxx 未訂閱
各位大大你們好: 我有一個DBedit1的元件,然後它是主鍵.我今天如果按新增時 DBedit1要自動編號,我的dbedit1現在是空的, 想第一個編000001已此類推... 請問各位大大要怎麼做....謝謝各位大大...感謝你們;;;
ert-ert
一般會員


發表:7
回覆:9
積分:3
註冊:2005-02-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-08 00:12:36 IP:220.133.xxx.xxx 未訂閱
對不起..補充一下 我是用ADOquery...謝謝
cashxin2002
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-09 10:10:15 IP:202.62.xxx.xxx 未訂閱
您好﹗    在Form中再加一個ADOQuery2元件﹐在對應資料表的ADOQuery1元件新增后(AfterInsert事件)﹐先用ADOQuery2元件來查詢當前的資料表中有無資料﹐若無資料就將000001值指定給DBEdit1﹐如果有值的話﹐就使用ADOQuery2查詢當前資料表中DBEdit1對應主鍵的最大值﹐將此值再加1﹐指定給DBEdit1即可﹒ 另外需要注意的一個問題是DBEdit1對應的主鍵欄位是字串型態﹐在取得當前最大值并做+1的動作時需要將其轉為Integer形態﹐然后再在指定給新增筆資料時轉為原來的字串形態﹐範例如下﹕
將ADOQuery2正确連結到上游的ADOConnection元件﹐設定与ADOQuery1相同﹐在ADOQuery1的AfterInsert事件中﹕
Var
  MaxField : String;
begin
  ADOQuery2.Close;
  ADOQuery2.SQL.Clear;
  ADOQuery2.SQL.Add('Select * From 資料表');
  ADOQuery2.Open;
  if Not ADOQuery2.IsEmpty then
    begin
      ADOQuery2.Close;
      ADOQuery2.SQL.Clear;
      ADOQuery2.SQL.Add('Select Max(主鍵欄位名) From 資料表');
      ADOQuery2.Open;
      MaxField := ADOQuery2.Fields.Fields[0].Value;
      DBEdit1.Text := Format('%6.6d', [StrToInt(MaxField)+1]);
    end
  else
    begin
      DBEdit1.Text := '000001';
    end;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-09 10:29:55 IP:210.64.xxx.xxx 未訂閱
你好 cashxin2002大大的程式碼可以再減少一點喔!!這樣就不用跟資料庫要兩次資料
  MaxField : String;
begin
  ADOQuery2.Close;
  ADOQuery2.SQL.Clear;
  ADOQuery2.SQL.Add('Select Max(主鍵欄位名) as maxno From 資料表');
  ADOQuery2.Open;
  if ADOQuery2maxno.asstring <> '' then
  begin
    MaxField := ADOQuery2.Fields.Fields[0].Value;
    DBEdit1.Text := Format('%6.6d', [StrToInt(MaxField) 1]);
  end
  else
  begin
    DBEdit1.Text := '000001';
  end;
end;
Pillar Wang
------
Pillar Wang
系統時間:2024-06-28 23:27:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!