请问谁有自动生成编号的原码。谢谢,分不够可加。(100分)

  • 主题发起人 yytxy1668
  • 开始时间
Y

yytxy1668

Unregistered / Unconfirmed
GUEST, unregistred user!
如:在06年7月份时生成:
DD-06070001;
DD-06070002;
...
在06年8月份时生成:
DD-06080001
DD-06080002
依次类推;
但在10、11、12月份分别用 A、B、C代替10、11、12月份;
如:DD-06A0001;
DD-06A0002;
DD-06B0001;
DD-06B0002;
...
在07年01月时生成:
DD-07010001;
DD-07010002;
...
DD-07A0001;
DD-07A0002;
DD-07B0001;
DD-07B0002;
谢谢各位愿意提供者。
 
Z

zywcd

Unregistered / Unconfirmed
GUEST, unregistred user!
你可以根据月份自己判断啊,
if formatdatetime('mm',now)='12') then
bh:='dd-'+formatdatetime('yy',now)+'C'+你的序号
else
if formatdatetime('mm',now)='10') then
bh:='dd-'+formatdatetime('yy',now)+'A'+你的序号
else
bh:='dd-'+formatdatetime('yym',now)+你的序号;
 
W

wlt3022

Unregistered / Unconfirmed
GUEST, unregistred user!
我比较笨,谢谢你再说明白点。
 
D

dey-999

Unregistered / Unconfirmed
GUEST, unregistred user!
假设序号字段为整型,那么SQL语句:
Select 编码='DD-0'+lTrim(rTrim(Cast(DatePart(Year,GetDate()) As Varchar)))+Case(DatePart(Month,GetDate()) When 10 then
'A' When 11 then
'B' When 12 then
'C')+Right('0000'+lTrim(rTrim(Cast(序号字段 As Varchar))),4) ...
在Delphi中为:
if formatdatetime('mm',now)='12') then
bh:='dd-'+rightstr(formatdatetime('yyyy',now),2)+'C'+rightstr('0000'+inttostr(你的序号),4)
else
if formatdatetime('mm',now)='11') then
bh:='dd-'+rightstr(formatdatetime('yyyy',now),2)+'B'+rightstr('0000'+inttostr(你的序号),4)
else
if formatdatetime('mm',now)='10') then
bh:='dd-'+rightstr(formatdatetime('yyyy',now),2)+'A'+rightstr('0000'+inttostr(你的序号),4)
else
bh:='dd-'+rightstr(formatdatetime('yyyymm',now),4)+rightstr('0000'+inttostr(你的序号),4);
 

无剑

Unregistered / Unconfirmed
GUEST, unregistred user!
顶.........
 

中鼎

Unregistered / Unconfirmed
GUEST, unregistred user!
function TfrmOutput_Info_ADD.Auto_Number(Var Query_tmp:TADOQuery):String;
//取自动编号
var
Rec_sum:Integer;
begin
Ls_CheckIn_id:=FormatDateTime('yyyymmdd',now);
with Query_tmpdo
begin
Close;
SqL.Clear;
SQL.Add('select distinct Output_No from Output_Info where Output_No like ''发货'+Ls_CheckIn_id+'%''');
Open;
if IsEmpty then
Rec_sum:=1
else
Rec_sum:=RecordCount + 1;
end;
Ls_CheckIn_id:='发货'+Ls_CheckIn_id+'-'+IntToStr(Rec_sum);
Result :=Ls_CheckIn_id;
Query_tmp.Close;
Query_tmp.Open;
end;
 

清新空气

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么不用case这样不是效率高些吗?
 
W

wlt3022

Unregistered / Unconfirmed
GUEST, unregistred user!
假设序号字段为整型,那么SQL语句:
Select 编码='DD-0'+lTrim(rTrim(Cast(DatePart(Year,GetDate()) As Varchar)))+Case(DatePart(Month,GetDate()) When 10 then
'A' When 11 then
'B' When 12 then
'C')+Right('0000'+lTrim(rTrim(Cast(序号字段 As Varchar))),4) ...
在Delphi中为:
if formatdatetime('mm',now)='12') then
bh:='dd-'+rightstr(formatdatetime('yyyy',now),2)+'C'+rightstr('0000'+inttostr(你的序号),4)
else
if formatdatetime('mm',now)='11') then
bh:='dd-'+rightstr(formatdatetime('yyyy',now),2)+'B'+rightstr('0000'+inttostr(你的序号),4)
else
if formatdatetime('mm',now)='10') then
bh:='dd-'+rightstr(formatdatetime('yyyy',now),2)+'A'+rightstr('0000'+inttostr(你的序号),4)
else
bh:='dd-'+rightstr(formatdatetime('yyyymm',now),4)+rightstr('0000'+inttostr(你的序号),4);

请高手帮忙,这些代码是否有问题。
出现以下错误:
服务器: 消息 156,级别 15,状态 1,行 3
在关键字 'When' 附近有语法错误。
能否把以上代码写明白一些,谢谢!
 
D

dey-999

Unregistered / Unconfirmed
GUEST, unregistred user!
Select 编码='DD-0'+lTrim(rTrim(Cast(DatePart(Year,GetDate()) As Varchar)))+Case(DatePart(Month,GetDate()) When 10 then
'A' When 11 then
'B' When 12 then
'C' else
'0'+ltrim(rtrim(cast(DatePart(Month,GetDate()) as varchar))) end)+Right('0000'+lTrim(rTrim(Cast(序号字段 As Varchar))),4) ...
 
S

S_Q_H

Unregistered / Unconfirmed
GUEST, unregistred user!
// 取得订单流水号
function GetNewOrderID(APrefixStr: string): string;
const
SQL_Select = 'select Max(OrderID) as MaxID from OrderMaster'
+' where OrderID Like ''%s%%''';
var
LeftStr: string;
AQ: TAdoQuery;
begin
LeftStr := APrefixStr + FormatDateTime('yyyymmdd',Now);
AQ := TAdoQuery.Create(nil);
with AQdo
begin
try
ConnectionString := ConnectStr;
SQL.Clear;
SQL.Append(Format(SQL_Select,[LeftStr]));
Open;
if not IsEmpty then
if FieldByName('MaxID').AsString = '' then
Result := LeftStr + '0001'
else
Result := LeftStr + Copy(IntToStr(StrToInt(Copy(FieldByName('MaxID').AsString,15,4))+10000+1),2,4);
finally
Free;
end;
end;
end;
 
L

leehq

Unregistered / Unconfirmed
GUEST, unregistred user!
var
strDate :string
intLoop :integer;
begin
strDate := format('DD-%0.2d%x',[yyyy mod 100, mm]);
case locate(format'SELECT max(field) from table where field like ''%d%%'',[strDate]), Query1) of
true: intLoop : strtointDef(copy(Query1.FieldByName(field).AsString, 5, maxint), 0) +1;
else
intLoop := 1;
end;
strDate := strDate +format('%0.4d',[intLoop]);
大概就是这样吧,你可以参考一下!
 

Similar threads

S
回复
0
查看
948
SUNSTONE的Delphi笔记
S
S
回复
0
查看
769
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部