如何在MS Access中为组合框添加区分大小写功能



我有一个带有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作为后端,而是使用服务器数据库,您可以在其中设置区分大小写的排序规则