【发布时间】:2020-07-07 00:34:06
【问题描述】:
我正在尝试使用数据库表上的最后一个发票编号自动生成发票编号。我的样本发票编号是“INV0000” 这是我尝试过的
SqlConnection scon1 = new SqlConnection(mycon1);
String myquery1 = "select max(Inv_num) from [dbo].[tblInv_info]";
SqlCommand cmd1 = new SqlCommand();
cmd1.CommandText = myquery1;
cmd1.Connection = con;
SqlDataAdapter da1 = new SqlDataAdapter();
da1.SelectCommand = cmd1;
DataSet ds1 = new DataSet();
da1.Fill(ds1);
txtInvoiceN.Text = ds1.Tables[0].Rows[0][0].ToString();
string a;
a = txtInvoiceN.Text;
a = a + 1;
txtInvoiceN.Text = a.ToString();
con.Close();
上面的代码可以正常工作,但发票编号不是 INV0001,而是输出变为 INV00001。我尝试将 SQL 查询更改为:
SELECT MAX(CONVERT(INT, RIGHT(Inv_Num, LEN(Inv_Num)-3))+1) FROM tblInv_info;
输出正确,但缺少前三个字母,我们将不胜感激。
【问题讨论】:
-
为什么不让你的数据库生成数字作为标识列
-
通常更容易将数字序列存储在单独的位置并使用它来填充发票编号。在 SQL Server 中查找序列。
标签: c# sql asp.net sql-server