DBEdit如何自定資料格式序號 |
尚未結案
|
maloneliin
一般會員 發表:3 回覆:10 積分:2 註冊:2003-03-26 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
T.J.B
版主 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
你可以寫一個function,參數傳入當日日期
利用此日期去下sql把當日最大的序號找出來
如果沒有 則 (日期+'01')
如果有 則 (最大的序號+1);
下面是我節錄我開發專案內剛好用到的一段
內容你參考看看
如果你可以了解且符合你的需求 稍微修改一下即可
舉例 :(MSSQL)
function TfrmM0AllowType._getRfNo(Bus_date: String): String; var FakeQ : TQuery ; begin FakeQ := TQuery.Create(nil); FakeQ.DatabaseName := 'DB'; FakeQ.SessionName := DM.Database1.SessionName; with FakeQ do begin Close; SQL.Clear; SQL.Add(' select max(convert(int,substring(RFNO,9,2))) as myvalue from REFUND_M '); SQL.Add(' where substring(RFNO,1,8) = :SKEY'); ParamByName('SKEY').AsString := Bus_date; //ex: 20030328 Open; end;//with if FakeQ.IsEmpty then Result := Bus_date '01' //<- 第一筆 else Result := Bus_date _AddZero(IntToStr(FakeQ.FieldByName('myvalue').AsInteger 1),2); end;PS: _AddZero 是不足位補0的function 天行健 君子當自強不息~~@.@ 發表人 - t.j.b 於 2003/03/28 17:05:50 發表人 - t.j.b 於 2003/03/28 17:21:34
------
天行健 君子當自強不息~~@.@ |
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 請問各位大大: 我使用一個DBEdit呈現資料庫的bus_no主鍵,這一個dbedit不讓使用者輸入,序號為資料庫自動產生,他的格式為(系統時間 序號),例今天第一筆為2003032801,第二筆為2003032802,第三筆為2003032803....明天第一筆為2003032901,第二筆為2003032902,第三筆為2003032903....請問各位要如要撰寫...使用TQuery下SQL語法取得最大號 在存檔鈕或新增鈕(依您的程式而定)寫: var aBus_No: String;//取得目前的編號 with Query1 do begin Close; SQL.Clear; SQL.Add('Select Max(Bus_No) MaxNo From TalbeName Where Bus_No like ' #39 FormatDateTime('YYYYMMDD',Date) '%' #39); Open; if FieldByName('MaxNo').AsString <> '' then aBus_No := FormatDateTime('YYYYMMDD',Date) FormatFloat('00',StrToInt(Copy(FieldByName('MaxNo').AsString,9,2)) 1) else aBus_No := FormatDateTime('YYYYMMDD',Date) '01'; end;這樣應該就可以了! ~小弟淺見,參考看看~ 發表人 - channel 於 2003/03/28 16:43:48
------
~小弟淺見,參考看看~ |
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
引言: 我使用一個DBEdit呈現資料庫的bus_no主鍵,這一個dbedit不讓使用者輸入,序號為資料庫自動產生,他的格式為(系統時間 序號),例今天第一筆為2003032801,第二筆為2003032802,第三筆為2003032803....明天第一筆為2003032901,第二筆為2003032902,第三筆為2003032903....請問各位要如要撰寫...假設你的table name 為 table1 你可以使用以下語法取得序號: (以MSSQL語法為例) 若 bus_no 為 varchar(10) select case when left(max(bus_no),8) = convert(varchar, getdate(), 112) then convert(varchar, convert( int, max(bus_no)) + 1) else convert(varchar, getdate(), 112) + '01' end from table1 修改你的 UpdateSQL component 中的 insert 為: insert into table1 (bus_no, v1, v2, v3) values ( select case when left(max(bus_no),8) = convert(varchar, getdate(), 112) then convert(varchar, convert( int, max(bus_no)) + 1) else convert(varchar, getdate(), 112) + '01' end from table1, :v1, :v2, :v3 ) 若 bus_no 為 int 時, 則使用: select case when left(convert(varchar,max(bus_no)),8) = convert(varchar, getdate(), 112) then max(bus_no) + 1 else convert(int, convert(varchar, getdate(), 112) + '01' ) end from table1 修改 UpdateSQL 的方式相同..發表人 - timhuang 於 2003/03/28 21:49:15 |
maloneliin
一般會員 發表:3 回覆:10 積分:2 註冊:2003-03-26 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
maloneliin
一般會員 發表:3 回覆:10 積分:2 註冊:2003-03-26 發送簡訊給我 |
謝謝版主的回覆 :
我有一個疑問就是此段function該寫在哪??
我的TABLE名稱為business,需要改哪裡呢??
我是初學者這段程式看不太懂...=.=
麻煩妳可以註明一下嗎??謝謝...
引言: 你可以寫一個function,參數傳入當日日期 利用此日期去下sql把當日最大的序號找出來 如果沒有 則 (日期 '01') 如果有 則 (最大的序號 1); 下面是我節錄我開發專案內剛好用到的一段 內容你參考看看 如果你可以了解且符合你的需求 稍微修改一下即可 舉例 :(MSSQL)function TfrmM0AllowType._getRfNo(Bus_date: String): String; var FakeQ : TQuery ; begin FakeQ := TQuery.Create(nil); FakeQ.DatabaseName := 'DB'; FakeQ.SessionName := DM.Database1.SessionName; with FakeQ do begin Close; SQL.Clear; SQL.Add(' select max(convert(int,substring(RFNO,9,2))) as myvalue from REFUND_M '); SQL.Add(' where substring(RFNO,1,8) = :SKEY'); ParamByName('SKEY').AsString := Bus_date; //ex: 20030328 Open; end;//with if FakeQ.IsEmpty then Result := Bus_date '01' //<- 第一筆 else Result := Bus_date _AddZero(IntToStr(FakeQ.FieldByName('myvalue').AsInteger 1),2); end;PS: _AddZero 是不足位補0的function 天行健 君子當自強不息~~@.@ 發表人 - t.j.b 於 2003/03/28 17:05:50 發表人 - t.j.b 於 2003/03/28 17:21:34 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |