Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何生成包含文本代码的递增帐单号码?_C#_Sql Server_Windows_Winforms - Fatal编程技术网

C# 如何生成包含文本代码的递增帐单号码?

C# 如何生成包含文本代码的递增帐单号码?,c#,sql-server,windows,winforms,C#,Sql Server,Windows,Winforms,我的Winform应用程序中有一个账单表单。我想在结账时自动增加账单号。我有一个新的按钮来清除一切并开始新的账单。所以我在按钮点击事件中创建了一个代码 SqlCommand cmd = new SqlCommand("SELECT TOP 1 Bill_No FROM POS order by Bill_No Desc", con); int a = Convert.ToInt32(cmd.ExecuteScalar()); int b = a

我的Winform应用程序中有一个账单表单。我想在结账时自动增加账单号。我有一个新的按钮来清除一切并开始新的账单。所以我在按钮点击事件中创建了一个代码

 SqlCommand cmd = new SqlCommand("SELECT TOP 1 Bill_No FROM POS order by Bill_No Desc", con);
            int a = Convert.ToInt32(cmd.ExecuteScalar());
            int b = a + 1;
            string Bill = "Bill";
            txt_BillNo.Text = Bill+b.ToString();

现在的问题是,当我第二次点击那个按钮时,我会a'获取varchar数据。比如比尔12。对于下一次单击,我希望以Bill13的形式递增。但当它以varchar的形式从数据库中获取数据时,它不能单独增加数字。那么,有没有办法从varchar中获取数字?像bill12里的12

可以使用正则表达式从字符串中标识整数。\d+是整数的正则表达式。所以

 //System.Text.RegularExpressions.Regex

 resultString = Regex.Match(subjectString, @"\d+").Value;
 returns a string containing the first occurrence of a number in subjectString.

 Int32.Parse(resultString) will then give you the number.

您可以使用stuff替换前缀,这将为您提供数值

Select STUFF('Bill1',1,4,'')

您熟悉SQL Server的自动增量吗?我需要遵循一种模式。所以我在数字前面加上“Bill”字符串。但它被存储为varchar。我有一个主id列,它是自动递增的。您可以使用Substring方法跳过“Bill”:@Abhijith将任何类型的业务逻辑放入一个键中是一个非常严重的设计错误。您将如何在SQL中使用该键值?如果每次都要解析它,您将如何执行与它的连接?如果您想将某物作为账单,请使用单独的字段,例如
DocumentType
,并将该类型存储在其中。更好的方法是,创建一个
DocumentTypes
表,并在
DocumentTypeId
fieldR u中存储正确的ID,告诉我必须为bill no?创建一个单独的表,或者干脆不要尝试在键中存储任何类型的业务逻辑。使用正则表达式提取实际的密钥号是一个难看的黑客行为。密钥不应该包含逻辑。正则表达式在呈现记录时,可能会在非常有限的场景中掩盖问题。该密钥仍然无法用于加入、筛选等