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