大家帮我个忙呗!!!自动生成流水编号!这个问题我很头疼!不好实现!!求代码》》》
问题是:
当选择类别A中的1, 类别B中的01时,自动生成的编号为101001 当下次再同样选择类别A 和B时,自动生成101002, 101003,101004...
当选择类别A中的1,类别B中的02时,自动生成的编号为102001 当下次再同样选择类别A 和B时,自动生成102002, 102003,102004...
当选择类别A中的2,类别B中的01时,自动生成的编号为201001 当下次再同样选择类别A 和B时,自动生成201002, 201003,201004...
当选择类别A中的2,类别B中的02时,自动生成的编号为202001 当下次再同样选择类别A 和B时,自动生成202002, 202003,202004...
c# 流水编号
问题是:
当选择类别A中的1, 类别B中的01时,自动生成的编号为101001 当下次再同样选择类别A 和B时,自动生成101002, 101003,101004...
当选择类别A中的1,类别B中的02时,自动生成的编号为102001 当下次再同样选择类别A 和B时,自动生成102002, 102003,102004...
当选择类别A中的2,类别B中的01时,自动生成的编号为201001 当下次再同样选择类别A 和B时,自动生成201002, 201003,201004...
当选择类别A中的2,类别B中的02时,自动生成的编号为202001 当下次再同样选择类别A 和B时,自动生成202002, 202003,202004...
c# 流水编号
1.你可以直接根據條件去取他的最大MAX(NO)
2.你也可以在每次保存的時候把NO保存在一個表中,下次直接加一就是了
類別字段,序號,
Bill_Type,Number
A1B01 101001
A1B02 102001
.....
下次你只要在此直基礎上加1,再更新此表
如果送貨單,按月統計按天生成,SA201308270001後面四位流水號,下個月又從這個開始,也可以按年統計,按月生成,SA13080001,流水號長度都是參數控制,所以怎麼樣的需求就怎麼寫
這個不是很簡單嗎?自己寫個取得編號的方法
1.你可以直接根據條件去取他的最大MAX(NO)
2.你也可以在每次保存的時候把NO保存在一個表中,下次直接加一就是了
類別字段,序號,
Bill_Type,Number
A1B01 101001
A1B02 102001
.....
下次你只要在此直基礎上加1,再更新此表
..........................................
怎么去写那个语句呢?还有代码???? 方法不错,就是写不出啦! 好人做到底呗,哥哥
结构:
主键 类型 流水号
2 typeA 101002
3 typeB 102002c# :
string 流水号=DBHelperSQL.ExecuteScalar("select Max(流水号) FROM TB_SerialNum WHERE 类型='typeA'").ToString();
if(string.isnullOrempty(流水号))
{
流水号="101001";
}
string 新流水号=(int.Parse(流水号)+1).ToString();
DBHelperSQL.ExecuteSql("INSERT INTO TB_SerialNum VALUES('typeA','"+新流水号+"' )");//插入 新流水号到 TB_SerialNum
insert into 流水表 values ('102001')
IF EXISTS(SELECT * FROM sys.objects o WHERE o.object_id = OBJECT_ID('dbo.abc'))
DROP FUNCTION dbo.abc
GO
CREATE FUNCTION dbo.abc
(
@TYPEA NVARCHAR(10),
@TYPEB NVARCHAR(10)
)
RETURNS VARCHAR(15)
BEGIN
DECLARE @ID VARCHAR(15)
IF EXISTS(
SELECT *
FROM 流水表 m
WHERE
@TYPEA+@TYPEB = SUBSTRING(m.编号,1,3)
)
BEGIN
SET @ID = (SELECT MAX(m.编号) FROM 流水表 m WHERE @TYPEA+@TYPEB = SUBSTRING(m.编号,1,3))
SET @ID = RIGHT(@ID, 3) + 1
SET @ID = 1000 + @ID
SET @ID = RIGHT(@ID, 3)
SET @ID = @TYPEA+@TYPEB + CAST(@ID AS CHAR(3))
END
ELSE
SET @ID = @TYPEA+@TYPEB + '001'
RETURN @ID
ENDDECLARE @ID VARCHAR(15)
set @ID=dbo.abc('1','02')
select @ID/*
102002
*/
建立下表层次id 已编号 名称 位数 父级id
1 1 第一层 1 null
2 1 第二层 2 1
3 1 第三层 3 2再哪一层增加项目,就查找哪层的已编号数,位数不够的前边补0如再第二层增加科目,就取父级条目(第一层)已编号 + 第二层已编号加一,作为流水号
推荐使用递归,这样可以做无限级代码自填
string strsql = "select * from test where 流水编号 like '%" + t1 + "%' ";
dv = Das.CreateDataView(strsql);
int tt = dv.Table.Rows.Count;
int temp = 0;
if (tt > 1)
{
for (int i = 0; i < tt; i++)
{
if (i == 0)
{
string tt1 = Convert.ToString(dv.Table.Rows[i][0]);
tt1 = tt1.Substring(3, 4);
temp = Convert.ToInt32(tt1);
}
else
{
string tt1 = Convert.ToString(dv.Table.Rows[i][0]);
tt1 = tt1.Substring(3, 4);
int temp1 = Convert.ToInt32(tt1);
if (temp1 > temp)
{
temp = temp1;
} }
} string stemp = Convert.ToString(temp + 1).Trim();
int st = stemp.Length;
if (st == 1)
{
stemp = "000" + stemp;
}
else if (st == 2)
{
stemp = "00" + stemp;
}
else if (st == 3)
{
stemp = "0" + stemp;
}
else if (st == 4)
{
stemp = stemp;
}
this.Label3.Text = t1 + Convert.ToString(stemp).Trim();
}
else if (tt == 1)
{
for (int i = 0; i < tt; i++)
{ string tt1 = Convert.ToString(dv.Table.Rows[i][0]);
tt1 = tt1.Substring(3, 4);
temp = Convert.ToInt32(tt1) + 1; } string stemp = Convert.ToString(temp).Trim();
int st = stemp.Length;
if (st == 1)
{
stemp = "000" + stemp;
}
else if (st == 2)
{
stemp = "00" + stemp;
}
else if (st == 3)
{
stemp = "0" + stemp;
}
else if (st == 4)
{
stemp = stemp;
}
流水编号 = t1 + Convert.ToString(stemp).Trim();
}
else
{
流水编号 = t1 + "0001";
}
还有就是我最讨厌用sql中的存储过程了,可以不用存储过程嘛?
亲爱的大家,快来帮我这个可爱的小羔羊吧!!!
我的思路是 先查询项目1,项目2 (拼接起来)的最大值
在赋值给料号的文本框改变项目1和项目2的文本框内容时候:
protected void TextBox项目1_TextChanged(object sender, EventArgs e)
{string NO1 = "";
string NO2 = "";
string NO3 = "%";
string NO = ""; NO1 = TextBox4.Text.ToString();
NO2 = TextBox5.Text.ToString();
NO = NO1.ToString() + NO2.ToString()+NO3.ToString(); // SqlConnection conn = new SqlConnection("server=.;database=custom;");
conn.Open();
SqlCommand comm = new SqlCommand("select max(Cust_No)+1 NewNo from custom where Cust_No LIKE '"+NO+"'", conn);
SqlDataReader sdr = comm.ExecuteReader(); while (sdr.Read())
{
T_kehuNO.Text = sdr["NewNo"].ToString();
}
sdr.Close();
conn.Close();
}
A
Code
1
2
3
B
Code
01
02
03
将这两个类的值保存到流水号的表,
生成流水号时 where A类Code值=1 and B类Code值=01
取到Max(流水号)
将A类的Code+B类的Code值+max(流水号) 这样子就可以生成了。
将A类的Code+B类的Code值+max(流水号) 这样子就可以生成了。
此处如果设置了默认值的话就不用这样子了,只须 以max(流水号)+1即可(如果max(流水号不存在,就要设定初始的值的形式如 1010001))
如:101999的时候,再添加的话会是102000
将流水编号另存一个字段吧A类Code +B类Code +流水尾号
1 01 999【流水编号生成方式】 A类Code+B类Code+(max(流水尾号) +1)
101999=>1011000