2015-11-05 74 views
1

我有一个组合框与行来源。显示时,它显示来自查询的项目列表。该查询有两列。当用户选择一些东西时,第一列存储在表中,但第二列显示(工作正常)。如何将MS-Access中的组合框添加区分大小写?

当您查看表单并查看一些现有数据时,它将显示来自查询(RowSource)的显示值,就像它应该一样。大部分时间都很好用。

挑战在于我的一个组合框处理区分大小写的键。错误的东西正在显示。

下面是一些人为的数据:

id value 
[a1] [Apples] 
[A1] [Oranges] 

下属表是这样的:

MyTable 
id: int 
...other fields... 
fruit_key: string 

fruit_key列包含 “A1”,我想看到苹果。当它包含“A1”时,我想看橘子。

发生了什么事情是我总是看到苹果,因为它正在做一个不区分大小写的匹配。

如何将此更改为区分大小写?

回答

0

除了使用kludgy解决方法,您不能。从How To Perform a Case-Sensitive JOIN Through Microsoft Jet

Microsoft Jet数据库引擎本质上不区分大小写。

而且没有办法改变这种情况。

在查询中的WHERE条件和JOIN中,可以使用二进制字符串compare:StrComp(Field1, Field2, 0) = 0

但是在这里,对于绑定的组合框,最好的选择是将fruit_key字符串转换为一个十六进制字符串(请参阅文章中的十六进制扩展)。

在组合框的行源中,您可以使用计算列,但在要使用组合框编辑的表中,除了fruit_key之外,您还必须实际存储十六进制字符串,因为您无法编辑一个计算列。

我不确定是否或如何在您的情况下使用二进制字段

所有的一切,你可能会被

  • “做不同”,让你不需要区分大小写的数据更好,或者不使用Jet作为后端
  • ,但一个服务器数据库,您可以在其中设置区分大小写的排序规则。