在vb.net中创建收据编号并保存到mysql数据库中

问题描述:

如何创建如此收据编号“BSP000001”,并在收据表单的下一个负载中,收据编号将为“BSP000002”并再次保存到数据库。我正在使用vb2010和MySql数据库......这就像我的数据库表中自动增加收据编号。在vb.net中创建收据编号并保存到mysql数据库中

而且我真的不知道该怎么做。

它看起来像这样我的事务表,我想显示仅Receipt_No列,只是弄清楚..

Receipt_No急需
BSP000001
BSP000002
BSP000003

你的帮助,给任何阅读这篇文章的人...请为世界各地的程序员先生和太太提供大的帮助.I Thankyou ..

+0

此应用程序是否由多个用户同时使用? (这意味着两个人可以在同一时刻插入收据) – Steve 2014-12-19 10:49:47

+0

否先生..作为收银员的唯一用户..因为这是独立的应用程序。 – LovExpert 2014-12-19 11:05:34

+0

然后,您可以采用许多简单的方法来保留收据的最后一个号码。您可以添加一个只有一列的表格,并在插入前读取一个整数值。您可以有一个配置表,其中您有两列Key和Value。键= LastReceipt和值= XXXXX,回读此记录并增量。最后,您可以获取收据表的MAX(Receipt_no)并增加数字部分。 – Steve 2014-12-19 11:09:14

在单个用户场景中,通常您可以使用MAX函数或以DESCENDING命令将收据排序,以查找最后插入的收据。一旦你有了这个最后的记录,很容易提取的数字部分,由一个增加值,并建立新的receipt_no

Function GetNewReceiptNumber(prefix as string) as String 
    using cn = new MySqlConnection(connectionstring) 
    using cmd = cn.CreateCommand() 
     cn.Open() 
     cmd.CommandText = "select receipt_no from receipts order by receipt_no DESC limit 1" 
     Dim result = cmd.ExecuteScalar 
     if result IsNot DbNull.Value AndAlso result IsNot Nothing Then 
      Dim number = Convert.ToInt32(result.ToString().SubString(prefix.Length)) 
      return prefix & (number + 1).ToString("D6") 
     else 
      return prefix & "000001" 
     End If 
    End Using 
    End Using 
End Function 

或者也许是更好地使用MAX(receipt_no)一个稍微更快的性能(但你真的需要有receipt_no的指数)

cmd.CommandText = "select MAX(receipt_no) from receipts" 

你可以从你试图以这种方式

Dim newReceiptNumber = GetNewReceiptNumber("BSP") 

插入一个新的收据在THI代码调用此方法的回答也有一些假设:

  • 您,让您的连接 串到MySql细节叫connectionstring
  • 表的您存储收据的名字叫做 receipts
  • 一个全局变量
+0

看看[这个答案](http://*.com/questions/426731/min-max-vs-order-by-and-limit)也许我错了,它是更好地使用MAX,现在更新答案 – Steve 2014-12-19 13:07:20

+0

先生,我得到了一个错误行“Dim result = cmd.ExecuteScalar”错误是NullReferencesException是未处理的 – LovExpert 2014-12-19 13:09:50

+0

错误先生..错误是运算符''未定义类型'对象'和'System.DBNull' – LovExpert 2014-12-19 13:27:07