【发布时间】:2022-06-14 04:30:00
【问题描述】:
我做了一些 Microsoft Access DAO 工作,通过语句在我的一个表 (tblEmpls) 中创建了一个 [FullName] 计算字段(cFld As Field2 对象),作为表中 [FirstName] 和 [LastName] 的串联: cFld.Expression = "[FirstName] & ' ' & [LastName]"。
然后我使用 cFld 对象上的 TableDef.Fields.Append 方法将其添加到表中。都很好。
现在,当我尝试通过 'Debug.Print "The FullName field is: " & cFld.Expression' 将该表达式打印到即时窗口时,即时窗口输出为: "计算字段为:[FirstName] & ' ' & [LastName]”,而不是我想要的“计算字段是:David Bailey”。
我想我需要一种在语法上“取消引用”我的 cFld.Expression 对象的方法,以便在 Access VBA 的即时窗口中打印它的值而不是它的名称?
顺便说一句,数据库中的字段按预期显示:[FirstName]:“David”:[LastName]:“Bailey”:和 [FullName]:“David Bailey”
问题:如何获得连接的 [FullName] 值,例如“David Bailey”以在立即窗口中打印,而不是字段名称构造:“[FirstName] & ' ' & [LastName]”?
TableDef 对象在表中创建了计算字段,但是是的,我需要一个 RecordSet 对象来迭代表的记录。显示此内容的最少代码集。
Sub AddCFld()
Dim db As Database
Dim tdef As TableDef
Dim rst As Recordset2
Dim fld As Field2
Dim strFldName As String
Set db = CurrentDb
strFldName = "FullName"
Set tdef = db.TableDefs("tblEmpls")
On Error Resume Next
Set fld = tdef.Fields(strFldName)
On Error GoTo 0
If Not fld Is Nothing Then
Debug.Print "Oops, the Calculated Field already exists: " & strFldName
Set fld = Nothing
Set tdef = Nothing
Exit Sub
End If
Set fld = tdef.CreateField(strFldName, dbText, 200)
fld.Expression = "[FirstName] & ' ' & [LastName]"
Debug.Print "The Calculated Field expression is: " & fld.Expression
tdef.Fields.Append fld
Set rst = db.OpenRecordset("tblEmpls")
Do While Not rst.EOF
Debug.Print "The Calculated Field value is: " & rst!FullName
rst.MoveNext
Loop
db.Close
Set fld = Nothing
Set tdef = Nothing
End Sub
立即窗口输出。
AddCFld
The Calculated Field expression is: [FirstName] & ' ' & [LastName]
The Calculated Field value is: Nancy Davolio
The Calculated Field value is: Andrew Fuller
The Calculated Field value is: Janet Leverling
The Calculated Field value is: Margaret Peacock
The Calculated Field value is: Steven Buchanan
The Calculated Field value is: Michael Suyama
The Calculated Field value is: Robert King
The Calculated Field value is: Laura Callahan
The Calculated Field value is: Anne Dodsworth
【问题讨论】: