|
![]() |
#1 |
Участник
|
Оказалось, что "исправление втихоря" в 4-ке было связано с переходом на Unicode. В общем, метод find() ищет строки, используя итератор и передавая ему ссылку на функцию сравнения записей; та же, в свою очередь, перво-наперво сравнивает коды компаний двух записей, а потом пробегается по полям, используемым для сортировки, и сравнивает их значения с помощью некой функции _DBICompare().
Данная функция предназначена для сравнения уникальных ключей, составленных из значений различных примитивных типов (строковые, BCD, целочисленные, даты, etc). В основном это используется, я так понял, на DataSource'ах, при переиндексации таблиц через DictTable.reindex() и xCompany.reindex(), а также в RecordSortedList, в UtilElements, возможно, и во временных таблицах. Так вот, при условии, что в текущей локали не используется какая-нить многобайтовая кодировка и база не инициализирована для использования Unicode'а, для строковых значений эта функция в 3-ке тупо использует функцию strncmp() со всеми вытекающими... В 4-ке же используется CompareStringW() из kernel32.dll с флагами NORM_IGNORECASE | NORM_IGNOREKANATYPE | NORM_IGNOREWIDTH, поэтому и работает все, как положено. Последний раз редактировалось gl00mie; 21.01.2009 в 03:28. |
|
|
За это сообщение автора поблагодарили: Logger (5), aidsua (1). |
![]() |
#2 |
Moderator
|
Цитата:
Пусть скажут свое слово "троешники"-SQL-серверщики! У них воспроизводится? |
|
![]() |
#3 |
Axapta
|
|
|
![]() |
#4 |
MCITP
|
![]() Цитата:
Это проблема самого СортЛиста.
__________________
Zhirenkov Vitaly |
|
![]() |
#5 |
Участник
|
Цитата:
Получается это может вылезти не только в RecordSortedList. |
|
Теги |
баг, ax3.0 |
|
![]() |
||||
Тема | Ответов | |||
RecordSortedList как проверить??? | 29 | |||
Как узнать по объекту RecordSortedList, из какой таблицы в нем записи? | 4 | |||
axStart: RecordSortedList | 0 |
|