MAV: вопросы

Обсуждение MAV Direct ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

Anonymous писал(а):
Andrew Myalin писал(а):
Alexander Ivanovsky писал(а): Андрей, начал работу по переводу нашей кадровой программы под SQL.
И вот всплыла еще одна проблема с сортировкой. Буква "Ё".
Человек с фамилией начинающейся на "Ё" стоит первым в списке :-)
Пофиксишь?
конЭчно, если уже не пофиксил, механизмы сортировки я вчера уже поменял, проверю.
Гуд! Будем ждать обновления для проверки :-)

пофиксил,теперь Ё идет после E
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

Andrew Myalin писал(а):
Anonymous писал(а):
Andrew Myalin писал(а): конЭчно, если уже не пофиксил, механизмы сортировки я вчера уже поменял, проверю.
Гуд! Будем ждать обновления для проверки :-)

пофиксил,теперь Ё идет после E
всё равно сортировка была неправильная , использовал для этого LOCALE с CLACOLSEQ AaBbCc...
но это оказалось фигнёй, строковые поля неправльно сортировались

для C6 вычитал что можно заюзать свою функцию сортировки, заюзал, вроде заработало, но при повторных пересортировках что то не срабатывало, клаша замучала со своей оптимизацией, вычислил как сбросить клашину оптимизацию, теперь для C6.x сортировка в Browse по строковым полям не чувствительна к регистру
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сортировкак в Browse Queue

Сообщение Andrew™ »

как уже известно SORT(Queue,Queue.Field) по строковым полям невозможно правильно отсортировать, чтобы получить нечувствительнуя к регистру сортировку, использование LOCALE с CLACOLSEQ решает проблему частично.

в C6 стало возможно заюзать свою функцию сортировки:
SORT(Queue,mySORT())

я так и сделал и всё вроде бы заработало, в своей функции простое побайтное сравнение, НО не всё так оказалось гладко, на CHARSET:CYRILLIC последовательнось символов в CHARMAP и в алфавите совпадает и потому данный алгоритм работает, но как выяснилось есть языки где присутсвует спец симолы - умляуты, обычно они находятся в конце CHARMAP, а вот в алфавите не в конце, т е нарушена последовательность нахождения символов в CHARMAP и в алфавите

например, для CHARSET:BALTIC мой алгоритм загоняет все записи, которые начинаются с умляутов в конец списка, что не есть хорошо, думаю и в других языках, где есть спец символы будет тажа проблема.

решение оказалось очень простым, для анализа какое строковое поле больше или меньше не нужны никакие побайтные сравнения, а необходимо для этих целей юзать WIN API функцию CompareString, использование которой очень простое, что и было реализовано в библиотеке.
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Читайте последние новости на сайте

Сообщение Andrew™ »

Ответить