我要在销售表中添加一个销售id,类型为char(20),要求是前8位为当日日期即20061030,后四位为0001的递增数字,大家有什么好的解决方法
解决方案 »
- 请问大家,如何自动手汉化 Developer Express Inc-ExpressQuantumGrid 控件! 先谢谢
- dbgridEh过滤问题
- 我和一个女孩已经过了半年的合租生活,这半年里,可以用5个字来形容:痛,并快乐着。
- 将dbgrid中的数据导入到excel中后,怎样使它居中?怎样设置页面整齐,打印的时候直接打印就可以,而不需要调整?
- Bitmap image is not valid错误,能正确显示图片的再给200分其它顶者有分
- 在SQL中,怎样得到系统当前日期?
- 关于李维先生的"多层系统篇"的问题,相信很多人也碰到过。请大家来看看。
- 如何更改Listview某行的背景色,象FlashGet那样?
- 2个小问题,很简单,一个给5分
- 一个极度外行的问题!
- 我用webbrowser做的客户端浏览,发现运行一段时间之后,程序占用内存一直增加,想问下如何释放内存
- 如何给动态的combobox做条件选择
EdDH.Text := trim(FormatDateTime('yyyymmdd', NOW)) + copy(inttostr(i), 2, 4);
EdDH.Text := trim(FormatDateTime('yyyymmdd', NOW)) + copy(inttostr(i), 2, 4);
--用于为新插入的记录生成关键字
--参数说明: @TabName 要插入的表名
-- @FieName 要生成关键字的字段名
-- @PreCode 默认的前缀
--eg:exec NewTableDataNO 'orderm','single_no','DD'
--=============================================
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
2.将自定义函数绑定到表的字段上即可!
Create Function F_GetBookID()
Returns Varchar(10)
As
Begin
Declare @S Varchar(10)
Select @S= 'BK'+Right(100000000+IsNull(Right(Max(BookID),8),0)+1,8) From BOOK
Return @S
End
GO
--建立測試環境
CREATE TABLE BOOK (
BookID varchar(10) NOT NULL Default dbo.F_GetBookID(),
BookName varchar(20) NOT NULL,
Constraint PK_BOOK_ID Primary key(BookID)
)
GO
--測試
Insert BOOK(BookName) Select 'aa'
Insert BOOK(BookName) Select 'bb'
Insert BOOK(BookName) Select 'cc'Select * From BOOK
GO
--刪除測試環境
Drop Table BOOK
Drop Function F_GetBookID
--結果
/*
BookID BookName
BK00000001 aa
BK00000002 bb
BK00000003 cc
As
Begin
Declare @IDName Varchar(20)
Select @IDName = @DateTime+'-'+Right(10000000+IsNull(Right(Max(IDName),7),0)+1,7) From A
Return @IDName
End
GOCREATE TABLE A (
IDName varchar(20) Primary key Default DBO.F_GetID(CONVERT(VARCHAR,GETDATE(),23)),
DVDName varchar(20) NOT NULl
)Insert A(DVDName) Select 'aa'
Insert A(DVDName) Select 'bb'
Insert A(DVDName) Select 'cc'
Insert A(DVDName) Select 'dd'
Insert A(DVDName) Select 'ee'
Insert A(DVDName) Select 'ff'Select * From A
GODrop Table A
Drop Function F_GetID我把liangpei2008(逍遥叹)的代码改了下。。估计能满足你的要求感谢liangpei2008(逍遥叹)的代码
As
Begin
Declare @IDName Varchar(20)
Select @IDName = @DateTime+Right(10000+IsNull(Right(Max(IDName),4),0)+1,4) From A
Return @IDName
End
GOCREATE TABLE A (
IDName varchar(20) Primary key Default DBO.F_GetID(CONVERT(VARCHAR,GETDATE(),12)),
DVDName varchar(20) NOT NULl
)Insert A(DVDName) Select 'aa'
Insert A(DVDName) Select 'bb'
Insert A(DVDName) Select 'cc'
Insert A(DVDName) Select 'dd'
Insert A(DVDName) Select 'ee'
Insert A(DVDName) Select 'ff'Select * From A
GODrop Table A
Drop Function F_GetID这个比较满足你的要求..= =~
感谢liangpei2008(逍遥叹)的代码