请上传宽度大于 1200px,高度大于 164px 的封面图片
    调整图片尺寸与位置
    滚轮可以放大缩小图片尺寸,按住图片拖动可调整位置,多余的会自动被裁剪掉
取消
chengli(uid:76279)
职业资格认证:尚未取得认证
  • 怎样实现主子报表增删改查的功能
  • 怎样直接对数据字典的数据进行筛选?
  • 为什么我做的JS实现根据控件值自动匹配数据出现这种提示:此调用存在安全风险,如需使用请在安全管理中修改脚本调用公式限制
  • 自由报表为什么手写的编号能填报成功,面自动生成SQL("进销存test","Exec Proc_GetSeqence 'Yid','YID-'",1,1)的YID却提交不到数据库
  • 自动编号功能不知道怎样实现
  • 不知道有没有人事系统完整学习资料
  • 填报报表能不能做出上一条,下一条,最后一条,第一条等按钮?
  • 单元格a1单元格元素为存储过程Proc1.select(ReturnNum),为什么每插入一行自动编号完全相同而不是增加/* 存储过程  dbo.  */CREATE PROCEDURE .          @SeqCode varchar(60),                -- 规则代码          @ReturnNum Varchar(40) OUTPUT,    -- 返回的流水号          @MessageCode varchar(800) OUTPUT    -- 异常消息等AS/* Exec Proc_GetSeqence 'OrderNo','',''*****************************************************************作者:        XXXXXXXXX日期:        2013/06/30 功能描述:    获取数据表的主键流水号(INV, ASN, SO...)    主要思路:    1.取得最新流水号信息            2.把所有固定的规则信息替换成具体值,其他保持不变            eg:            规则为:        ASN<YYYY><YY><MM><XXX>ASN            当前日期为:    20130630            当前流水号为:12            最终流水号为:ASN201306013ASN            *******************************************************************//** SET NOCOUNT ON 的作用:* 不返回受影响行数* 存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。* */SET NOCOUNT ONDECLARE @SeqNowNumStr VARCHAR(20)    --当前值字符类型    DECLARE @SeqNowNum BIGINT            --当前值    DECLARE @year CHAR(4)                --年 YYYYDECLARE @month CHAR(2)                --月 MMDECLARE @day CHAR(2)                --日 DDDECLARE @Length INT                    --流水号长度DECLARE @DataFormat VARCHAR(50)        --流水号规则DECLARE @IniValue INT                --归零值DECLARE @ResetType VARCHAR(10)        --归零方式DECLARE @LastDate    CHAR(8)            --日期最大值            DECLARE @WorkFLowStr VARCHAR(20)     --前一次调用流水号时的日期值DECLARE @DataNow CHAR(8)            --当前日期DECLARE @i INT                        --转换变量,作用参照代码上下文    /** SET XACT_ABORT ON 的作用:* 存储中的某个地方出了问题,整个事务中的语句都会回滚* */SET XACT_ABORT ONBEGIN TRY    /* 初始化变量 */     SET @MessageCode='999'     SET @ReturnNum = '0'     SET @Length=0     SET @SeqNowNum =0;     SET @DataNow=CONVERT(CHAR(8),GETDATE(),112) --得到 20130704 的时间格式     SET @year=SUBSTRING(@DataNow,1,4)     SET @month =SUBSTRING(@DataNow,5,2)     SET @day =SUBSTRING(@DataNow,7,2)          Set @i=1           /***********如果有并发的正在运行,最多等待0.06秒,然后继续运行 Start*******/                BEGIN TRANSACTION          wait:         Update dbo.RUL_Sequence Set ='2' where SeqCode=@SeqCode and IsRunning='1'        If @@Rowcount=0            Begin            Waitfor Delay '00:00:01'            Set @i=@i+1            If @i<6 goto wait        End           COMMIT TRANSACTION        /***********如果有并发的正在运行,最多等待0.06秒,然后继续运行 End*******/               Select @Length = ,@SeqNowNum=NowSeqValue,@LastDate=DateMax,@DataFormat=DataFormat        ,@ResetType=ResetType,@IniValue =InitValue            From RUL_Sequence where SeqCode=@SeqCode                        if @SeqNowNum=0  --当前值正常情况下不可能是0                        begin                           Set @MessageCode='100'  --当前值 错误代码                           select @MessageCode                           return                        END                        --@ResetType=1 不归零 2 按日归零   3 按月归零   4按年归零    If (@ResetType=2 and @DataNow<>@LastDate  AND @IniValue>0)        OR (@ResetType=3 and @year+@month<>SUBSTRING(@LastDate,1,6) AND @IniValue>0)        OR (@ResetType=4 and @year<>SUBSTRING(@LastDate,1,4) AND @IniValue>0 )       BEGIN           SET @SeqNowNum=@IniValue       END      SET  @i=@Length --@i 此时表示流水号的总长度               /***********拼流水号格式 Start*******/                SET @WorkFLowStr='<'     WHILE @Length>0      BEGIN         SET @WorkFLowStr=@WorkFLowStr+'X'         SET @Length=@Length-1     END       SET @WorkFLowStr=@WorkFLowStr+'>'      /***********拼流水号格式 End*******/          set @SeqNowNumStr=CONVERT(VARCHAR(20),@SeqNowNum)     SET @Length=@i-len(@SeqNowNumStr)  --@Length 要补零的位数(eg:@SeqNowNumStr=148 当前流水号是五位,最后流水号为00148,00 就是需要补的两位)          /***********补零操作 Start*******/                WHILE @Length>0      BEGIN         SET @SeqNowNumStr='0'+@SeqNowNumStr         SET @Length=@Length-1     END     /***********补零操作 End*******/                     SET @ReturnNum=REPLACE( @DataFormat,'<YYYY>',@year);            -- 把规则中<YYYY>替换成相应年     SET @ReturnNum=REPLACE( @ReturnNum,'<MM>',@month);                -- 把规则中<MM>替换成相应月     SET @ReturnNum=REPLACE( @ReturnNum,'<DD>',@day);                -- 把规则中<DD>替换成相应日     SET @ReturnNum=REPLACE( @ReturnNum,@WorkFLowStr,@SeqNowNumStr);-- 把规则中的形如<XXX>的替换成相应流水号,               /***********更新当前流水值为最大流水号、上一个流水号生成时间和运行标记(运行标记置为"1"(没有运行) ) Start*******/    Begin transaction          UPDATE RUL_Sequence SET NowSeqValue=@SeqNowNum+1,DateMax=@DataNow,ISRUNNING='1', EditTime=Getdate()     WHERE IsRunning='2' AND  SeqCode=@SeqCode     --SELECT * FROM RUL_Sequence WHERE IsRunning='2' AND SeqCode=@SeqCode    -- PRINT @SeqNowNum+1    Commit transaction      /***********更新当前流水值为最大流水号、上一个流水号生成时间和运行标记(运行标记置为"1"(没有运行) ) End*******/   PRINT @ReturnNum    RETURNEND TRY--错误捕获BEGIN   CATCH        ROLLBACK TRANSACTION    set @MessageCode='行号='+cast(ERROR_LINE() as varchar(10))+'错误信息'+ERROR_MESSAGE()       +''   IF @@ROWcount<=0       set @MessageCode='无此编号规则'+@MessageCode    SELECT  @MessageCodeEND   CATCH
  • CREATE TABLE . ( varchar(60) NOT NULL ,  //编号规则代码 varchar(60) NULL ,  //描述 bigint NULL ,  //序号当前值 datetime NULL ,  //取值日期 int NULL ,  //序号长度,需和格式中的<XXX>位数配合 varchar(50) NULL ,  //规划格式,如<YY><MM><DD><XXX><ZZ> varchar(10) NULL , //日期最大值 varchar(1) NULL , //是否可编辑(0-系统代码,不可编辑,1-可编辑) varchar(10) NULL , //归零值 varchar(50) NULL , //归零方式(1不归零 2按日归零 3 按月归零 4按年归零) char(1) NULL   //正在运行标记,控制并发(1-正在运行,2-没在运行))复制代码示例示例中有一个orderno的流水号,如果再增加一个customeno记录,即可支持另一个流水号规则。存储过程:ALTER PROCEDURE .@SeqCode varchar(60),        -- 规则代码@NewValue varchar(60)=''AS/* Exec Proc_GetSeqence 'OrderNo','',''*****************************************************************功能描述:        获取数据表的主键流水号(INV, ASN, SO...)主要思路:        1.取得最新流水号信息2.把所有固定的规则信息替换成具体值,其他保持不变eg:规则为:        ASN<YYYY><YY><MM><XXX>ASN当前日期为:        20170630当前流水号为:12最终流水号为:ASN201306013ASN*******************************************************************//** SET NOCOUNT ON 的作用:* 不返回受影响行数* 存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。* */SET NOCOUNT ONDECLARE @SeqNowNumStr VARCHAR(20)        --当前值字符类型        DECLARE @SeqNowNum BIGINT        --当前值        DECLARE @year CHAR(4)        --年 YYYYDECLARE @month CHAR(2)        --月 MMDECLARE @day CHAR(2)        --日 DDDECLARE @Length INT        --流水号长度DECLARE @DataFormat VARCHAR(50)        --流水号规则DECLARE @IniValue INT        --归零值DECLARE @ResetType VARCHAR(10)        --归零方式DECLARE @LastDate        CHAR(8)        --日期最大值        DECLARE @WorkFLowStr VARCHAR(20) --前一次调用流水号时的日期值DECLARE @DataNow CHAR(8)        --当前日期DECLARE @i INT        --转换变量,作用参照代码上下文DECLARE @ReturnNum Varchar(40)DECLARE @MessageCode varchar(800)/** SET XACT_ABORT ON 的作用:* 存储中的某个地方出了问题,整个事务中的语句都会回滚* */SET XACT_ABORT ONBEGIN TRY/* 初始化变量 */SET @MessageCode='999'SET @ReturnNum = '0'SET @Length=0SET @SeqNowNum =0;SET @DataNow=CONVERT(CHAR(8),GETDATE(),112) --得到 20130704 的时间格式SET @year=SUBSTRING(@DataNow,1,4)SET @month =SUBSTRING(@DataNow,5,2)SET @day =SUBSTRING(@DataNow,7,2)Set @i=1 /***********如果有并发的正在运行,最多等待0.06秒,然后继续运行 Start*******/ BEGIN TRANSACTION wait:Update dbo.RUL_Sequence Set ='2' where SeqCode=@SeqCode and IsRunning='1'If @@Rowcount=0        BeginWaitfor Delay '00:00:01'Set @i=@i+1If @i<6 goto waitEndCOMMIT TRANSACTION /***********如果有并发的正在运行,最多等待0.06秒,然后继续运行 End*******/ Select @Length = ,@SeqNowNum=NowSeqValue,@LastDate=DateMax,@DataFormat=DataFormat,@ResetType=ResetType,@IniValue =InitValueFrom RUL_Sequence where SeqCode=@SeqCodeif @SeqNowNum=0 --当前值正常情况下不可能是0beginUpdate dbo.RUL_Sequence Set ='1' where SeqCode=@SeqCode --新增处理并发问题,恢复时间***set @ReturnNum='-1'Set @MessageCode='100' --当前值 错误代码SELECT @ReturnNum as NumRetrun,@MessageCode as MessageCodereturn;END--@ResetType=1 不归零 2 按日归零 3 按月归零 4按年归零If (@ResetType=2 and @DataNow<>@LastDate AND @IniValue>0)OR (@ResetType=3 and @year+@month<>SUBSTRING(@LastDate,1,6) AND @IniValue>0)OR (@ResetType=4 and @year<>SUBSTRING(@LastDate,1,4) AND @IniValue>0 )BEGINSET @SeqNowNum=@IniValueEND SET @i=@Length --@i 此时表示流水号的总长度/***********拼流水号格式 Start*******/ SET @WorkFLowStr='<'WHILE @Length>0 BEGINSET @WorkFLowStr=@WorkFLowStr+'X'SET @Length=@Length-1END SET @WorkFLowStr=@WorkFLowStr+'>' /***********拼流水号格式 End*******/set @SeqNowNumStr=CONVERT(VARCHAR(20),@SeqNowNum)SET @Length=@i-len(@SeqNowNumStr) --@Length 要补零的位数(eg:@SeqNowNumStr=148 当前流水号是五位,最后流水号为00148,00 就是需要补的两位)/***********补零操作 Start*******/ WHILE @Length>0 BEGINSET @SeqNowNumStr='0'+@SeqNowNumStrSET @Length=@Length-1END/***********补零操作 End*******/ SET @ReturnNum=REPLACE( @DataFormat,'<YYYY>',@year);        -- 把规则中<YYYY>替换成相应年SET @ReturnNum=REPLACE( @DataFormat,'<YY>',right(CONVERT(VARCHAR(4),@year),2));        -- 把规则中<YY>替换成相应年SET @ReturnNum=REPLACE( @ReturnNum,'<MM>',@month);        -- 把规则中<MM>替换成相应月SET @ReturnNum=REPLACE( @ReturnNum,'<DD>',@day);        -- 把规则中<DD>替换成相应日SET @ReturnNum=REPLACE( @ReturnNum,'<ZZ>',@NewValue);        -- 把规则中<ZZ>替换成相应变量值SET @ReturnNum=REPLACE( @ReturnNum,@WorkFLowStr,@SeqNowNumStr);-- 把规则中的形如<XXX>的替换成相应流水号,/***********更新当前流水值为最大流水号、上一个流水号生成时间和运行标记(运行标记置为"1"(没有运行) ) Start*******/Begin transactionUPDATE RUL_Sequence SET NowSeqValue=@SeqNowNum+1,DateMax=@DataNow,ISRUNNING='1', EditTime=Getdate()WHERE IsRunning='2' AND SeqCode=@SeqCode--SELECT * FROM RUL_Sequence WHERE IsRunning='2' AND SeqCode=@SeqCode-- PRINT @SeqNowNum+1Commit transaction /***********更新当前流水值为最大流水号、上一个流水号生成时间和运行标记(运行标记置为"1"(没有运行) ) End*******/select @ReturnNum as NumRetrun, @MessageCode as MessageCode;        END TRY--错误捕获BEGIN CATCH ROLLBACK TRANSACTION Set @ReturnNum='-2' set @MessageCode='行号='+cast(ERROR_LINE() as varchar(10))+'错误信息'+ERROR_MESSAGE() +''IF @@ROWcount<=0 set @MessageCode='无此编号规则'+@MessageCodeSELECT @ReturnNum as NumRetrun,@MessageCode as MessageCodeEND CATCH复制代码fine调用 方式:SQL("runserver","Exec Proc_GetSeqence 'OrderNo',''",1,1)复制代码结果如下:170810001说明:<YYYY> 四位年<YY>      两位年<MM>     月份<DD>     日<XXXX> 序号<ZZ>      固定的字符,可由存储过程第二个参数传入,用途:比如人员代码,在流水号基础上,用这个识别人员。调用如:SQL("runserver","Exec Proc_GetSeqence 'OrderNo','ok',1,1),结果就像是170810001ok这几个组合顺序可以任意。上述代码也是引用网上其它人的成果,我只是做了简单的修改,肯定是可以运行,大家如果有什么好办法也欢迎大家提供。虽然这个功能可以使用,但离我之用使用的“勤哲”在功能还还是差距比较大的,如废号的自动回收等。这里,希望fine能重视这些和设计相关的基础功能的集成工作,虽然fine具有很强大的功能,但一些基础类工具,还是能提供解决办法。也有利于你们系统的推广。________上面的流水号方案在sqlserver中怎么实现?
  • 怎样利用自增长字段进行增删改查工作

98

16

98

10

个人成就
内容被浏览37,432
加入社区7年355天
返回顶部