我在kbmmemtable中的排序顺序遇到问题

时间:2019-09-12 17:41:26

标签: sorting delphi indexing

我有一个使用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之后,而不是之前。在不区分大小写的情况下,其工作原理相同。

1 个答案:

答案 0 :(得分:1)

这是因为语言环境设置定义了顺序。 尝试在索引定义中设置mtifoIgnoreLocale,或者设置提供正确排序顺序的语言环境。

然后它将进行简单的排序。

最好的问候 金/ C4D