powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выстроить по возрастающей
7 сообщений из 7, страница 1 из 1
Выстроить по возрастающей
    #37306226
alexzima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хай всем!
Задача: имею таблицу с одной строкой (все поля numeric(4,0)) 25 47 138 14 987 1258 1 59 97 3 49
Необходимо выстроить все чмсла по возрастающей, т.е. 1 3 14 25 47 49 59 138 987 1258
...
Рейтинг: 0 / 0
Выстроить по возрастающей
    #37306227
alexzima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточнение: каждое число в отдельном поле...
...
Рейтинг: 0 / 0
Выстроить по возрастающей
    #37306303
Banditos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Выстроить по возрастающей
    #37306397
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пусть в этой строке поля для сортировки начинаются с третьего.
Пусть в этой строке все сортируемые поля идут подряд, и их 15 штук.
Тогда делаем так:
Код: plaintext
1.
2.
scatter to aTemp
=ASort(aTemp, 3 , 15 )
gather from aTemp
...
Рейтинг: 0 / 0
Выстроить по возрастающей
    #37306481
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexzima,
Есть немало методов сортировки "вручную".
Однако, нужно использовать встроенные в ФоксПро возможности.
Я не проверял работу предыдущего поста, если работает,- то решение замечательное.
А пока что я написал другой вариант, основанный на SQL-сортировке.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
* курсор для промежуточных данных

create cursor cur1 (field0 i)

* основная таблица(курсор)

create cursor table1 (f1 i, f2 i, f3 i, f4 i, f5 i)

INSERT INTO table1 (f1, f2, f3, f4, f5 );
   VALUES ( 20 ,  10 ,  30 ,  15 ,  40 )

* переписываем "горизонтальные" данные "вертикально"

for i =  1  to fcount()
select table1
num1 = field(i)
num2 = eval(num1)
select cur1
append blank
repl field0 with num2
endfor

* сортируем данные по возрастанию

select * from cur1 ;
into cursor cur2 ;
order by  1 

go top

* переписываем в исходную таблицу (курсор)

for i1 =  1  to recc()
select cur2
go i1
num1 = cur2.field0
select table1
name1 = field(i1)
repl &name1 with num1
endfor

* смотрим, что получилось

select table1
browse

Если подумать, то этот код можно сократить, упростить, чего и желаю
...
Рейтинг: 0 / 0
Выстроить по возрастающей
    #37306591
alexzima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
igorbik Игорь, спасибо, взял за основу, буду пилить дальше :)
...
Рейтинг: 0 / 0
Выстроить по возрастающей
    #37317598
gotko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexzima,

если нужно способом фокса, то читай хелп по asort()
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выстроить по возрастающей
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]