是否為空?一開始我是用的isnull 來逐個判斷的,但是重複的地方的確很多。我們秉著乙個重複就要努力抽象的原則,同時爭取相似的功能用不同的實現方式。今天算是做個小結,拋磚引玉,希望大家多多的提寶貴意見。
抽象,是為了實現更好的**復用,也便於日後的維護。希望在做合作版的時候,能對這些問題有乙個更加深刻的理解。
這可以單獨寫乙個方法或是小類。
以下是參照高曉青師傅的部落格寫的。
''' ''' 判斷窗體上所有控制項是否為空
'''
''' boolean
public class isright
public function isnull(log as windows.forms.control.controlcollection) as boolean
dim conobject as new control
dim flag as boolean
flag = true '預設所有控制項內部都有值
for each conobject in log
'利用typeof 檢視空間型別
if typeof (conobject) is textbox then
if conobject.text.trim = "" then 'tag代表當前為空的控制項
msgbox(conobject.tag.tostring + "不能為空,請輸入完整", vbokonly, "提示")
conobject.focus()
flag = false
return flag
exit function
end if
end if
next
return flag
end function
''' ''' 判斷是否為數字
'''
'''
'''
''' boolean
public function isnumberic(log as windows.forms.control.controlcollection) as boolean
dim conobject as new control
dim flag as boolean
flag = true '預設所有控制項內部都有值
for each conobject in log
'利用typeof 檢視空間型別
if typeof (conobject) is textbox then
if isnumeric(conobject.text) = false then 'tag代表當前為空的控制項
msgbox(conobject.tag.tostring + +" " + "請輸入數字", vbokonly, "提示")
conobject.focus()
flag = false
return flag
exit function
end if
end if
next
return flag
end function
這樣乙個類,能迴圈判斷所有的控制項是否為空,或是否為數字。當然,仔細看了上面乙個**你就會了解到,我們還需要在設計空間的時候,將每個空間寫上它們自己的名字,方便給出精準的提示。
這個類直接放在u層即可。
那我們看看它的客戶端呼叫時這樣的。
dim myobject as new isright
dim myobjectnum as new isright
if myobject.isnull(controls) = false then
exit sub
end if
if myobjectnum.isnumberic(controls) = false then
exit sub
end if
u層
public class gettime
shared function getdate() as date
dim getdate1 as new bll.timebll
return getdate1.getdate
end function
shared function gettime() as date
dim gettime1 as new bll.timebll
return gettime1.gettime
end function
end class
b層只是個傳遞,並無實質性內容。我們看看d層的**。你能一眼找到關鍵的兩句麼
''' ''' 獲取日期
'''
'''
'''
public function getdate() as date implements itime.getdate
dim sql as string '定義字串變數sql 用於存放要執行的語句
sql = "select convert(varchar(100), getdate(), 23) " '獲取日期的**
dim cmdtype as commandtype = commandtype.text 'commandtype 指定如何解釋命令字串
dim sqlhelper as new global.sqlhelper.sqlhelper '例項化sqlhelper這個類的物件
dim dt as new datatable
dim sqldate as string
dt = sqlhelper.execselectno(sql, commandtype.text)
sqldate = dt.rows(0)(0).tostring
return sqldate
end function
''' ''' 獲取時間
'''
'''
'''
public function gettime() as date implements itime.gettime
dim sql as string '定義字串變數sql 用於存放要執行的語句
sql = "select convert(varchar(100), getdate(), 24) "
dim cmdtype as commandtype = commandtype.text 'commandtype 指定如何解釋命令字串
dim parameter as sqlparameter() 'sqlparameter表示 sqlcommand 的引數,也可以是它到 dataset 列的對映
parameter = {}
dim sqlhelper as new global.sqlhelper.sqlhelper '例項化sqlhelper這個類的物件
dim dt as new datatable
dim sqltime as date
dt = sqlhelper.execselectno(sql, commandtype.text)
sqltime = dt.rows(0)(0).tostring
return sqltime
end function
end class
機房收費系統,是我們自己親自賦予生命的乙個系統。感謝它讓我開始對敲**有了更多的思考。我們有了很大的空間去思考如何讓我們的**更靈活和更健壯。我們從碼農開始,會走的越來越遠。還是那句話,希望本文能拋磚引玉,你的機房,你是怎麼抽象和優化的呢?歡迎各位留下寶貴意見。
機房收費系統
利用幾乎兩個多禮拜的時間,終於把機房收費系統基本完工了。這個過程中,因為有了學生系統做為鋪墊,所以做的時候還算得心應手吧。在其實也遇到了一引些問題,還是好解決的。這個系統到現在為止,也只能說是基本實現了功能,但是還很不健壯,而且漏洞我想還有很多,還有待進一步的除錯與完善。雖然在敲機房收費系統前,把命...
機房收費系統
利用幾乎兩個多禮拜的時間,終於把機房收費系統基本完工了。這個過程中,因為有了學生系統做為鋪墊,所以做的時候還算得心應手吧。在其實也遇到了一引些問題,還是好解決的。這個系統到現在為止,也只能說是基本實現了功能,但是還很不健壯,而且漏洞我想還有很多,還有待進一步的除錯與完善。雖然在敲機房收費系統前,把命...
機房收費系統(三)
收費系統到今天已經完工了,有些小bug,基本的功能都已實現,這次做機房收費系統中,遇到了很多問題,包括技術上的,包括知識面上的。不怕不知道,就怕不知道。心態問題 在寫 的過程中或者是在畫圖的過程中,心態一定要放平,不要讓一些無所謂的爛七八糟的東西來打擾和影響你的學習。這次寫 中有的時候自己突然心血來...