在添加产品编号时:要求编号自动产生。格式为:字母+日期+序号。且时间不同则序号不同。列如:PH07061101,PH07061102
PH07061201
PH07061301
不知道如何判断日期的不同,没有思路,请大家指教,谢谢~!
PH07061201
PH07061301
不知道如何判断日期的不同,没有思路,请大家指教,谢谢~!
解决方案 »
- FastReport 组合并
- 求青岛.net开发进削存兼职人员 待遇优厚
- 关于网络拷贝的问题.想实现多个客户端访问服务端并下载镜像文件如何做到速度最快。
- 如何实现工具栏的窗体图标的高亮度提示
- 救命啊!我给40分!
- 关于TEdit的问题
- 请问如何把delphi做成NT服务?
- 关于设置环境变量的问题解决办法。看了半天坛子里面没一个回答正确的,也许高手不希罕回答吧。
- ●●●●fastreport中如何把两个query中的数据显示到一起
- 求助,在 WIN2000 中,我无法启动 MS DTC,并且 Win2000 的组件服务启动也出错,
- 请教delphi多线程技术监控多个串口
- ***请问两个有关MOUSE与窗体的问题***
--=============================================
--过程用于为新插入的记录生成编号
--参数说明: @TabName 要插入的表名
-- @FieName 要生成关键字的字段名
-- @PreCode 默认的前缀
--eg:exec NewTableDataNO 'orderm','single_no','AA'
--=============================================
CREATE PROCEDURE [NewTableDataNO]
@TableName varchar(50),
@FieldName varchar(50),
@PreCode varchar(2)
ASDeclare @TmpPreCode varchar(100),@Sql varchar(1000), @NewNo varchar(50), @I varchar(50)if not exists(select * from tempdb.dbo.sysobjects where Name = '##TmpNewNo')
Create table ##TmpNewNo(RandF float, NewNo varchar(50))Set @TmpPreCode = @PreCode--找当天的最大编号
select @TmpPreCode = @TmpPreCode + CONVERT(char(6), Getdate(), 12), @I = cast(RAND() as varchar(50))
set @sql = 'insert ##TmpNewNo(RandF, NewNo)
select ' + @I + ', isnull(max(' + @FieldName + '), '''')'
+ ' from ' + @TableName
+ ' Where left(' + @FieldName + ', len(''' + @TmpPreCode + ''')) = ''' + @TmpPreCode + ''''
exec(@Sql)
select @NewNo = NewNo from ##TmpNewNo where RandF = @I
delete from ##TmpNewNo where RandF = @I--生成新的编号
if @NewNo = '' set @I = '000' else Set @I = right(@NewNo, 3)set @I = cast(cast(@I as int) + 1 as varchar(3))
set @I = case len(@I) when 0 then '001' when 1 then '00' + @I when 2 then '0' + @I else @I endselect @TmpPreCode + @I
GO
@BH varchar(12) output,---编号输出
@TableName Varchar(30),---一个关键字
@UpdateBH Bit
AS
declare @Year Int,
@Month int,
@Day int,
@Today DateTime,
@TbTime DateTime,
@SysBH Int,
@TmpBH VarChar(10)
begin
select @Today=GetDate()
select @TbTime=SysTime,@SysBH=BH from SysBH where TableName=@TableName
if DateDiff(Day,@Today,@TbTime)<0--往日日期判断
begin
update SysBH set BH=1,SysTime=GetDate() where TableName=@TableName
Set @SysBH=1
end
else if DateDiff(day,@Today,@TbTime)>0--日期大于当前
begin
Set @BH='-1'---------------返回错误代码
Return
end
select @Year=Year(@ToDay),@Month=Month(@Today),@Day=Day(@Today)
select @TmpBH=Right(Str(@Year,4,0),2)+(Select Case when @Month>=10 then Str(@Month,2,0)
when @Month<10 then '0'+Str(@Month,1,0)
end)+
(Select Case When @Day>=10 then Str(@Day,2,0)
When @Day<10 then '0'+Str(@Day,1,0)
end)
if @SysBH<10 select @TmpBH= @TmpBH+'00'+Str(@SysBH,1,0)
else if @SysBH<100 Select @TmpBH=@TmpBH+'0'+str(@SysBH,2,0)
else select @TmpBH=@TmpBH+str(@SysBH,Len(@SysBH),0)
if @UpdateBH=1
update SysBH set BH=BH+1,SysTime=GetDate() where TableName=@TableName select @BH=@TmpBH
return end
GO
UDF专门生成编号 ~