ADODB.Recordset を使用したメモリソート

Rs.Sort = "ソートキー,ソートデータ DESC"

VBScript だけではソートができないので、ADODB.Recordset を使用しています。ここでは、二つのフィールドを使って( SQL の構文で ) ソートしています。
01.' Null で終了する Unicode 文字列を示します (DBTYPE_WSTR)。
02.Const adWChar = 130
03. 
04.Dim Rs
05.Dim strResult
06. 
07.Set Rs = CreateObject("ADODB.Recordset")
08.Rs.Fields.Append "ソートキー", adWChar,128
09.Rs.Fields.Append "ソートデータ", adWChar,128
10.Rs.Open
11. 
12.Rs.AddNew
13.Rs.Fields("ソートキー").value = "C"
14.Rs.Fields("ソートデータ").value = "山田1"
15. 
16.Rs.AddNew
17.Rs.Fields("ソートキー").value = "C"
18.Rs.Fields("ソートデータ").value = "山田2"
19. 
20.Rs.AddNew
21.Rs.Fields("ソートキー").value = "A"
22.Rs.Fields("ソートデータ").value = "田中"
23. 
24.Rs.AddNew
25.Rs.Fields("ソートキー").value = "B"
26.Rs.Fields("ソートデータ").value = "鈴木"
27. 
28. 
29.' ****************************
30.' 順ソート + 逆ソート
31.' ****************************
32.Rs.Sort = "ソートキー,ソートデータ DESC"
33. 
34.' ****************************
35.' 先頭に移動
36.' ****************************
37.Rs.MoveFirst
38. 
39.strResult = ""
40.Do while not Rs.EOF
41. 
42.        strResult = strResult & Rs.Fields("ソートキー").Value & " : "
43.        strResult = strResult & Rs.Fields("ソートデータ").Value & vbCrLf
44. 
45.        Rs.MoveNext
46. 
47.Loop
48. 
49.' ****************************
50.' 順ソート結果を表示
51.' ****************************
52.Wscript.Echo strResult
53. 
54.' ****************************
55.' 逆ソート + 順ソート
56.' ****************************
57.Rs.Sort = "ソートキー DESC,ソートデータ"
58. 
59.' ****************************
60.' 先頭に移動
61.' ****************************
62.Rs.MoveFirst
63. 
64.strResult = ""
65.Do while not Rs.EOF
66. 
67.        strResult = strResult & Rs.Fields("ソートキー").Value & " : "
68.        strResult = strResult & Rs.Fields("ソートデータ").Value & vbCrLf
69. 
70.        Rs.MoveNext
71. 
72.Loop
73. 
74.' ****************************
75.' 逆ソート結果を表示
76.' ****************************
77.Wscript.Echo strResult
78. 
79.Rs.Close