Сортировка в Zeos компонентах

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Сортировка в Zeos компонентах

Сообщение Climber »

Имеем на форме ZQuery, открытый, текст запроса примерно такой:
"select field1 as "Название поля по-русски", field2 as "Это поле тоже по-русски", ..."
Такой запрос хорош тем, что можно работать с русскими названиеями полей, и во всех показывающих компонентах они по-русски отображаются, да вы и сами все знаете...
Фигня начинается, когдя я пытаюсь сортировать. Пробовал 4 варианта:

Код: Выделить всё

// сортировка при щелчке по заголовку столбца, ColNum - номер столбца, соответственно
ZQClients.SortedFields:=ZQClients.Fields[ColNum-1].FieldName; // Текст ошибки: Field not found: "Р".
ZQClients.SortedFields:=UTF8ToSys(ZQClients.Fields[ColNum-1].FieldName); // Текст ошибки: Field not found: "Номер".
ZQClients.SortedFields:=AnsiQuotedStr(UTF8ToSys(ZQClients.Fields[ColNum-1].FieldName), ''''); // Текст ошибки: Field not found: "Номер договора".
ZQClients.SortedFields:=AnsiQuotedStr(UTF8ToSys(ZQClients.Fields[ColNum-1].FieldName), '"'); // Текст ошибки: Field not found: "Номер договора".

Последние две строки - это попытка брать поле в одинарные и двойные кавычки. Я так чувствую, я почти подобрался к решению, но фантазия иссякла... Никто не подскажет, в чем беда?

Lazarus 0.9.27, WinXP, zeos 6.6.5
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

ну дык посмотри что там в исходниках потом с SortedFields делается. может у него по умолчанию разделитель пробел и никак ему ты не поможешь.

ЗЫ попробуй альяс сделать на английском с пробелом будет себя вести также или нет.
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Сообщение grigoreo »

Ввиду того что руские буквы у нас в UTF8 а товарищи из Zeos пока до нее не добрались то имена рускоязычных полей надо передавать в двойных кавычках(у меня работало просто берешь имя поля добавляешь в начале и в конце по одной двойной кавычки без всяких преобразований)
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Сообщение Climber »

grigoreo писал(а):у меня работало просто берешь имя поля добавляешь в начале и в конце по одной двойной кавычки без всяких преобразований

Да, у меня тоже заработало, спасибо... Только мелочь одна выяснилась...
grigoreo писал(а):Ввиду того что руские буквы у нас в UTF8 а товарищи из Zeos пока до нее не добрались то ...
... то русские буквы сортируются неправильно... Сначала идет "Р", потом "Ц", потом "Б", короче бардак. Числа и даты сортируются правильно. Попробую баг-репорт написать...
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Сообщение grigoreo »

Climber писал(а):... то русские буквы сортируются неправильно... Сначала идет "Р", потом "Ц", потом "Б", короче бардак. Числа и даты сортируются правильно. Попробую баг-репорт написать...

И ты это видел )), я так понимаю там просто операция сравнения в цеосах криво пашет или не та функция берется то бишь она не понимает UTF8 я пробовал но пока откинул до лудших времен дет до сентября так что если решишь этот баг раньше напиши , несказано буду как рад

кстати ты в какой СУБД это ваяешь?
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Сообщение Climber »

Ваяю в постгресе. Но от СУБД тут ничего не зависит. Я пробовал смотреть их сортировку (зеоса, а не постгреса), но времени пока на это нет, а букаф многа. Попробую сначала разработчиков заставить.
Ответить