zoukankan      html  css  js  c++  java
  • Microsoft Dynamics CRM4.0 创建单据的时候,自动生成单据编号的通用方法

    一、新建两个实体,具体如下:

    单据流水号(new_maxbillcode)          
    显示名称 名称 类型 格式 最大长度 需求级别 IME模式 备注
    名称 new_name nvarchar 文本 100 业务必需的 自动 系统自带
    标记 new_billmark nvarchar 文本 100 无约束 自动  
    实体 new_entity nvarchar 文本 100 无约束 自动  
    new_year nvarchar 文本 100 无约束 自动  
    new_month nvarchar 文本 100 无约束 自动  
    new_day nvarchar 文本 100 无约束 自动  
    位数 new_places int        
    流水号 new_maxcode int        
    测试(new_test)          
    显示名称 名称 类型 格式 最大长度 需求级别 IME模式 备注
    名称 new_name nvarchar 文本 100 业务必需的 自动 系统自带

    二、在单据流水号实体上添加配置规则,具体如下图:

    三、创建存储过程 [dbo].[UP_GetMaxBillCode] 

     1 /*--------------------------------------------------------------------------------------------------------              
     2 Memo 获取单据最大号        
     3         
     4 DECLARE @BillMark VARCHAR(20)        
     5 DECLARE @BillCode VARCHAR(50)        
     6 SET @BillMark='NEW'        
     7 EXEC UP_GetMaxBillCode @BillMark,@BillCode OUTPUT        
     8 SELECT BillMark=@BillMark,BillCode=@BillCode        
     9         
    10 SELECT * FROM NEW_MaxBillCodeExtensionBase        
    11 --------------------------------------------------------------------------------------------------------*/        
    12 CREATE PROC [dbo].[UP_GetMaxBillCode]        
    13 @Entity VARCHAR(50),        
    14 @BillCode VARCHAR(50) OUTPUT        
    15 AS        
    16 SET NOCOUNT ON        
    17 DECLARE @MaxCode VARCHAR(20)        
    18 DECLARE @Version ROWVERSION        
    19 DECLARE @Times INT        
    20         
    21 SELECT @MaxCode=NEW_MaxCode+1,@Version=[Version]        
    22 FROM NEW_MaxBillCodeExtensionBase        
    23 WHERE NEW_Entity=@Entity        
    24         
    25 UPDATE NEW_MaxBillCodeExtensionBase SET NEW_MaxCode=NEW_MaxCode+1        
    26 WHERE NEW_Entity=@Entity        
    27 AND [Version]=@Version        
    28         
    29 WHILE @@ROWCOUNT=0        
    30 BEGIN        
    31  SET @Times=@Times+1        
    32  IF(@Times%100=0)        
    33  BEGIN        
    34   WAITFOR DELAY '00:00:01'        
    35   IF(@Times>500)        
    36   BEGIN        
    37    RETURN NULL        
    38   END        
    39  END        
    40          
    41  SELECT @MaxCode=NEW_MaxCode+1,@Version=[Version]        
    42  FROM NEW_MaxBillCodeExtensionBase        
    43  WHERE NEW_Entity=@Entity        
    44          
    45  UPDATE NEW_MaxBillCodeExtensionBase SET NEW_MaxCode=NEW_MaxCode+1        
    46  WHERE NEW_Entity=@Entity        
    47  AND [Version]=@Version        
    48 END        
    49         
    50 SELECT @BillCode=ISNULL(NEW_BillMark,'')+ISNULL(NEW_Year,'')+ISNULL(NEW_Month,'')+ISNULL(NEW_Day,'')+RIGHT(CONVERT(VARCHAR,@MaxCode),NEW_places)    
    51 FROM NEW_MaxBillCodeExtensionBase        
    52 WHERE NEW_Entity=@Entity 
    View Code

    四、创建测试实体的触发器 

     1 --创建测试实体的触发器    
     2 CREATE Trigger [dbo].[Company_Insert_new_test]
     3 ON [dbo].[new_testExtensionBase]     
     4 AFTER INSERT    
     5 AS    
     6 BEGIN    
     7  SET NOCOUNT ON     
     8  IF EXISTS(SELECT * FROM INSERTED WHERE new_name IS NULL)    
     9  BEGIN    
    10   DECLARE @BillCode VARCHAR(50)    
    11   EXEC UP_GetMaxBillCode 'new_test',@BillCode OUTPUT    
    12   UPDATE new_testExtensionBase SET new_name=@BillCode   
    13   WHERE new_testid IN (SELECT new_testid FROM INSERTED)    
    14  END       
    15 END
    View Code

    五、新建一个测试实体记录,发现new_name自动生成如下:

  • 相关阅读:
    分页存储过程
    调存储过程
    winform httplicent调用API
    存储过程,触发器,等等。。。
    C# AJAXform上传图片
    Mysql order by与limit联用出现的问题
    将Sublime Text 3 放到右键中
    Vue-cli构建步骤
    Javascript面试知识点
    position详解
  • 原文地址:https://www.cnblogs.com/allenhua/p/3388755.html
Copyright © 2011-2022 走看看