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

单据流水号(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]

 /*--------------------------------------------------------------------------------------------------------
Memo 获取单据最大号 DECLARE @BillMark VARCHAR(20)
DECLARE @BillCode VARCHAR(50)
SET @BillMark='NEW'
EXEC UP_GetMaxBillCode @BillMark,@BillCode OUTPUT
SELECT BillMark=@BillMark,BillCode=@BillCode SELECT * FROM NEW_MaxBillCodeExtensionBase
--------------------------------------------------------------------------------------------------------*/
CREATE PROC [dbo].[UP_GetMaxBillCode]
@Entity VARCHAR(50),
@BillCode VARCHAR(50) OUTPUT
AS
SET NOCOUNT ON
DECLARE @MaxCode VARCHAR(20)
DECLARE @Version ROWVERSION
DECLARE @Times INT SELECT @MaxCode=NEW_MaxCode+1,@Version=[Version]
FROM NEW_MaxBillCodeExtensionBase
WHERE NEW_Entity=@Entity UPDATE NEW_MaxBillCodeExtensionBase SET NEW_MaxCode=NEW_MaxCode+1
WHERE NEW_Entity=@Entity
AND [Version]=@Version WHILE @@ROWCOUNT=0
BEGIN
SET @Times=@Times+1
IF(@Times%100=0)
BEGIN
WAITFOR DELAY '00:00:01'
IF(@Times>500)
BEGIN
RETURN NULL
END
END SELECT @MaxCode=NEW_MaxCode+1,@Version=[Version]
FROM NEW_MaxBillCodeExtensionBase
WHERE NEW_Entity=@Entity UPDATE NEW_MaxBillCodeExtensionBase SET NEW_MaxCode=NEW_MaxCode+1
WHERE NEW_Entity=@Entity
AND [Version]=@Version
END SELECT @BillCode=ISNULL(NEW_BillMark,'')+ISNULL(NEW_Year,'')+ISNULL(NEW_Month,'')+ISNULL(NEW_Day,'')+RIGHT(CONVERT(VARCHAR,@MaxCode),NEW_places)
FROM NEW_MaxBillCodeExtensionBase
WHERE NEW_Entity=@Entity

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

 --创建测试实体的触发器
CREATE Trigger [dbo].[Company_Insert_new_test]
ON [dbo].[new_testExtensionBase]
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON
IF EXISTS(SELECT * FROM INSERTED WHERE new_name IS NULL)
BEGIN
DECLARE @BillCode VARCHAR(50)
EXEC UP_GetMaxBillCode 'new_test',@BillCode OUTPUT
UPDATE new_testExtensionBase SET new_name=@BillCode
WHERE new_testid IN (SELECT new_testid FROM INSERTED)
END
END

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

Microsoft Dynamics CRM4.0 创建单据的时候,自动生成单据编号的通用方法的更多相关文章

  1. Microsoft Dynamics CRM4.0编程---说明

    Introduction(说明) If your organization has customers, you need a software system to help you manage y ...

  2. Microsoft Dynamics CRM4.0 和 Microsoft Dynamics CRM 2011 JScript 方法对比

    CRM 2011 如果需要再IE里面调试,可以按F12在前面加上contentIFrame,比如 contentIFrame.document.getElementById("字段" ...

  3. Microsoft Dynamics CRM4.0 JScript 过滤lookup 出现 Microsoft Dynamics CRM 窗口无法打开,可能已被弹出窗口阻止程序所阻止。

    一.现象:JScript过滤lookup字段,选择lookup字段出现下图的情况: 出现:Microsoft Dynamics CRM 窗口无法打开,可能已被弹出窗口阻止程序所阻止.请将这台Micro ...

  4. 【SQL-自动生成编号】按规则自动生成单据编号 以及并发问题_使用触发器、函数 等

    描述:每种单据新建时,自动生成它的单据编号. 规则如:固定码+日期+流水号 (ABC1603180001) 方法一:触发器 触发器的缺点是,执行了sql之后才看到编码. 测试:流水号不能超过最大数,否 ...

  5. 新版本ADT创建Android项目无法自动生成R文件解决办法

    本人使用的是ADT是Version 23.0.2,支持Android 6.0之后的系统环境,最高版本23,在创建Android项目的时候,每次创建项目选择“Compile With”低于6.0版本的时 ...

  6. GZFramwork数据库层《二》单据表增删改查(自动生成单据号码)

    运行效果: 使用代码生成器(GZCodeGenerate)生成tb_EmpLeave的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCodeGe ...

  7. PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法

    一.数字补0. 如果要自动生成学号,自动生成某某编号,就像这样的形式“d0000009”.“d0000027”时,那么就会面临一个问题,怎么把左边用0补齐成这样8位数的编码呢?我想到了两种方法实现这个 ...

  8. webstorm创建js文件时自动生成js注释

    设置webstorm创建js文件时自动生成js注释 settings--Editor--File and Code Temlates 黑色框框里的内容自己填写上去,以下是参考的代码块: /** * @ ...

  9. Dynamics CRM4.0 和 Dynamics CRM2011 Plugin 实现一样的功能的方法的比较

    1.给类型赋值不同 CRM4 plugin给lookup赋值为空 : Lookup lookupnull = new Lookup(); lookupnull.IsNull = true; looku ...

随机推荐

  1. Hibernate优化策略

    https://blog.csdn.net/blueheart20/article/details/21019043 https://blog.csdn.net/yerenyuan_pku/artic ...

  2. python dict sorted 排序

    https://www.cnblogs.com/linyawen/archive/2012/03/15/2398292.html 我们知道Python的内置dictionary数据类型是无序的,通过k ...

  3. 根据id来实现小程序tab切换,

    本例根据绑定id来实现tab切换,但本例仍有缺陷,用for循环数据,无法实现切换.如有大神能够有更好方法,欢迎留言更正 WXML: <view class="tab"> ...

  4. python3 scrapy 爬取腾讯招聘

    安装scrapy不再赘述, 在控制台中输入scrapy startproject tencent 创建爬虫项目名字为 tencent 接着cd tencent 用pycharm打开tencent项目 ...

  5. 关于C++静态成员函数访问非静态成员变量的问题

    静态成员函数不能访问非静态成员,这是因为静态函数属于类而不是属于整个对象,静态函数中的 member可能都没有分配内存.静态成员函数没有隐含的this自变量.所以,它就无法访问自己类的非静态成员 代码 ...

  6. SQL 递归找查所有子节点及所有父节

    在SQL的树型结构中,很多时候,知道某一节点的值,需要查找该节点的所有子节点(包括多级)的功能,这时就需要用到如下的用户自定义函数. 表结构如下: ID int Dep_Type int Dep_Co ...

  7. JQuery, Silverlight 公用WCF

    WCF web.config配置: <?xml version="1.0"?> <configuration> <system.web> < ...

  8. maven多环境配置

    我们在开发项目的时候,往往会有好几个环境.比如开发.预发布(测试).产品,每个环境一般用到配置都不一样,最典型的就是数据库,开发的数据库与产品的数据库肯定是不一样的,如果要多个环境的切换就得改配置,这 ...

  9. SaltStack自动化运维工具

    一.SaltStack的了解 SaltStack管理工具允许管理员对多个操作系统创建一个一致的管理系统,包括VMware vSphere环境. SaltStack作用于仆从和主拓扑.SaltStack ...

  10. jQuery 3.1 参考手册.CHM离线版下载

    制作了一份jQuery 3.1 参考手册.CHM离线版供大家使用 点击下载 预览一下