取单据编号

string djbh="";

var data = db.z_ygzz.OrderByDescending(zz => zz.ygzzid).Take(1);

djbh = data.Select(d => d.djbh).FirstOrDefault();

先从数据库中查找最大id号,再找对应的djbh,最后调用方法NextNumber找下一位单据编号

public static string NextNumber(string BaseNumber,string firstValue)
{
string NewNumber = ""; //新值
int InNumber = 1; //进位
int PlaceValue; //位值
char[] No = BaseNumber.ToCharArray();

for (int i = BaseNumber.Length - 1; i >= 0; i--)
{
if (No[i] == ‘9‘ && InNumber == 1)
{
InNumber = 1;
NewNumber = "0" + NewNumber;
}
else if (InNumber == 1 && No[i] >= ‘0‘ && No[i] < ‘9‘)
{
PlaceValue = Int32.Parse(No[i].ToString());
PlaceValue = (InNumber + PlaceValue);
InNumber = 0;
NewNumber = PlaceValue.ToString() + NewNumber;
}
else
{
InNumber = 0;
NewNumber = No[i] + NewNumber;
}
}
if (BaseNumber == NewNumber)
NewNumber = firstValue ;
return NewNumber;

}

时间: 09-22

取单据编号的相关文章

按规则自动生成单据编号 以及并发问题

描述:每种单据新建时,自动生成它的单据编号. 规则如:固定码+日期+流水号 (ABC1603180001) 方法一:触发器 触发器的缺点是,执行了sql之后才看到编码. 测试:流水号不能超过最大数,否则后面的号码全是0 --有两张表,客户表和项目表,要求:新建项目时自动生成项目编号,每个不同的客户的项目的编号从1开始 --项目编号格式为PJ+"-"+"客户编号"+"-"+"日期"+"-"+"流水号

Dynamic CRM 2013学习笔记(四)单据编号及插件批量注册工具

Dynamic CRM 2013学习笔记(一)插件输入实体参数解析 Dynamic CRM 2013学习笔记(二)插件基本用法及调试 Dynamic CRM 2013学习笔记(三)快速创建实体 EntityCreater 基本上每个实体form上都会有单据编号,而且不同的实体编号要求还不太一样,这时就需要一个通用的单据编号插件,可配置以应对不同的需求. 下面简单介绍下实现步骤: 1. 创建二个实体,以保存各实体所要求的不同单据规则及当前流水号 2. 为不同的实体配置各自的单据规则 3. 编写及注

自动生成单据编号(转)

专门设计一个数据表用于存放管理软件中各种单据的最新的单据编号.编写一个存储过程用于自动生成单据编号. --****************--计算id --使用//表级排它锁//防止用户同时修改该记录--****************CREATE PROCEDURE GetId@xh integer,@id integer outAS /*如果想在连接一中锁住整个表,不允许其他事务更新表中任何记录,但可以读取记录,可使用HOLDLOCK选项,即(HOLDLOCK   等同于   SERIALI

SqlServer按时间自动生成生成单据编号

SET @_tmpDateTime = GETDATE() EXEC dbo.Dtw_Common_GenerateProofCode @ProofType = 'SO',@[email protected], @ProofDate = @_tmpDateTime, @RtnCode = @_tmpProofCode OUTPUT --生成的最终的CODE USE [SZVB]GO/****** Object: StoredProcedure [dbo].[Dtw_Common_Generate

生成单据编号的存储过程

USE [crm2]GO/****** Object: StoredProcedure [dbo].[GetBillsID] Script Date: 09/22/2018 15:13:35 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- Batch submitted through debugger: SQLQuery1.sql|0|0|C:\Users\admin\AppData\Local\Temp\~vsC414.sqlAL

SQL Server 通过游标重新定义单据数据的单据编号

DECLARE @Index INTSET @Index=100DECLARE UpdateCursor  CURSOR  FOR (SELECT DISTINCT AA.Id FROM dbo.表 AA  WHERE  数据过滤条件 )OPEN UpdateCursorDECLARE @DetailId NVARCHAR(36)DECLARE @Name NVARCHAR(36)FETCH NEXT FROM UpdateCursor INTO @DetailIdWHILE @@FETCH_S

基于Extjs的web表单设计器 第七节——取数公式设计之取数公式的使用

基于Extjs的web表单设计器 基于Extjs的web表单设计器 第一节 基于Extjs的web表单设计器 第二节——表单控件设计 基于Extjs的web表单设计器 第三节——控件拖放 基于Extjs的web表单设计器 第四节——控件拖放 基于Extjs的web表单设计器 第五节——数据库设计 基于Extjs的web表单设计器 第六节——界面框架设计 基于Extjs的web表单设计器 第七节——取数公式设计之取数公式定义 基于Extjs的web表单设计器 第七节——取数公式设计之取数公式的使用

解析大型.NET ERP系统 单据编码功能实现

单据编码是ERP系统中必备的功能,用于生成各种单据的流水号,常常借助于日期时间等字符来生成一个唯一的单据号码.从软件的角度来说,就是为生成数据表的主键值(参考编号),从用户的角度来说,就是给业务单据制定编码规范.之后做到见名知意,比如销售订单号是SO201508190001,采购订单号码是PO201508190001. 1 基础单据编码 Document serialization basic 单据编码主表,用于存放单据及其编码规则. CREATE TABLE [dbo].[DocumentSe

工作流系统中的语法标记系统

以微软的WF为基础,为达到ERP中的批核与通知目的,参考现有系统中的技术,在此分享其中的技巧. 先来看最终的结果,也就是下图中的工作流宿主. 在上面的工作流定义中,除工作流宿主(rehost)技术外,还需要解决规则表达式的解析难题. .NET WF提供的规则编辑器是基于代码的,但对于一个无代码的开发环境,需要找到一种表达式的设计,解析规范. 比如,在运行时,我们需要根据当前的运行参数解析出以上表达式的分支,最终流向哪个批核结点. 经过摸索,我提供现有系统中已经应用的三种方案,供读者参考. 1 查