MicrosoftAccess秘密技巧和陷阱
來源:程序員人生 發(fā)布時間:2014-01-23 15:55:03 閱讀次數(shù):2801次
不正確地調(diào)用Windows應(yīng)用程序接口可能會產(chǎn)生一些意想不到的副作用以及潛在地對一個應(yīng)用程序的代碼及數(shù)據(jù)段的破壞正確地使用一個空的位指針在MicrosoftAccess中是十分必要的
當(dāng)對表格和報表進(jìn)行操作時MicrosoftAccess有一個無正式文本的特性這個特性允許你從設(shè)計視窗性質(zhì)sheetwindow中進(jìn)行過程調(diào)用調(diào)用的方法是同時按下shift和F鍵
Microsoft AccessBasic提供了一個豐富的開發(fā)環(huán)境這個開發(fā)環(huán)境給你足夠的靈活性和對MicrosoftWindows應(yīng)用程序接口的控制同時保護(hù)你使你免遭用高級或低級語言開發(fā)環(huán)境開發(fā)時所碰到的各種麻煩不過許多優(yōu)化有效數(shù)據(jù)和模塊化方面只能是應(yīng)用程序設(shè)計者才能使用開發(fā)者應(yīng)致力于謹(jǐn)慎地使用算法除了一般的程序設(shè)計概念還有一些特別的存儲空間的管理技術(shù)正確使用這些技術(shù)可以提高應(yīng)用程序的執(zhí)行速度減少應(yīng)用程序所要好的存儲資源提高速度和減少代碼量
你可以用幾種技巧來提高你的編碼速度但是卻找不到有效的算法的替代者接下來的幾點(diǎn)建議可以提高你的編碼速度同時又減少你的應(yīng)用程序消耗的存儲空間
使用整形數(shù)據(jù)類型進(jìn)行數(shù)學(xué)運(yùn)算
即使MicrosoftAccess會使用一個聯(lián)合處理器來處理浮點(diǎn)型算術(shù)整型數(shù)算術(shù)也總是要快一些當(dāng)你的計算不含有小數(shù)盡量使用整型或長整型而不是變量或雙整型整型除法同樣也要比浮點(diǎn)除法要快在使用其他一些有效的數(shù)據(jù)類型時會警告沒有任何東西可以替換有效的運(yùn)算法則
避免使用過程調(diào)用
避免在循環(huán)體中使用子程序或函數(shù)調(diào)用每一次調(diào)用都因額外的工作和時間而給編碼增大了負(fù)擔(dān)每一次調(diào)用都要求把函數(shù)的局部變量和參數(shù)壓棧而棧的大小是固定的不能隨便加大并且同時還要于MicrosoftAccess共享
謹(jǐn)慎使用不定長數(shù)據(jù)類型
不定長數(shù)據(jù)類型提供了更大的靈活性比如說允許正確處理空值和自動處理溢出另外這種數(shù)據(jù)類型比傳統(tǒng)的數(shù)據(jù)類型要大并消耗更多的存儲空間前面還曾經(jīng)提到過不定長數(shù)據(jù)類型的變量在數(shù)學(xué)計算中比較慢
用變量存放經(jīng)常使用的屬性
對變量進(jìn)行查找和設(shè)置都比對屬性進(jìn)行這些操作要快如果你要得到或查閱一個屬性值許多次那么把這個屬性分配給一個變量并用這個變量來代替屬性那么你的代碼將要運(yùn)行快得多例如在一個循環(huán)中你查閱某表格中得一個控制的屬性那么在循環(huán)外把屬性分配給一個變量然后在循環(huán)中用查詢一個變量來代替查閱一個屬性的方法要比較快
預(yù)載表格
當(dāng)你的應(yīng)用程序啟動并且把它們的可見屬性設(shè)置位false時如果你安裝了你所有的表格那么你的應(yīng)用程序的性能會讓你感覺挺快當(dāng)你需要顯示一個表格時你只需要把該表格的可見屬性設(shè)置為true這要比安裝一個表格要快得多需要記住的是為你安裝的每個表格你都要從應(yīng)用程序的全局堆中消耗存儲空間
AccessBasic中的陷阱
在AccessBasic中經(jīng)常碰到的陷阱是對動態(tài)連接庫(DLLS)中的外部過程的調(diào)用當(dāng)你提供程序給你的用戶調(diào)用外部動態(tài)鏈接庫時將出現(xiàn)使用警告否則你將得到一條錯誤信息試圖用相同的函數(shù)定義安裝模塊
使用唯一的別名
在AccessBasic中如果你知道入口點(diǎn)(動態(tài)鏈接庫中函數(shù)的名字)你可以調(diào)用動態(tài)鏈接庫中的外部函數(shù)不過使用這一方法的限制性在于你只能聲明外部函數(shù)一次如果你安裝了調(diào)用了你的模塊調(diào)用的相同的Windows應(yīng)用程序接口你不會得到一個不為人所知的錯誤試圖用相同的函數(shù)定義安裝模塊
你嘗試安裝的模塊要么是包含有相同的函數(shù)名要么是包含在已存在的模塊中有的過程名刪除這些過程在EDIT菜單中使用FIND命令找到重復(fù)的過程名要解決這一問題你需要使用一種叫做別名使用的技術(shù)這種技術(shù)允許你給你的過程一個獨(dú)一無二的名字但是你選擇的別名也有可能不是獨(dú)一無二的所以要使你取的名字唯一你可以用初始值和下劃線優(yōu)先聲明你所有從動態(tài)鏈接庫中調(diào)用的過程比如聲明getActiveWindow為Declarebcb_GetActiveWindowLib Kernel Alias GetActiveWindow ()AsInteger如何傳遞一個空指針給動態(tài)鏈接庫一個空的位指針是有效的或是為一些動態(tài)鏈接庫要求具有參數(shù)要指定一個空值使用&當(dāng)你的函數(shù)調(diào)用一個過程并傳遞一個表達(dá)式&&指定一個位的空指針在函數(shù)聲明中一個ASANY參數(shù)指示AccessBasic對那個參數(shù)不進(jìn)行類型檢查同時把值傳遞到被調(diào)用的函數(shù)下面的編碼示范了一個正確的方法告訴你如何聲明一個給動態(tài)鏈接庫中的過程傳遞一個空指針參數(shù)的AccessBasic函數(shù)這段聲明了WriteProfileString應(yīng)用程序接口函數(shù)這個函數(shù)來自于外部Windows動態(tài)鏈接庫kernelDeclareFunctionWriteProfileString Lib Kernel (ByVallpApplicationNameAs Any ByVal lpKeyName As Any ByVal lpStringAsAny)接下來的函數(shù)調(diào)用了一個外部過程位每個參數(shù)指定一個空值這將使WriteProfileString充滿它的內(nèi)部
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈