CftClub.ru
Клуб специалистов ЦФТ-Банк

Сортировка данных в масииве

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих
Предыдущая тема :: Следующая тема  
Автор Сообщение
abdzhnr
Участник


Вступление в Клуб: 01.06.2020
СообщениеПн Июн 08, 2020 12:36   Сортировка данных в масииве Ответить с цитатой
Полезность: Нет оценки
Добрый день,

loop
vd_MySysdate := vd_MySysdate - 1;
vcIndex := null;
vcIndex := to_char(vd_MySysdate,'ddmmyyyy');
if not myTab.exists(vcIndex) then
myTab(vcIndex).vdData := vd_MySysdate;
myTab(vcIndex).inOst := 0;
myTab(vcIndex).outOst := 0;
end if;
end loop;

В этот массив данные попадают за 01.06.2020, 30.05.2020 и 31.05.2020
и когда вызываю myTab.first, то получаю '01062020'. Данные попали туда так что сначала записались за 01.06.2020. Мне надо получить myTab.first ='30052020'. Скорее всего требуется сортировка по дате, подскажите пожалуйста с примером как отсортировать?
Blackmore64
Профи


Вступление в Клуб: 17.01.2017
СообщениеПн Июн 08, 2020 17:12    Ответить с цитатой
Полезность: Нет оценки
Сортировать можно до записи в массив
loop
vd_MySysdate := vd_MySysdate - 30 + 1
где 30 - нужное количество дней
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПн Июн 08, 2020 18:26    Ответить с цитатой
Полезность: Нет оценки
Сначала получите список дат как-то так
select trunc(sysdate) - rownum from Z#FP_TUNE where rownum < 10
order by 1
а потом уже в массив
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеВт Июн 09, 2020 06:13   Re: Сортировка данных в масииве Ответить с цитатой
Полезность: 1
abdzhnr пишет:
Добрый день,

loop
vd_MySysdate := vd_MySysdate - 1;
vcIndex := null;
vcIndex := to_char(vd_MySysdate,'ddmmyyyy');
if not myTab.exists(vcIndex) then
myTab(vcIndex).vdData := vd_MySysdate;
myTab(vcIndex).inOst := 0;
myTab(vcIndex).outOst := 0;
end if;
end loop;

В этот массив данные попадают за 01.06.2020, 30.05.2020 и 31.05.2020
и когда вызываю myTab.first, то получаю '01062020'. Данные попали туда так что сначала записались за 01.06.2020. Мне надо получить myTab.first ='30052020'. Скорее всего требуется сортировка по дате, подскажите пожалуйста с примером как отсортировать?

Поменяйте индекс массива:

vcIndex := to_char(vd_MySysdate,'yyyymmdd');
abdzhnr
Участник


Вступление в Клуб: 01.06.2020
СообщениеВт Июн 09, 2020 12:46   Re: Сортировка данных в масииве Ответить с цитатой
Полезность: Нет оценки
Эмиралька пишет:
abdzhnr пишет:
Добрый день,

loop
vd_MySysdate := vd_MySysdate - 1;
vcIndex := null;
vcIndex := to_char(vd_MySysdate,'ddmmyyyy');
if not myTab.exists(vcIndex) then
myTab(vcIndex).vdData := vd_MySysdate;
myTab(vcIndex).inOst := 0;
myTab(vcIndex).outOst := 0;
end if;
end loop;

В этот массив данные попадают за 01.06.2020, 30.05.2020 и 31.05.2020
и когда вызываю myTab.first, то получаю '01062020'. Данные попали туда так что сначала записались за 01.06.2020. Мне надо получить myTab.first ='30052020'. Скорее всего требуется сортировка по дате, подскажите пожалуйста с примером как отсортировать?

Поменяйте индекс массива:

vcIndex := to_char(vd_MySysdate,'yyyymmdd');


Спасибо, Эмиралька! Получилось!
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеСр Июн 10, 2020 14:45   Re: Сортировка данных в масииве Ответить с цитатой
Полезность: Нет оценки
abdzhnr пишет:
Спасибо, Эмиралька! Получилось!


Смысл в том, что в массиве данные хранятся в сортированном виде и элемент с индексом 29 будет располагаться после элемента с индексом 01, вне зависимости от того, какий элемент заносится в массив первым.

Рада, что помогла. Пожалуйста!
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах