2

我正在嘗試創建一個工作應用程序。該應用程序將在內部使用,並應允許我們爲我們的產品SKU分配一些條形碼號碼。我正在使用Visual Studio/Basic 2010 Express來構建這個功能,因爲我非常有限且初學者的體驗是VS 2010 Express。將自動增量限制到特定範圍

我給一個關於我怎麼看這個應用程序工作位的信息,然後我會與我的實際問題:

我看到應用程序允許我們通過在數據庫中創建一個新的產品用戶輸入SKU和產品描述,然後應用程序將爲該產品分配條碼的下一個可用基本編號,然後應用程序將(如果需要)生成正確的EAN13和GTIN14條形碼,並將其存儲在該SKU中。

作爲一家公司,我們可以使用大量的條形碼號碼,並且我們已經將這個大範圍分開,以便第一個50,000(例如)用於我們的EAN13代碼,接下來的50K用於我們的GTIN14代碼內箱和剩餘的50K用於主紙箱。

所以爲了實現這個我有我的產品表,其中包含'SKU','Description'和'BarcodeBase'字段。我設法將BarcodeBase字段設置爲唯一的,並且我嘗試使用AutoIncrement(種子&步驟)以確保此操作爲產品分配符合上述EAN13範圍的基本條碼(在計算校驗位之前) ...

因此,最後我的問題是:有沒有辦法可以對AutoIncrement設置一個上限,以便在未來的途中,基本條形碼號碼不會溢出到下一個範圍?

我一直在谷歌搜索沒有成功的答案,我只是遇到的事情,談論有限的領域的數據類型。例如Int32類型的上限。通過我的搜索,我已經模糊地意識到該領域的'表達'屬性以及編碼部分類的可能性 - 但我不知道這是否是正確的方向或者是否有更簡單的方法我忽略/沒有找到。

我真的很感激任何幫助!

編輯:按照GrandMasterFlush的評論 - 我已經添加了一個本地數據庫到我的VS項目。所以我想我正在使用SQL Server Compact 3.5 db。

+2

您使用的是哪種數據庫系統?這可能是值得你編輯/重新編寫你的問題的。 – GrandMasterFlush

+0

你可以用簡單的查詢來實現嗎?返回表中的項目計數並繼續應用程序邏輯。 –

+1

@GrandMasterFlush - 同意,已編輯帖子並添加標籤。感謝 – AlexAshleighBurwood

回答

1

使用檢查約束,例如:

ALTER TABLE dbo.Product ADD CONSTRAINT ... 
CHECK (BarcodeBase BETWEEN 1 AND 50000); 

我建議你不要做BarcodeBase在產品表中的IDENTITY列(IDENTITY是你指的是「自動增量」的功能)。 IDENTITY實際上是專爲替代關鍵碼使用而設計的,對於有意義的商業數據並不理想。您無法更新IDENTITY列,它不一定是連續的,可能在編號序列中存在空白,並且您也只能爲每個表使用一個IDENTITY列。您可以在其他位置生成序列,而不是在產品表中使用IDENTITY,例如,通過遞增存儲在單個行表中的單個值。

+0

謝謝你這麼多的可能的答案@sqlvogel - 而我去找出其中的一些話是什麼意思/我有一個後續的問題:我應該BarcodeBase自己的表,然後我的產品錶鏈接到?那是你在別處產生序列的意思嗎?還是我誤解了? – AlexAshleighBurwood