【发布时间】:2017-05-31 03:53:53
【问题描述】:
我的 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 一样?
【问题讨论】:
-
你熟悉SQL Server的自动增量吗?
-
我需要遵循一个模式。所以我在数字前面添加“Bill”字符串。但它被存储为 varchar。我有一个自动递增的主 id 列。
-
可以使用Substring方法跳过"Bill" :msdn.microsoft.com/en-us/library/hxthx5h6(v=vs.110).aspx
-
@Abhijith 将任何类型的业务逻辑放在一个键中是一个非常严重的设计错误。您将如何在 SQL 中使用该键值?如果您每次都必须解析它,您将如何使用它执行 JOIN?如果您希望某物成为账单,请使用单独的字段,例如
DocumentType并将类型存储在其中。更好的是,创建一个DocumentTypes表并将正确的 ID 存储在您的DocumentTypeId字段中 -
你告诉我必须为账单号创建一个单独的表吗?
标签: c# sql-server windows winforms