首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VB6 自動生成訂單編號:資料庫自動編號欄位替代程式碼生成

     編輯:程式設計綜合問答

最佳實務:資料庫 Identity / AutoNumber

  • SQL Server:OrderID INT IDENTITY(1,1) PRIMARY KEY
  • Access:OrderID AUTONUMBER PRIMARY KEY
  • MySQL:OrderID INT AUTO_INCREMENT PRIMARY KEY

VB6 端處理


' 新增記錄後立即取得自動編號
rs.AddNew
rs("CustomerName") = txtName.Text
' ... 其他欄位
rs.Update
rs.Move 0, rs.LastModified ' 定位到新記錄
txtOrderID.Text = rs("OrderID") ' 顯示自動生成的編號

為何不在 VB 端生成

  • 併發環境下易產生重複編號(需額外鎖機制)。
  • 資料庫自動編號由引擎保證唯一、單調遞增、無縫隙(視引擎)。
  • 程式碼簡化,避免「取最大值+1」競爭條件。

若必須在 VB 生成(單機/教學)


' 查詢最大值 + 1
Dim rs As New ADODB.Recordset
rs.Open "SELECT MAX(OrderID) AS MaxID FROM Orders", cn, adOpenStatic, adLockReadOnly
Dim nextID As Long
If IsNull(rs("MaxID")) Then nextID = 1 Else nextID = rs("MaxID") + 1
rs.Close
txtOrderID.Text = nextID
' 注意:多用戶並發時此法不安全

總結

VB6 訂單編號**強烈建議使用資料庫自動編號欄位**,新增後讀回顯示。僅在單機教學環境才考慮程式碼生成,並注意併發風險。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved