Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте. Задача отсортировать случайным образом отфильтрованную таблицу.На сколько мне известно можно сортировать по возрастанию или убыванию как нить так (+" 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2014, 09:32
Ответы с готовыми решениями:

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

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

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

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

5
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.02.2014, 10:07 2
А если конкретное поле записать вместо IndexFieldNames?
0
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
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
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
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
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
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
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
22.02.2014, 13:26 6
Нет такого понятия "сортировка случайным образом", сортировать можно только либо по возрастанию либо по убыванию. Чтобы сделать то, что тебе нужно - вводи еще одно поле, и заполняй его перемешанными значениями от 0 до кол-ва записей - 1, и упорядочивай его по возрастанию, тогда поле "счетчик" будет перемешано случайно...
0
22.02.2014, 13:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2014, 13:26
Помогаю со студенческими работами здесь

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

Случайная сортировка с использованием IComparer
Попытался реализовать "случайную" сортировку листа с помощью этого класса class Comparator :...

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

Не работает случайная сортировка товара 1с-битрикс
Здравствуйте! Помогите решить проблему: со случайной сортировки "RAND" в настройке компонента...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru