我的一个表中有字段:id【int 自动增加】
file_id【】  希望file_id能够自动生成 流水号,例如 Tyyyymmdd×××T:固定字段 表示文本文件
A:固定字段 表示音频文件
V:固定字段 表示视频文件yyyy表示年 mm表示月  dd表示日×××:表示编号每天都从001 开始递增,这个递增和TAV没有关系,
           比如今天第一个文件是文本文件,则标号是  T20120619001
               今天第二个文件是音频文件,则标号是  A20120619002
               今天第三个文件是视频文件,则标号是  V20120619003希望大家给我详细的程序【最好有详细的注释】,本人菜鸟,不想使用存储过程完成这项工作,十分感谢

解决方案 »

  1.   

    首先固定字段你自己可以上传时判断获取,yyyymmdd直接通过DateTime.Now.ToString("yyyyMMdd")获取,最后3位序列号了。这个序列号必须在数据库中有一个表TB(Code,Value,UpdateTime),Code值用于区分是T,A,还是V,Value用于存序列号,UpdateTime存时间。生成流水号序列号时,判断TB中对应Code值是否存在当天的数据,如果不存在,把Value更新成001,UpdateTime更新成当天,然后获取该Value拼接之前的字符合成;如果存在,则把Value更新成Value+1,然后获取该Value拼接之前的字符合成。
      

  2.   

    不用存储过程就用函数去完成IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'tba')
    BEGIN
    DROP TABLE tba
    END
    GO
    CREATE TABLE tba
    (
    ID INT IDENTITY(1,1),
    Fileid VARCHAR(100)
    )
    GO
    IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'createid')
    BEGIN
    DROP FUNCTION CreateID
    END
    GO
    CREATE FUNCTION CREATEID(@Type VARCHAR(10))
    RETURNS VARCHAR(100)
    AS
    BEGIN
    DECLARE @FileID VARCHAR(100)
    DECLARE @Num INTSELECT @Num = ISNULL(COUNT(1),0) FROM tba WHERE CHARINDEX(@Type,FileID) > 0 AND CHARINDEX(CONVERT(VARCHAR(8),GETDATE(),112),Fileid) > 0SET @Num = @Num + 1SET @FileID = @Type + CONVERT(VARCHAR(8),GETDATE(),112) + REPLICATE('0',3 - LEN(RTRIM(@Num))) + RTRIM(@Num)RETURN @FileID
    END
    GOINSERT INTO tba
    SELECT dbo.CREATEID('T') UNION ALL
    SELECT dbo.CREATEID('A') UNION ALL
    SELECT dbo.CREATEID('V') UNION ALL
    SELECT dbo.CREATEID('T') UNION ALL
    SELECT dbo.CREATEID('T') SELECT * FROM tbaID Fileid
    1 T20120619001
    2 A20120619001
    3 V20120619001
    4 T20120619002
    5 T20120619003
      

  3.   

    谁有C#web企业信息文档管理系统,给我传一份做一下参考,谢谢
    邮箱:[email protected]谢谢
      

  4.   

    当你插入一个流水号时,假设是T20120619001,那么你先根据文件判断出第一个T,然后DateTime.Now.ToString("yyyyMMdd")得到20120619,最后从TB表获取Code值等于T时的Value值(Value值必须先存在,方法之前已说明)。最后把3步操作的字符串拼起来,最后插入到你自己要插入的数据表里面去。