流水号的格式为:年+月+流水号(如:201109001,201109002,201109003,......)
每个月的月初流水号将重头开始
一一年的十月为:201110001,201110002,......
一一年的十一月为:201111001,201111002,......
一一年的十二月为:201112001,201112002,201112003,......急,感谢了!
每个月的月初流水号将重头开始
一一年的十月为:201110001,201110002,......
一一年的十一月为:201111001,201111002,......
一一年的十二月为:201112001,201112002,201112003,......急,感谢了!
int id = 1;
id = Convert.ToInt32(DateTime.Now.ToString("yyyyMM00")) + id;
Console.Write(id);
Console.Read();
增加一个数据表,放最少三个字段:年份、月份、流水号最大值。然后编写一个存储过程来生成流水号。读数据库的年份和月份来查流水号就OK了,没有该年月的流水则创建一条记录,否则修改并将流水号加1.设置长度,位数不足用0填充。Good Luck。
public static string AutoReturnID(string TableName, string FiledName)
{
String sqlr = "select Max(" + FiledName + ") from " + TableName + "";
string ReturnID;
using (OleDbConnection connection = new OleDbConnection(connectionString))
{ OleDbCommand Command = new OleDbCommand(sqlr, connection);
connection.Open();
if (Command.ExecuteScalar() == null)
{
ReturnID = DateTime.Now.Year.ToString("000") + DateTime.Now.Month.ToString("00") + DateTime.Now.Day.ToString("00") + "001";
}
else
{
if (DateTime.Now.Day==1)
{
ReturnID = DateTime.Now.Year.ToString("000") + DateTime.Now.Month.ToString("00") + DateTime.Now.Day.ToString("00") + "001";
else
{
string count = Convert.ToString(Command.ExecuteScalar());
count = count.Substring(count.Length - 3, 3);
ReturnID = DateTime.Now.Year.ToString("000") + DateTime.Now.Month.ToString("00") + DateTime.Now.Day.ToString("00") + (Convert.ToInt32(count) + 1).ToString("000");
}
}
Command.Dispose();
connection.Close();
return ReturnID;
}
}
{
String sqlr = "select Max(" + FiledName + ") from " + TableName + "";
string ReturnID;
using (OleDbConnection connection = new OleDbConnection(connectionString))
{ OleDbCommand Command = new OleDbCommand(sqlr, connection);
connection.Open();
if (Command.ExecuteScalar() == null)
{
ReturnID = DateTime.Now.Year.ToString("0000") + DateTime.Now.Month.ToString("00") + DateTime.Now.Day.ToString("00") + "001";
}
else
{
if (DateTime.Now.Day==1)
{
ReturnID = DateTime.Now.Year.ToString("0000") + DateTime.Now.Month.ToString("00") + DateTime.Now.Day.ToString("00") + "001";
}
else
{
string count = Convert.ToString(Command.ExecuteScalar());
count = count.Substring(count.Length - 3, 3);
ReturnID = DateTime.Now.Year.ToString("0000") + DateTime.Now.Month.ToString("00") + DateTime.Now.Day.ToString("00") + (Convert.ToInt32(count) + 1).ToString("000");
}
}
Command.Dispose();
connection.Close();
return ReturnID;
}
}
--在数据库做应该会好一些
--数据表
DECLARE @Table TABLE(Number VARCHAR(20))
--测试数据
INSERT INTO @Table(Number)
SELECT '201110001' UNION ALL
SELECT '201110002' UNION ALL
SELECT '201110003'
DECLARE @Number VARCHAR(20),@DateStr VARCHAR(6),@TotalCount INTSET @TotalCount = 1000
SELECT @DateStr = REPLACE(CONVERT(VARCHAR(7),GETDATE(),120),'-','')
SELECT @TotalCount = @TotalCount +ISNULL(COUNT(1),0) FROM @Table T WHERE LEFT(T.Number,6)=@DateStrSET @Number = @DateStr+RIGHT(LTRIM(@TotalCount+1),3)SELECT @Number/*
(3 行受影响)--------------------
201110004(1 行受影响)*/