时 间:2008-7-24 8:10:31
作 者:Microsoft
摘 要:按区分大小写次序对记录排序
正 文:
Microsoft Office Access 2007 以升序或降序对记录排序时不考虑大小写。但是,通过编写几行 Visual Basic for Applications (VBA) 代码,即可按文本的 ASCII 字符值对文本排序。基于 ASCII 值排序可以将大写字母与小写字母区别开来,并产生区分大小写的次序。
下表演示了 Access 中的升序排序次序与区分大小写排序次序的差异:
排序前 | 升序次序 | 区分大小写次序 |
---|---|---|
c | a | A |
D | A | B |
a | B | C |
d | b | D |
B | c | a |
C | C | b |
A | D | c |
b | d | d |
尽管“升序次序”列中的结果可能最初出现在不可预测的某个位置,但它们并非如此。在“升序次序”列中,“a”出现在“A”之前,而“B”出现“b”之前。之所以这样,是因为在计算为文本值时,无论小写还是大写,“A”=“a”并且“B”=“b”。Access 在这里考虑了值的原始次序。在“排序前”列中,“a”位于“A”的前面,“B”位于“b”的前面。
执行区分大小写排序操作时,文本值被替换为它们的 ASCII 值。例如,A = 65,a = 97,B = 66,b = 98,等等。
Option Explicit
Function StrToHex (S As Variant) As Variant
'
' Converts a string to a series of hexadecimal digits.
' For example, StrToHex(Chr(9) & "A~") returns 09417E.
'
Dim Temp As String, I As Integer
If VarType(S) <> 8 Then
StrToHex = S
Else
Temp = ""
For I = 1 To Len(S)
Temp = Temp & Format(Hex(Asc(Mid(S, I, 1))), "00")
Next I
StrToHex = Temp
End If
End Function
可以从查询调用上述用户定义函数 StrToHex。将排序字段的名称传递给此函数时,它将按区分大小写的次序对字段值排序。
在“创建”选项卡上的“其他”组中,单击“查询设计”。
StrToHex 是在前面创建的用户定义函数。SortField 是包含区分大小写值的字段的名称。
如果选择升序次序,则以大写字母开头的值将出现在那些以小写字母开头的值之前。应用降序次序则以相反方式排序。
Access 将显示记录,这些记录以区分大小写的次序进行排序。
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |