access数据库中field对象的caption属性(也就是标题)是用来设置数据字段的标题,在正常的数据库设计中为了保持维护的便利性,许多开发者都将字段名与标题做了分别设置,标题往往比字段名更友好,更能说明字段的用途。本篇从另一个角度来说明如何用vba读写该属性。
field对象的caption属性并不是ado原生对象,而是“可由ado访问的access属性”,在帮助文档中介绍了两种访问这个属性的方法,一种利用ado,一种利用dao,由于在access2003及以前的版本中field对象并不是accessobject对象,因而也就没有accessobjectproperties 属性,所以我们也就不能在ado中去解决这个问题,现在用另一种方式来解决dao的代码。
以下为引用的内容: sub setproperty(dbstemp as dao.field, strname as string, _ bootemp as string) dim prpnew as dao.property dim errloop as error ' attempt to set the specified property. on error goto err_property dbstemp.properties(strname) = bootemp on error goto 0 exit sub err_property: ' error 3270 means that the property was not found. if dbengine.errors(0).number = 3270 then ' create property, set its value, and append it to the ' properties collection. set prpnew = dbstemp.createproperty(strname, _ dbtext, bootemp) dbstemp.properties.append prpnew resume next else ' if different error has occurred, display message. for each errloop in dbengine.errors msgbox "error number: " & errloop.number & vbcr & _ errloop.description next errloop end end if end sub sub displayclumcaption(byval tbname as string, byval fldindex as integer) dim dset as dao.tabledef) //*****必须使用tabledef对象 dim i as integer dim tmpprop as dao.property //强制使用dao类型 dim fld as dao.field //强制使用dao类型 dim tmptxt as string 'on error resume next dim msg as string dim cdb as dao.database //*****强制使用dao类型 set cdb = currentdb //****关键,确定对当前数据库的静态引用 set dset = cdb.tabledefs(tbname)//*****必须使用tabledef对象 for each fld in dset.fields tmptxt = fld.name setproperty fld, "caption", tmptxt msg = msg + fld.properties("caption") msg = msg + chr(10) + chr(13) next fld msgbox msg end sub |
在以上部分的代码中有两个sub,一个是setproperty ,用来判断一个字段是否有指定的属性,如果没有设置,就将相应的数值赋给该属性。另一个是displayclumcaption,这是对指定表中的字段按字段名设置其caption属性的演示代码。如果有需要,大家可以对setproperty进行修改,使他变成一个只读的函数,用来枚举指定表中每个字段的caption属性。displayclumcaption代码中,打“星号”的地方是要重点注意的,不然可能会在msdn中多走弯路。
新闻热点
疑难解答