如何做到編號自動累加? |
答題得分者是:Xenwensun
|
Ethan
版主 ![]() ![]() ![]() 發表:101 回覆:170 積分:78 註冊:2006-07-05 發送簡訊給我 |
|
andersonhsieh
版主 ![]() ![]() ![]() ![]() ![]() 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
|
bookworm
中階會員 ![]() ![]() ![]() 發表:63 回覆:161 積分:82 註冊:2002-08-03 發送簡訊給我 |
你可以另外開啟一個一樣的table2,設定跟你原本的table1一樣
然後在onnewrecord的時候將你想要累加的欄位當索引排序
把資料移到最後一筆加1就是你要的答案了
下面的你做參考,從書上節下來的
procedure Tform1.Table1NewRecord(DataSet:TDataset);
begin
table2.last;
table1.fieldbyname('CustNo').AsInteger :=
table2.fieldbyname('custNo').AsInteger 1;
end;
這段是節錄delphi進銷存程式設計的126頁
我也是新手,所以只好照著書說的回答
試試看吧!
|
Ethan
版主 ![]() ![]() ![]() 發表:101 回覆:170 積分:78 註冊:2006-07-05 發送簡訊給我 |
|
andersonhsieh
版主 ![]() ![]() ![]() ![]() ![]() 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
|
Ethan
版主 ![]() ![]() ![]() 發表:101 回覆:170 積分:78 註冊:2006-07-05 發送簡訊給我 |
|
yenhorng
中階會員 ![]() ![]() ![]() 發表:12 回覆:82 積分:94 註冊:2002-06-18 發送簡訊給我 |
|
Xenwensun
一般會員 ![]() ![]() 發表:3 回覆:5 積分:11 註冊:2002-07-31 發送簡訊給我 |
|
Ethan
版主 ![]() ![]() ![]() 發表:101 回覆:170 積分:78 註冊:2006-07-05 發送簡訊給我 |
|
T.J.B
版主 ![]() ![]() ![]() ![]() ![]() 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
|
Ethan
版主 ![]() ![]() ![]() 發表:101 回覆:170 積分:78 註冊:2006-07-05 發送簡訊給我 |
我的Database欄位如下!!,我希望當我按Query.Insert時,自動在CLIENTID.DBEdit這欄為自動編號 CREATE TABLE `ma01` (
`CLIENTID` varchar(16) NOT NULL, //客戶編號 #我要的編號是 A2002000001, A=客戶屬性,2002是年,000001則是流水號
`CREATE_DATE` date default NULL, //建檔日期
`CLIENT_KIND` varchar(60) NOT NULL , //客戶屬性
`CH_NAME` varchar(60) default NULL, //公司名稱
`CH_ADDRESS` varchar(60) default NULL, //公司地址
`INVOICE_NAME` varchar(60) default NULL, //發票抬頭
`INVOICE_ADDRESS` varchar(120) default NULL, //發票地址
`TELE` varchar(20) default NULL, //聯絡電話
`FAX` varchar(20) default NULL, //傳真
|
T.J.B
版主 ![]() ![]() ![]() ![]() ![]() 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
引言: 我的Database欄位如下!!,我希望當我按Query.Insert時,自動在CLIENTID.DBEdit這欄為自動編號 CREATE TABLE `ma01` ( `CLIENTID` varchar(16) NOT NULL, //客戶編號 #我要的編號是 A2002000001, A=客戶屬性,2002是年,000001則是流水號 `CREATE_DATE` date default NULL, //建檔日期 `CLIENT_KIND` varchar(60) NOT NULL , //客戶屬性 `CH_NAME` varchar(60) default NULL, //公司名稱 `CH_ADDRESS` varchar(60) default NULL, //公司地址 `INVOICE_NAME` varchar(60) default NULL, //發票抬頭 `INVOICE_ADDRESS` varchar(120) default NULL, //發票地址 `TELE` varchar(20) default NULL, //聯絡電話 `FAX` varchar(20) default NULL, //傳真請問一下客戶編號 開頭的第一個字母是不會變的 還是會變 < >< > 回首來時路 也無風雨也無晴~~@.@
------
天行健 君子當自強不息~~@.@ |
Ethan
版主 ![]() ![]() ![]() 發表:101 回覆:170 積分:78 註冊:2006-07-05 發送簡訊給我 |
我的客戶編號開頭的A是不變的!!
如果客戶編號開頭的A 要做到連結另一個Table可以嗎? create table NUMBER(
NAME varchar(20),
NUMID varchar(6),
);
---------------------------
|客戶屬性 |客戶編號 |
---------------------------
|飯店業 |A |
---------------------------
| 銀行業 | B |
--------------------------- ~>_<~ 終於碰到好心人..幫小弟熱心解答.感恩..
|
T.J.B
版主 ![]() ![]() ![]() ![]() ![]() 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
引言: 我的Database欄位如下!!,我希望當我按Query.Insert時,自動在CLIENTID.DBEdit這欄為自動編號 CREATE TABLE `ma01` ( `CLIENTID` varchar(16) NOT NULL, //客戶編號 #我要的編號是 A2002000001, A=客戶屬性,2002是年,000001則是流水號 `CREATE_DATE` date default NULL, //建檔日期 `CLIENT_KIND` varchar(60) NOT NULL , //客戶屬性 `CH_NAME` varchar(60) default NULL, //公司名稱 `CH_ADDRESS` varchar(60) default NULL, //公司地址 `INVOICE_NAME` varchar(60) default NULL, //發票抬頭 `INVOICE_ADDRESS` varchar(120) default NULL, //發票地址 `TELE` varchar(20) default NULL, //聯絡電話 `FAX` varchar(20) default NULL, //傳真sample: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, DBTables; type TForm1 = class(TForm) Button1: TButton; Query1: TQuery; Query2: TQuery; procedure Button1Click(Sender: TObject); procedure Query1NewRecord(DataSet: TDataSet); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin end; procedure TForm1.Query1NewRecord(DataSet: TDataSet); var client_no,c1,c2,client_id,j,year : String; i,leg,leg2 :integer; begin year := copy(DateToStr(now),1,4); //取時間為年的值 做客戶編號用 Query2.Close; //用一個新的Query專門做此搜尋的動作 Query2.SQL.Clear; Query2.SQL.Add('Select CLIENTID form ma01 order by CLIENTID desc' ); //將客戶編號由大到小做排序動作 方便等一下取最大值 Query2.Open; if Query2.IsEmpty then begin client_no := 'A' year '000001';//如果資料庫是空的 就給起始號 end else begin Query2.first; //否則 將指標移到第一筆 抓目前編號為最大值的客戶編號 client_no := Query2.FieldbyName('CLIENTID').AsString; end; //------- //---開始對client_no做字串拆解及累加的動作 c1 := copy(client_no,1,1);// 取出第一個字母放入此變數 c2 := copy(client_no,6,6);//取出其他的內容 c2 := IntToStr(StrToInt(c2) 1);//將字串轉成數字加一後再轉回字串 leg := Length(client_no)-Length(c2);//算出要補0的位數 for i := 2 to leg do begin j := j '0'; //將0補上 end; client_id := c1 year j c2; //例如 a 2002 00000 2 //再把字串相加 即可得到加一之後最新的客戶編號 Query2.FieldByName('CLIENTID').AsString := client_id; //往下可繼續做要新增紀錄的部分 end; end. 就醬子 < >< > 回首來時路 也無風雨也無晴~~@.@
------
天行健 君子當自強不息~~@.@ |
Ethan
版主 ![]() ![]() ![]() 發表:101 回覆:170 積分:78 註冊:2006-07-05 發送簡訊給我 |
|
Ethan
版主 ![]() ![]() ![]() 發表:101 回覆:170 積分:78 註冊:2006-07-05 發送簡訊給我 |
|
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
T.J.B
版主 ![]() ![]() ![]() ![]() ![]() 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
引言: T.J.B兄 出現錯誤訊息!! Dataset not in edit or insert mode. ?????????呵呵~~~~~~~~ 你必須把Query2的RequestLive 屬性設為True 才可以ㄚ 另外再加這二行程式 (對不起 這行沒寫到) 呵呵呵~~~~~~~~ if Query2.State <>dsinsert then query1.Insert;<--加這一行 Query2.FieldByName('CLIENTID').AsString := client_id; //往下繼續做要新增紀錄的部分 Query2.Post; <--這行也要加在最後 這樣就okㄌ < >< > 回首來時路 也無風雨也無晴~~@.@
------
天行健 君子當自強不息~~@.@ |
Ethan
版主 ![]() ![]() ![]() 發表:101 回覆:170 積分:78 註冊:2006-07-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |