先前看過林壽山先生寫的 DBGrid顯示流水號方式 內容是用Integer的方式來做序號的產生。不過在我接觸的專案中,一般都是用文字來做序號,例如0001。主要是因為在排序時,會比較方便做處理,在顯示上也比較美觀。所以在此提供一下文字自動序號的解法。
首先在要文字自動序號的明細檔的DataSet建一個AggregateField欄位,如下圖
最重要的是在 Expression 加上MAX(NO_SEQ)。NO_SEQ就是我們要自動序號的文字欄位。
接下來在DataSet(本例為jdsG_SOS) 的 AfterInsert Event中加上 jdsG_SOSNO_SEQ.AsString := AutoSEQ(jdsG_SOSMAXSEQ.AsString);
而AutoSEQ這個Function的程式碼如下
function AutoSEQ(MaxSEQ : String):String;
const
NOSize =4;
var
I : Integer;
NO : String;
begin
NO := '';
for I := 1 to NOSize-1 do NO := NO+'0';
if Length(MaxSEQ)>0 then
begin
I := StrToInt(MaxSEQ)+1;
NO := NO+IntToStr(I);
NO := Copy(NO,Length(NO)-NOSize+1,NOSize);
end
else
begin
NO := NO+'1';
end;
這樣在執行時,就可以看到NO_SEQ會出現0001這樣的序號了,如果修改為0003,接下來的序號也會變成0004。
希望提供的方式對DELPHI愛用者有幫助。
沒有留言:
張貼留言