这篇文章解释了如何用VBA读写这个属性。遗憾的是,Field对象的CAPTION属性不是ADO原生对象,而是一个“ADO可访问的access属性”。在帮助文档中,介绍了访问该属性的两种方法,一种是使用ADO,
一种是使用DAO,在这里我直接说出结果。因为Field对象不是ACCESS2003和早期版本中的ACCESSObject对象,所以没有AccessObjectProperties属性。
所以我们先不要试图用ADO来解决这个问题,现在给出DAO的代码解决方案。
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.NumberVBCr_ errLoop.Description NexterrLoop End EndIf
EndSub SubDisplayClumCaption(ByValtbnameAsString,ByValfldIndexAsInteger)
DimdsetAsDAO .TableDef) //*****必须使用TableDef对象
DimiAsIntegerDimtmpPropAsDAO .属性//strong制使用数据访问对象(数据访问对象)类型
DimfldAsDAO .Field //strong制使用数据访问对象(数据访问对象)类型DimtmpTxtAsString ' onerrorresumenext
DimmsgAsStringDimcdbAsDAO。数据库//***** Erzwingen des DAO-Typs
设置CDB=当前数据库//* * *键来确定对当前数据库的静态引用。
Setdset=cdb .TableDefs(tbname)//*****必须使用TableDef对象
ForEachfldIndset.Fields tmpTxt=fld.Name SetPropertyfld,'Caption',tmpTxt msg=msg fld.Properties('Caption')
msg=msg Chr(10) Chr(13) Nextfld MsgBoxmsgEndSub
这里的代码中有两个子项,一个是SetProperty,用来判断一个字段是否有指定的属性。如果没有设置,相应的值将被赋给该属性。这段代码几乎完全复制了MS的帮助文档。
另一个是DisplayClumCaption,是根据字段名设置指定表中字段的Caption属性的演示代码。如有必要,可以修改SetProperty,使其成为只读函数。
用于枚举指定表中每个字段的标题属性。在DisplayClumCaption代码中,我要注意我标记“星号”的地方,因为我在这里走了弯路,浪费了一个下午在MSDN闲逛。