格式化编号技术 |
答題得分者是:malanlk
|
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
一段範例,請參考!
procedure TForm1.Button1Click(Sender: TObject); var NumberString,DateString:AnsiString; i:integer; begin for i := 1 to 10 do begin DateString := FormatDateTime('mmdd', Date); NumberString := Format('%s%.3d',[DateString,i]); ShowMessage(NumberString); end; end;---------------------------------------------- We will either find a way, or make one. -Hannibal -。 |
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
|
malanlk
尊榮會員 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
引言: 大大的程式我已理解。现在有一点,就是如果数据表中已有数据,比如0917001,那么我如何取到这个001后再加上1。这个001三位数要证在0917这一天是唯一的,并且是递增的。在0918这一天中第一个票据号又要是001 嗯~認同malanlk兄的作法,按ntjrr兄的需求,是要將編號欄位分成日期與流水號,如此比較好檢索以及處理新增的流水號編號。 'Select 日期,流水號 From XTable Where 日期 =' '0918' ' Order By 流水號 ASC' 或者 'Select MAX(流水號) From XTable Where 日期 =' '0918' '''';這樣找到的流水號最後一筆,就是0918日最大的一號,如果沒有那麼是本日第一號。 ---------------------------------------------- We will either find a way, or make one. -Hannibal -。 |
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
不知道一般情况下,前辈们是怎样做的,有没有遇到过象我所说的情况,如果遇到的话,流水号是不断递增,永不重复的,还是遇到新的一天就再从001开始的。如果从001开始的话,就怕电脑日期出问题,比如CMOS电池没电了,就会日期错乱,那样极有可能有重号产生。
malanlk大大意思,好象是新建一个表,专供取号,里面放两个字段。
Stallion大大的意思,就是在当前表里加两个字段,然后再从所有记录里取值。
这里面又可以分两种可能,一种如果流水号一直递增,那么很简单,设一个流水号字段,取最大值,然后FORMAT 当前日期等一写就好了,永无重号。
如果遇到新的一天就再从001开始,那么就要两个字段,当日期字段不等于当前日期时,流水号等于1,日期字段等于当前日期;如果当前日期等于日期字段,那么流水号加1。但这里面 会遇到我所说的日期错乱问题,那这种取法就要重号了。
------
我的编程起步于ktop,我将永远支持ktop |
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
|
malanlk
尊榮會員 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
|
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
引言: 不會重號吧, Where 有日期條件, 如果 CMOS 錯亂只是取到非預期日期的流水號而已吧... 之前有討論過避免重號的方式, 之前的處理方式再加一個日期欄位及條件就可以了, 不然你取個 CMOS 錯亂重號的例子給我看... >>< face="Verdana, Arial, Helvetica"> 前辈的这段分析相当精辟,我也试了一下,确实不会取到重号,我这一次所讲的和您上面所指的那篇有区别,我现在用的方法不是新建一个数据表来从中取值的,而是直接在本资料表中取值的,也不是在写入表中时取值,而是窗口跳出后就取值。我后来在本资料表中用了三个字段,一是日期字段,二是流水号,三才是我要的正式编号。当日期等于当前日期时取流水号加1,当不等于时(也就是取不到值时)那么赋于流水号的值为1。
------
我的编程起步于ktop,我将永远支持ktop |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |