Anydac TADTable 组件排序问题

Posted

技术标签:

【中文标题】Anydac TADTable 组件排序问题【英文标题】:Anydac TADTable component collation issue 【发布时间】:2016-11-23 18:22:14 【问题描述】:

我在对包含 ^ 和 ! 等特殊字符的字符串进行排序时遇到问题。在 Firebird 数据库中。

当使用具有以下设置的 TADTable 组件和使用排序规则 unicode_ci_ai 的表时

CachedUpdates := false;
FetchOptions.Unidirectional := false;
FetchOptions.CursorKind := ckAutomatic;
FetchOptions.Mode := fmOnDemand;
FormatOptions.SortOptions := [soNoCase];

服务器会将以 ^ 开头的字符串放在以 ! 开头的字符串之前,但 TADTable 则相反。当记录下来时,这会导致重复。

我正在寻找对带有特殊字符的字符串进行排序时的最佳做法。我必须使用 TADTable(旧系统)和 Live Data Window 模式来提高速度。

谢谢。

【问题讨论】:

【参考方案1】:

这很可能与具有不同默认字符编码的数据库连接有关。见Firebird Character Sets and Collations

【讨论】:

我确定这是一个排序规则问题。我在同步服务器和客户端排序规则时遇到问题。我已经阅读了您多次引用的网站并实施了它的建议,但无济于事。我想我正在寻找一些代码示例或更深入地了解这一切是如何工作的。

以上是关于Anydac TADTable 组件排序问题的主要内容,如果未能解决你的问题,请参考以下文章

AnyDAC (FireDAC) - 在 TBlobField.GetAsString 之后打开事务

AnyDac aka FireDac 无法生成更新查询

AnyDac - 如何断开与内存中的 sqlite db 的连接?

从 Anydac 移动到 Firedac 时 NULL 丢失

在 AutoInc 字段中将 AnyDAC 应用程序迁移到 FireDAC 失败

使用带有anydac(现在为firedac)脚本的参数获取错误