簡述:以一段聊天記錄來解釋實際生活中編號的定義方法以及誤區
問題:
我跟你說說我這邊的情況吧。好像工號03-0756-004-1JF,表示:03表示03年生產,0756是合同號,004表示對方單位的編號,1表示合同的第幾項,JF是表示車間。你說這樣的工號會不會很煩?
回答:
我只能說,你在設計數據結構的時候就已經錯誤了。
很多程序員認為“編號”是一個字段,在計算機中這的確是正確的,但是,在計算機中,編號是沒有含義的,沒有語法、沒有組合、沒有任何意義,僅表示記錄的唯一標識。而實際生產中,編號往往包含很多意義(除非你使用數據庫查詢系統來管理隨機編號)。因此就像你說的,編號的每個部分都有含義。所以,應該以每個部分為最小單位來建立數據庫結構。簡單的說,就是生產日期、合同號、對方單位編號、車間分幾個字段存儲,這也可以說是“原子性”擴展。其實SQL不僅僅可以查詢數據,還可以組織數據,比如
select日期&合同號&單位號&車間as編號,全名from產品表
問題:
但很慘的是:錄入員已經習慣很連續地錄入03-0456-002-4JF這樣的工號了,叫他們分開來錄入,恐怕很麻煩。
回答:
你可以在保存按鈕上寫點代碼切分數據,即使連續窗體也可以在BEFOREUPDATE事件裡面寫代碼。代碼可以類似:
SubSplitString()
DimstrA()AsString
strA()=Split(Me.TextBoxA,"-")
DimiAsInteger
Fori=0ToUBound(strA)
Debug.PrintstrA(i)
Me("TextBox"&i).value=strA(i)
Next
EndSub