我有一个使用kbmMemTable 7.82表的Delphi 10.1 Berlin应用程序。它在两个字段上建立索引:姓和名。
我的问题是遇到撇号时,顺序是错误的。其他角色也可能发生这种情况,但我尚未对其进行广泛的测试。
有人知道什么可能是错的吗?任何帮助将不胜感激。
我已经在Delphi 7和Delphi 10.1 Berlin上进行了尝试,并获得了相同的结果。我试过让索引区分大小写和不区分大小写。在所有四种情况下,我都得到相同的结果。我还尝试通过程序和通过对象检查器创建索引。
这是我以编程方式创建索引的一般形式:
Table.Open;
IndexDef := Table.IndexDefs.AddIndexDef;
IndexDef.Name := IndexByName;
IndexDef.Fields := 'lastname;firstname';
IndexDef.Options := [ixCaseInsensitive];
Table.Indexes.Add(IndexDef);
Table.IndexName := IndexByName;
Table.IndexFieldNames := 'lastname;firstname';
Table.CreateIndexes;
Table.EnableIndexes := True;
Table.First;
索引将O'HARA放在OLSON之后,而不是之前。在不区分大小写的情况下,其工作原理相同。
答案 0 :(得分:1)
这是因为语言环境设置定义了顺序。 尝试在索引定义中设置mtifoIgnoreLocale,或者设置提供正确排序顺序的语言环境。
然后它将进行简单的排序。
最好的问候 金/ C4D