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 - 如何断开与内存中的 sqlite db 的连接?
从 Anydac 移动到 Firedac 时 NULL 丢失