我有以下代码,它实际上使用Transpose和Recordset .GetRows将记录集的第一个字段加载到我的 Emp ID 组合框中。
If m_adoStaffRS.RecordCount > 0 Then
With m_adoStaffRS
.MoveFirst
cboEmpID.Clear
cboEmpID.List = Application.WorksheetFunction.Transpose(.GetRows)
'
.MoveFirst
'
' TROUBLE HERE >>>
cboNameSelect.List = Application.WorksheetFunction.Transpose(.GetRows(Fields = .Fields("FirstName").Value & " " & .Fields("LastName").Value))
'
End With
m_lnRecordID = 0
cboEmpID.ListIndex = 0
End If
现在我想添加另一个搜索组合框,以便让不知道EMp ID的用户按名称进行搜索。
所以我想从记录集添加firlds FirstName,LastName ,但它不起作用。
这是我在上面的代码中尝试的内容:
cboNameSelect.List = Application.WorksheetFunction.Transpose(.GetRows(Fields = .Fields("FirstName").Value & " " & .Fields("LastName").Value))
我做错了什么?
菲利普
答案 0 :(得分:1)
您作为字段参数传递给 GetRows()的值是错误的。根据MSDN doc:
字段
此可选参数是Variant,它指定单个字段名称或序号位置或字段名称或序号位置编号的数组。 ADO仅返回这些字段中的数据。
因此,必须传递两个元素的数组才能获得两个字段。这个代码是:
With m_adoStaffRS
.MoveFirst
Dim FullNames As Variant
Dim FieldsToSelect(0 To 1) As Variant
Dim i As Long
FieldsToSelect(0) = "FirstName"
FieldsToSelect(1) = "LastName"
FullNames = .GetRows(Fields := FieldsToSelect)
' Now fill combo-box using desired format
cboNameSelect.Clear
For i = LBound(FullNames) To UBound(FullNames)
cboNameSelect.AddItem FullNames(0, i) & " " & FullNames(1, i)
Next i
End With
作为旁注。在查询数据源时,通常需要更早地进行所需的连接(FirstName& LastName)。