Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
nnnikotinnn995
5 / 5 / 4
Регистрация: 07.07.2011
Сообщений: 383
1

Случайная сортировка отфильтрованной таблицы

21.02.2014, 09:32. Просмотров 880. Ответов 5
Метки нет (Все метки)

Здравствуйте. Задача отсортировать случайным образом отфильтрованную таблицу.На сколько мне известно можно сортировать по возрастанию или убыванию как нить так (+" ASC",// +" DESC")
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::DBGrid1TitleClick(TColumn *Column)
{
ADOTable1->Sort=Column->FieldName+" ASC";
//  ADOTable1->Sort=Column->FieldName+ " DESC";
 
}  
//    или так (но только ошибка всплывает при выполнение программы, надо наверно что то  дописать)
void __fastcall TForm1::Button7Click(TObject *Sender)
{
     ADOTable1->IndexFieldNames="счетчик";
ADOTable1->Sort= ADOTable1->IndexFieldNames+"ASC";
 // ADOTable1->Sort= ADOTable1->IndexFieldNames+"DESC";
}
Подскажите пожалуйста, как можно случайным образом сортировать по данному столбцу (ADOTable1->IndexFieldNames="счетчик";)? Существуют ли какие то случайные "присоединители" типа +" ASC",// +" DESC"?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2014, 09:32
Ответы с готовыми решениями:

Сортировка поля таблицы по какому либо значению
Можно ли отсортировать поля таблицы по какому либо значению с помощью...

Сортировка ADOTable по дате. Выборка из таблицы по дате
Доброго вечера! Пытался решить проблему сам - не получилось. Тезисно: имеется...

Случайное значение из отфильтрованной таблицы
Есть табличка (например, для теста сделал футболистов). Я случайным образом...

Копирование значений отфильтрованной таблицы
Доброго дня. Нужен следующий макрос - На листе (1) отфильтровывается таблица...

Перенос данных из отфильтрованной таблицы на другой лист
Есть большая таблица классификатор материалов с 6 и более параметрами в строке....

5
Sasha
4923 / 2387 / 530
Регистрация: 05.06.2008
Сообщений: 7,477
Записей в блоге: 3
21.02.2014, 10:07 2
А если конкретное поле записать вместо IndexFieldNames?
0
nnnikotinnn995
5 / 5 / 4
Регистрация: 07.07.2011
Сообщений: 383
21.02.2014, 14:05  [ТС] 3
Цитата Сообщение от Sasha Посмотреть сообщение
А если конкретное поле записать вместо IndexFieldNames?
Вы имеете ввиду
C++ (Qt)
1
ADOTable1->Sort= ADOTable1->FieldByName("счетчик")->AsString+"DESC";
?
Так же выдает ошибку "В коллекции не удается найти элемент соответствующий требуемому имени или порядковому номеру". По идее тут есть тема Выборка 100 случайных строк из таблицы, но там идет выборка 100 (а не установленное фильтрацией количество) случайных строк, а во вторых обязательно ли все так усложнять, можно ли обойтись без ADOQuery1?

Добавлено через 5 минут
Можно ли сделать что-то типа "+"RND(Column->FieldName) ""?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26095 / 17497 / 6941
Регистрация: 22.10.2011
Сообщений: 30,815
Записей в блоге: 6
21.02.2014, 14:36 4
Лучший ответ Сообщение было отмечено Sasha как решение

Решение

Случайное направление по заданному столбцу:
C++
1
ADOTable1->Sort = String("счетчик ") + (Random(2) ? " ASC" : "DESC");
Сортировка по возрастанию по случайному столбцу:
C++
1
2
ADOTable1->Sort = ADOTable1->Fields->operator[]
    (Random(ADOTable1->Fields->Count))->FieldName + " ASC";
1
nnnikotinnn995
5 / 5 / 4
Регистрация: 07.07.2011
Сообщений: 383
22.02.2014, 13:17  [ТС] 5
Цитата Сообщение от UI Посмотреть сообщение
Случайное направление по заданному столбцу:
Код C++
1
ADOTable1->Sort = String("счетчик ") + (Random(2) ? " ASC" : "DESC");
Сортировка по возрастанию по случайному столбцу:
Код C++
1
2
ADOTable1->Sort = ADOTable1->Fields->operator[]
(Random(ADOTable1->Fields->Count))->FieldName + " ASC";
Спасибо. Только у меня синтаксическую ошибку выдает если писать Random, работает если писать random.
И метод
C++ (Qt)
1
ADOTable1->Sort = String("счетчик ") + (random(2) ? " ASC" : "DESC");
иногда при выполнение выдает ошибку "В коллекции не удается найти элемент соответствующий требуемому имени или порядковому номеру", и не выдает ошибку если ADOTable1->Sort = String("счетчик ") ;. Судя по моим тестам эта ошибка возникает тогда, когда (random(2) ? " ASC" : "DESC") выбирает убывание ( "DESC").
Но мне хотелось бы управлять процессом сортировки по данному столбцу, то есть если это числовое поле , то в при первом запуске random мы получим например порядок
1,2,5,4,3
,при втором
5,2,4,3,1
при третьем
3,2,5,4,1
...
То есть не по возрастанию и убыванию, а случайным образом. Как вы думаете, это возможно?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26095 / 17497 / 6941
Регистрация: 22.10.2011
Сообщений: 30,815
Записей в блоге: 6
22.02.2014, 13:26 6
Нет такого понятия "сортировка случайным образом", сортировать можно только либо по возрастанию либо по убыванию. Чтобы сделать то, что тебе нужно - вводи еще одно поле, и заполняй его перемешанными значениями от 0 до кол-ва записей - 1, и упорядочивай его по возрастанию, тогда поле "счетчик" будет перемешано случайно...
0
22.02.2014, 13:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2014, 13:26

случайная сортировка
как в C# случайно отсортировать массив?

Случайная сортировка постов
как сделать? хочу сделать как на http://webdiscover.ru/ пожалуйста помогите ...

Случайная сортировка html блоков
Добрый день! Есть несколько html-блоков типа: <table>текст1</table>...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru