ACCESS數(shù)據(jù)庫(kù)中Field對(duì)象的caption屬性讀寫
來源:程序員人生 發(fā)布時(shí)間:2013-12-11 05:30:20 閱讀次數(shù):3777次
本文章說明如何用VBA讀寫該屬性可惜Field對(duì)象的CAPTION屬性并不是ADO原生對(duì)象而是可由ADO訪問的ACCESS屬性在幫助文檔中介紹了兩種訪問這個(gè)屬性的方法一種利用ADO一種利用DAO在這里我直接說出結(jié)果由于在ACCESS及以前的版本中Field對(duì)象并不是ACCESSObject對(duì)象因而也就沒有AccessObjectProperties屬性所以我們也就別想在ADO中去解決這個(gè)問題吧現(xiàn)在給出DAO的代碼解決辦法
SubSetProperty(dbsTempAsDAOFieldstrNameAsString_ booTempAsString) DimprpNewAsDAOProperty DimerrLoopAsError Attempttosetthespecifiedproperty
OnErrorGoToErr_Property dbsTempProperties(strName)=booTemp OnErrorGoTo ExitSub Err_Property:
Errormeansthatthepropertywasnotfound IfDBEngineErrors()Number=Then
Createpropertysetitsvalueandappendittothe Propertiescollection
SetprpNew=dbsTempCreateProperty(strName_ dbTextbooTemp)
dbsTempPropertiesAppendprpNew ResumeNext Else
Ifdifferenterrorhasoccurreddisplaymessage ForEacherrLoopInDBEngineErrors
MsgBoxErrornumber:&errLoopNumber&VBCr&_ errLoopDescription NexterrLoop End EndIf
EndSub SubDisplayClumCaption(ByValtbnameAsStringByValfldIndexAsInteger)
DimdsetAsDAOTableDef) //*****必須使用TableDef對(duì)象
DimiAsIntegerDimtmpPropAsDAOProperty //強(qiáng)制使用DAO類型
DimfldAsDAOField //強(qiáng)制使用DAO類型DimtmpTxtAsStringOnErrorResumeNext
DimmsgAsStringDimcdbAsDAODatabase //*****強(qiáng)制使用DAO類型
Setcdb=CurrentDb //****關(guān)鍵確定對(duì)當(dāng)前數(shù)據(jù)庫(kù)的靜態(tài)引用
Setdset=cdbTableDefs(tbname)//*****必須使用TableDef對(duì)象
ForEachfldIndsetFields tmpTxt=fldName SetPropertyfldCaptiontmpTxt msg=msg fldProperties(Caption)
msg=msg Chr() Chr() Nextfld MsgBoxmsgEndSub
這里代碼中有兩個(gè)SUB一個(gè)是SetProperty用來判斷一個(gè)字段是否有指定的屬性如果沒有設(shè)置有就將相應(yīng)的數(shù)值賦給該屬性這段代碼幾乎完全是照搬MS的幫助文檔另一個(gè)是DisplayClumCaption這是對(duì)指定表中的字段按字段名設(shè)置其CAPTION屬性的演示代碼如果有需要大家可以對(duì)SetProperty進(jìn)行修改使他變成一個(gè)只讀的函數(shù)用來枚舉指定表中每個(gè)字段的CAPTION屬性 DisplayClumCaption代碼中我打星號(hào)的地方是要重點(diǎn)注意的因?yàn)槲以谶@里曾走過彎路浪費(fèi)了一個(gè)下午的時(shí)間在MSDN中游蕩
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)