![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 выдаёт в том же порядке.
А вот сам порядок необъясним...:)