ACCESS數(shù)據(jù)庫(kù)中Field對(duì)象的caption屬性(也就是標(biāo)題)屬性是用來(lái)設(shè)置數(shù)據(jù)字段的標(biāo)題的,在正常的數(shù)據(jù)庫(kù)設(shè)計(jì)中為了保持維護(hù)的便利性,許多開發(fā)者都將字段名與標(biāo)題做了分別設(shè)置,標(biāo)題往往比字段名更友好,更能說(shuō)明字段的用途。本文章說(shuō)明如何用VBA讀寫該屬性。
可惜Field對(duì)象的CAPTION屬性并不是ADO原生對(duì)象,而是“可由ADO訪問(wèn)的ACCESS屬性”,在幫助文檔中介紹了兩種訪問(wèn)這個(gè)屬性的方法,一種利用ADO,一種利用DAO,在這里我直接說(shuō)出結(jié)果,由于在ACCESS2003及以前的版本中Field對(duì)象并不是ACCESSObject對(duì)象,因而也就沒有AccessObjectProperties 屬性,所以我們也就別想在ADO中去解決這個(gè)問(wèn)題吧,現(xiàn)在給出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對(duì)象
Dim i As Integer
Dim tmpProp As DAO.Property //強(qiáng)制使用DAO類型
Dim fld As DAO.Field //強(qiáng)制使用DAO類型
Dim tmpTxt As String
'On Error Resume Next
Dim msg As String
Dim cdb As DAO.Database //*****強(qiáng)制使用DAO類型
Set cdb = CurrentDb //****關(guān)鍵,確定對(duì)當(dāng)前數(shù)據(jù)庫(kù)的靜態(tài)引用
Set dset = cdb.TableDefs(tbname)//*****必須使用TableDef對(duì)象
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
這里代碼中有兩個(gè)SUB,一個(gè)是SetProperty ,用來(lái)判斷一個(gè)字段是否有指定的屬性,如果沒有設(shè)置,有就將相應(yīng)的數(shù)值賦給該屬性,這段代碼幾乎完全是照搬MS的幫助文檔。另一個(gè)是DisplayClumCaption,這是對(duì)指定表中的字段按字段名設(shè)置其CAPTION屬性的演示代碼。如果有需要,大家可以對(duì)SetProperty進(jìn)行修改,使他變成一個(gè)只讀的函數(shù),用來(lái)枚舉指定表中每個(gè)字段的CAPTION屬性。DisplayClumCaption代碼中,我打“星號(hào)”的地方是要重點(diǎn)注意的,因?yàn)槲以谶@里曾走過(guò)彎路,浪費(fèi)了一個(gè)下午的時(shí)間在MSDN中游蕩。
聯(lián)系客服