红色部分关键点阐述:
如果用.Fields.Append RstFiledsName(ii), adVariant, , adFldMayBeNull
-程序不通过,提示“属性的使用无效”换成adBString也同样提示
.Fields.Append RstFiledsName(ii),adInteger, , adFldMayBeNull --程序通过,可是只能排序integer(double)
只有adChar, 20,才能通过字符串排序。
请遇到此问题注意这一要点。Function CreatSelectionHeading(RstFiledsName As Variant) As ADODB.Recordset
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
'For ii = 0 To UBound(RstFiledsName)
With rst
.Fields.Append RstFiledsName(0), adChar, 20, adFldIsNullable
.Fields.Append RstFiledsName(1), adBSTR, , adFldMayBeNull
End With
'Next ii
Set CreatSelectionHeading = rst
End FunctionSub lsls()
Dim rst As ADODB.Recordset
nn = Array("a1", "a2")
Set rst = CreatSelectionHeading(nn)
With rst
.Open
.AddNew
.Fields(0) = "aaa1"
.Sort = "a1 asc"
End With
End Sub
如果用.Fields.Append RstFiledsName(ii), adVariant, , adFldMayBeNull
-程序不通过,提示“属性的使用无效”换成adBString也同样提示
.Fields.Append RstFiledsName(ii),adInteger, , adFldMayBeNull --程序通过,可是只能排序integer(double)
只有adChar, 20,才能通过字符串排序。
请遇到此问题注意这一要点。Function CreatSelectionHeading(RstFiledsName As Variant) As ADODB.Recordset
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
'For ii = 0 To UBound(RstFiledsName)
With rst
.Fields.Append RstFiledsName(0), adChar, 20, adFldIsNullable
.Fields.Append RstFiledsName(1), adBSTR, , adFldMayBeNull
End With
'Next ii
Set CreatSelectionHeading = rst
End FunctionSub lsls()
Dim rst As ADODB.Recordset
nn = Array("a1", "a2")
Set rst = CreatSelectionHeading(nn)
With rst
.Open
.AddNew
.Fields(0) = "aaa1"
.Sort = "a1 asc"
End With
End Sub
原数组:
10 5 13 24
3 55 43 2
30 51 113 21
按第1列排序结果
3 55 43 2
10 5 13 24
30 51 113 21
按第2列排序结果
10 5 13 24
30 51 113 21
3 55 43 2
按第3列排序结果
10 5 13 24
3