我有一个带有RowSource的组合框。当它显示时,它会显示来自查询的项目列表。查询有两列。当用户选择某个内容时,第一列存储在表中,但第二列会显示(工作正常)。
当您来到表单并查看一些现有数据时,它会显示查询(RowSource)的显示值,就像它应该显示的那样。大多数时候效果都很好。
挑战在于,我的一个组合框处理区分大小写的键。展示的东西不对。
以下是一些人为的数据:
id value
[a1] [Apples]
[A1] [Oranges]
下面的表格是这样的:
MyTable
id: int
...other fields...
fruit_key: string
当fruit_key
列包含"a1"时,我希望看到Apples。当它包含"A1"时,我想看《橘子》。
现在的情况是,我总是看到Apples,因为它在进行不区分大小写的匹配。
如何将其更改为区分大小写?
你不能,除非有笨拙的解决方法。从如何通过Microsoft Jet执行区分大小写的JOIN:
Microsoft Jet数据库引擎本质上是不区分大小写的。
没有办法改变这一点。
在查询中的WHERE条件和JOIN中,可以使用二进制字符串compare:StrComp(Field1, Field2, 0) = 0
。
但在这里,使用绑定的combobox,您的最佳选择是将fruit_key
字符串转换为例如十六进制字符串(请参阅文章中的十六进制扩展)。
在组合框的行源中,您可以使用计算列,但在要使用组合框编辑的表中,除了fruit_key
之外,您还必须实际存储十六进制字符串,因为您无法编辑计算列。
我不确定二进制字段方法是否或如何在您的情况下工作。
总而言之,可能会让你过得更好
- "采取不同的做法",这样您就不需要区分大小写的数据,或者
- 不使用Jet作为后端,而是使用服务器数据库,您可以在其中设置区分大小写的排序规则