Vba 如何为Microsoft Access字段设计验证规则,将输入限制为特定Unicode范围内的字符?
假设我需要将一个字段限制为范围(U+A960–U+A97f)中的1个字符,我如何将字符的代码与范围进行比较?写入时,我对该范围内的字符的验证失败:Vba 如何为Microsoft Access字段设计验证规则,将输入限制为特定Unicode范围内的字符?,vba,validation,ms-access,unicode,expression,Vba,Validation,Ms Access,Unicode,Expression,假设我需要将一个字段限制为范围(U+A960–U+A97f)中的1个字符,我如何将字符的代码与范围进行比较?写入时,我对该范围内的字符的验证失败: Len([C])=1 And AscW([C]) Between 43360 And 43391 虽然这个不起作用的示例看起来很简单,但我可能不得不用更复杂的表达式替换[C],因此AscW与Between运算符的简单性便于避免重复[C]AscW返回带符号的16位整数,因此Between表达式将始终返回False,因为所比较的整数超出该类型的范围(-
Len([C])=1 And AscW([C]) Between 43360 And 43391
虽然这个不起作用的示例看起来很简单,但我可能不得不用更复杂的表达式替换
[C]
,因此AscW
与Between
运算符的简单性便于避免重复[C]
AscW
返回带符号的16位整数,因此Between
表达式将始终返回False
,因为所比较的整数超出该类型的范围(-32768到32767)。使用大于32767的任何值的最大值。在您的情况下,43360
变成-22176
,43391
变成-22145
Len([C])=1 And AscW([C]) Between -22176 And -22145
当
[C]=”ꥼ"
,AscW([C])
将返回-22148
,这将导致整个表达式的计算结果为True
,在创建字段验证规则时无需使用字符号。只需通过指定上限和下限来测试字符是否在所需范围内:
Len([C])=1 And [C] Between "ꥠ" And "ꥼ"
请注意,这使用数据库排序顺序,因此您希望确保将其设置为适当的排序顺序,而不是常规(遗留)排序顺序,这可能会导致unicode字符出现问题