| 
			
			 | 
		#1 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
			
			
			динамический select
			 
			
			Вот такая нетривиальная задача: 
		
		
		
		
		
		
		
	X++: while select rPayEmplTblSum1 where rPayEmplTblSum1.EmplId == emplTable.EmplId && rPayEmplTblSum1.PayPeriod >= dateStartMth(_payPeriod) && rPayEmplTblSum1.PayPeriod <= endMth(_payPeriod) && (rPayEmplTblSum1.TimeCode == "Time1" || rPayEmplTblSum1.TimeCode == "Time3")  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Banned 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Используйте Query. В чем проблема?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			нужно именно в select условие дополнить без Query. Может как то можно внутри цикла условие добавить?
		 
		
		
		
		
		
		
		
		
			Последний раз редактировалось Eldar9x; 22.02.2007 в 11:37.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Программатор 
		
			
	 | 
	
	
	
		
		
		
		 
			
			(rPayEmplTblSum1.TimeCode == Time1 || !Time1) 
		
		
		
		
		
		
		
	если юзер выбрал переменную то условие выполнится, если нет, то проигнорируется  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Eldar9x (1). | |
| 
			
			 | 
		#5 | 
| 
			
			 Banned 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Программатор 
		
			
	 | 
	
	
	
		
		
		
		 
			
			аааа, после того как прошол селект туда еще что то добавить???
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Как вариант 
		
		
		
		
		
		
		
	X++: while select mytable were ... { if (mytable.myfield ....) continue; if (mytable.myfield ....) continue; ... }  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 MCTS 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			всетаки сделайти через Query  как рекомендовал EVGL -  такие запросы через класс создаются оочень просто,  и кода там не много будет
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Axapta 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Сделайте отдельный метод для формирования квери. И вообще, лучше использовать квери, там где можно. Например, не забывайте про РЛС. 
		
		
		
		
		
		
		
	Я, когда только начинал программировать в Аксе, тоже любил селект. А причина была простая - его вроде как "проще" писать было. И дело не в том, что там "и так кода наворочено".  
		 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			МА-А-А-АТЬ!!! 
		
		
		
		
		
		
			
		
		
		
		
	Хочется рвать и метать. Душить и вешать программистов, которые сделали этот код! МАТЬ! МАТЬ! МАТЬ! Кода там много только потому, что эти *бип*бип*бип* программисты НЕ ИСПОЛЬЗОВАЛИ query. Создайте нужный вам query в AOT, назовите его, например,myQuery. в коде напишите ОДНУ строчку X++: Query q = new Query(querystr(myQuery)) Не изобретайте велосипед и не занимайтесь закатом солнца вручную.  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		  там мой код
		 | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			сделал : 
		
		
		
		
		
		
		
	X++:     queryRun.reset();
            RPayCalendarTimeTable = queryRun.get(tableNum(RPayCalendarTimeTable));
            do
            {
                while select rPayEmplTblSum1
                    where rPayEmplTblSum1.EmplId == emplTable.EmplId &&
                          rPayEmplTblSum1.PayPeriod >= dateStartMth(_payPeriod) &&
                          rPayEmplTblSum1.PayPeriod <= endMth(_payPeriod) &&
                          (rPayEmplTblSum1.TimeCode == RPayCalendarTimeTable.PayCalendarTimeCode || !RPayCalendarTimeTable.PayCalendarTimeCode)
                {
                      FactSum += rPayEmplTblSum1.HourFact;
                      SheduleSum += rPayEmplTblSum1.HourSchedule;
                }
            }
            while (queryRun.next()); | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			да такое решение возможно, оно зависит от цели данной операции, если это джоп то пойдет, иначе лучше использовать query
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
		
			Рабочий день сокращает жизнь на 8 часов ![]() Последний раз редактировалось Himan; 22.02.2007 в 12:48.  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
|
| За это сообщение автора поблагодарили: zemlyn (1). | |
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			mazzy, да не переживай ты так, люди всякие бывают и каждый уверен что имеено его решение правильно. И не важно что большинство уверенно что так нельзя.... 
		
		
		
		
		
		
			Програмист он и есть програмист.... свое здоровье оно дороже всего, а все болезни от нервов 
				__________________ 
		
		
		
		
	Рабочий день сокращает жизнь на 8 часов ![]()  | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Может человек просто заджойнить таблицу в query не умеет, 
		
		
		
		
		
		
			
		
		
		
		
	так подсказали бы...  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Может человек просто заджойнить таблицу в query не умеет, 
так подсказали бы... 
				__________________ 
		
		
		
		
	Рабочий день сокращает жизнь на 8 часов ![]()  | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Да, Александр, верно говорит, умею, просто мне "низкоуровневое" программирование ближе  
		
		
		
		
		
		
		
	 
		 | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
 
		 | 
| 
	
 |