Сортировка данных в масииве
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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, вне зависимости от того, какий элемент заносится в массив первым.
Рада, что помогла. Пожалуйста! |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|