ACCESS數據庫中Field對象的caption屬性讀(dú)寫
本文章說(shuō)明如何用VBA讀寫該屬性。 可惜Field對(duì)象(xiàng)的CAPTION屬性並不是ADO原生對象(xiàng),而是“可由ADO訪問的ACCESS屬性”,在幫助文檔中介紹(shào)了兩(liǎng)種(zhǒng)訪問這個屬性的方法(fǎ),一種利用ADO,一種利用DAO,在這裏我直接說出結果,由於在ACCESS2003及以前的版本中(zhōng)Field對象並不是ACCESSObject對象,因而也就沒有AccessObjectProperties屬性,所(suǒ)以我們也就別想在ADO中(zhōng)去解決這個問題吧,現在給出DAO的代碼解決(jué)辦法
SubSetProperty(dbsTempAsDAO.Field,strNameAsString,_ booTempAsString) DimprpNewAsDAO.Property DimerrLoopAsError 'Attempttosetthespecifiedproperty.
OnErrorGoToErr_Property dbsTemp.Properties(strName)=booTemp OnErrorGoTo0 ExitSub Err_Property:
'Error3270meansthatthepropertywasnotfound. IfDBEngine.Errors(0).Number=3270Then
'Createproperty,setitsvalue,andappendittothe 'Propertiescollection.
SetprpNew=dbsTemp.CreateProperty(strName,_ dbText,booTemp)
dbsTemp.Properties.AppendprpNew ResumeNext Else
'Ifdifferenterrorhasoccurred,displaymessage. ForEacherrLoopInDBEngine.Errors
MsgBox"Errornumber:"&errLoop.Number&VBCr&_ errLoop.Description NexterrLoop End EndIf
EndSub SubDisplayClumCaption(ByValtbnameAsString,ByValfldIndexAsInteger)
DimdsetAsDAO.TableDef) //*****必須使用TableDef對象
DimiAsIntegerDimtmpPropAsDAO.Property //強製使用(yòng)DAO類型
DimfldAsDAO.Field //強製使用DAO類型DimtmpTxtAsString'OnErrorResumeNext
DimmsgAsStringDimcdbAsDAO.Database //*****強(qiáng)製使用DAO類型
Setcdb=CurrentDb //****關鍵,確定對當前數據庫的靜態引用
Setdset=cdb.TableDefs(tbname)//*****必須使用(yòng)TableDef對象
ForEachfldIndset.Fields tmpTxt=fld.Name SetPropertyfld,"Caption",tmpTxt msg=msg fld.Properties("Caption")
msg=msg Chr(10) Chr(13) Nextfld MsgBoxmsgEndSub
這裏代碼中有兩個SUB,一個是(shì)SetProperty,用來判斷一個字段是否有指定(dìng)的屬性(xìng),如果沒(méi)有設置,有就將相應的數值賦給該屬性,這段(duàn)代碼幾乎完全(quán)是照搬MS的幫助文檔。另一個是DisplayClumCaption,這是對指定表中的字段按字段(duàn)名設置其CAPTION屬性的演示代碼。如果有需要,大家可以對SetProperty進行修改,使他變成一(yī)個隻讀的函數,用來枚舉指定表中每個(gè)字段的CAPTION屬性。DisplayClumCaption代碼中,我打“星號”的地方是要重點注意的,因為我(wǒ)在這裏曾走(zǒu)過彎路,浪費了一個下午的(de)時間在MSDN中遊蕩(dàng)。
關鍵詞:ACCESS,數據庫
閱讀本文後您有什麽感想? 已有 人給出評價!
- 1
- 1
- 1
- 1
- 1
- 1