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

单据流水号(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. 配置postgres9.3间的fdw——实现不同postgres数据库间的互访问

    下面是安装.配置.使用fdw实现postgres数据库间互访问的方法,转载注明出处: 1.源码安装fdw支持(要求数据库源码安装) cd /usr/local/postgresql-9.3.2/con ...

  2. canvas环形进度条

    <style> canvas { border: 1px solid red; margin: 100px; }</style> <canvas id="rin ...

  3. ECharts报表的使用

    知道你们懒得手打网址,给你们贴上:http://echarts.baidu.com/echarts2/ 1.下载并解压之后,找到echarts-2.2.7\build\dist\echarts-all ...

  4. Alpha阶段项目复审

    队名 优点 缺点 名次 大马猴队 出现BUG修复时间短:针对初期用户需求的分析缺点能够快速更正,针对用户痛点实现了功能:开发的过程中削减了无用的功能,源代码管理比较好,更改能够及时提交,相关成员都有参 ...

  5. 微软IE团队发布《逃离XP》浏览器小游戏

    微软IE团队今天发布了一个有趣的小游戏<逃离Windows XP>,这款游戏可以工作在所有现代浏览器下,简单的街机风格可以让你尽情对XP施展破坏欲.微软发布XP及提供支持服务已经史无前例地 ...

  6. 关于plantera

    在Plantera,您可以建立属于您自己的花园,并且看着新的植物,灌木,树木和动物一起生长. 当您进行游戏,扩张您的花园时,您会吸引圆滚滚的蓝色生物小助手们,它们将帮助您捡果子,收获您的植物 有时候会 ...

  7. L222 词汇题

    Some psychologists argue that the traditional idea “spare the rod and spoil the child” is not ration ...

  8. screen 命令 http://man.linuxde.net/screen

    http://man.linuxde.net/screen -A 将所有的视窗都调整为目前终端机的大小. -d <作业名称> 将指定的screen作业离线. -h <行数> 指 ...

  9. ubuntu 部署wordPress

    准备 LAMP 环境 1.安装 Apache2 sudo apt-get install apache2 -y 安装好后,您可以通过访问服务器IP地址 x.x.x.x 查看到 “it works” 界 ...

  10. ASP.NET MVC配置Redis服务

    ===================== 1.下载并安装Redis.官网并未提供Windows安装版,所以去Github 下载 下载地址: https://github.com/MicrosoftA ...