Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

recordset.sort, похоже, некорректно работает.


Bless ©   (2006-05-03 18:06:00) 

Проверьте, кому не лень.
Есть таблица t, с единственным полем vnuk varchar(50) со значениями:
!!!<!!
!!!<!!!!
!!!<!-
!!!<!-!\

на форме есть компонент q: TАDODataset
q.commandtext:= 'select * from t'
ну и грид для "посмотреть".
Также есть кнопка с onclick-ом:

 q.Active := false;
 q.active := true;
 q.Sort := 'vnuk ASC';


После нажатия на кнопку поля сортируются в таком порядке:
!!!<!-
!!!<!!
!!!<!!!!
!!!<!-!\

что несколько отличается от того, что я ожидал и что выдает запрос select * from t order by vnukв query Analizer-е.

Может быть этому есть разумные объяснения помимо сабжа?
версия MDAC: 2.81.1117.0


Bless   (2006-05-04 13:03:00) [1]

За ссылку спасибо.
Еще б понять почему  recordset.sort не работает.


Zz_   (2006-05-04 12:00:00) [2]

http://support.microsoft.com/default.aspx?scid=kb;en-us;305704


Bless   (2006-05-04 09:33:00) [3]


> sniknik ©   (03.05.06 19:25) [2]


Странно, что у всех order by выдал тоже неправильный порядок. Я-то проверял на двух таблицах с collation для столбца:
SQL_Latin1_General_CP1251_CS_AS
SQL_Latin1_General_CP1251_CI_AS (по умолчанию)
и все было ОК.


> Anatoly Podgoretsky ©   (03.05.06 20:00) [3]


А почему 123-45-37б, 123-4567 и 12345678 - одно и то же?
И откуда вы все это знаете? Хотелось бы почитать.

Насколько я понял, recordset.sort не заработает, ведь там collation не укажешь :(


Johnmen   (2006-05-03 21:35:00) [4]

М-дя... Билл Гейтс совсем офанарел в своём мудрствовании, желая облегчить жизнь ослабленным программерам...:)))))


Anatoly Podgoretsky   (2006-05-03 20:00:00) [5]

Именно так, в большинстве collation символ - игнорируется, воспринимается как перенос или разделитель. Сделано для того что бы 123-45-37б 123-4567 и 12345678 были одинаковыми, а они и есть одинаковые. Если не устраивает то есть двоичная сортировка.


sniknik   (2006-05-03 19:25:00) [6]

похоже вмешивается "колатион", от него зависит будет ли CASE зависимость локализованных слов в сортировке и т.д. и похоже символы "-" "!" оно не воспринимает... для него в преодразованиях они один "вес" имеют...
проверить можно убрав его вообще (сделать бинарную сортировку)
select * from t order by vnuk COLLATE Cyrillic_General_BIN
должно измениться.


Johnmen   (2006-05-03 18:17:00) [7]

QA выдаёт в том же порядке.
А вот сам порядок необъясним...:)


Наверх

Титульная страница Поиск, карта сайта Написать письмо