Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выстроить по возрастающей / 7 сообщений из 7, страница 1 из 1
13.06.2011, 07:47
    #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
13.06.2011, 07:49
    #37306227
alexzima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выстроить по возрастающей
Уточнение: каждое число в отдельном поле...
...
Рейтинг: 0 / 0
13.06.2011, 11:08
    #37306303
Banditos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выстроить по возрастающей
...
Рейтинг: 0 / 0
13.06.2011, 13:08
    #37306397
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выстроить по возрастающей
Пусть в этой строке поля для сортировки начинаются с третьего.
Пусть в этой строке все сортируемые поля идут подряд, и их 15 штук.
Тогда делаем так:
Код: plaintext
1.
2.
scatter to aTemp
=ASort(aTemp, 3 , 15 )
gather from aTemp
...
Рейтинг: 0 / 0
13.06.2011, 14:16
    #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
13.06.2011, 15:23
    #37306591
alexzima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выстроить по возрастающей
igorbik Игорь, спасибо, взял за основу, буду пилить дальше :)
...
Рейтинг: 0 / 0
21.06.2011, 12:19
    #37317598
gotko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выстроить по возрастающей
alexzima,

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


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