|  27.01.2006, 16:05 | #1 | 
| Участник | Связи и Query 
			
			Как с помощью Query сделать следующий запрос: PHP код: 
			 | 
|  | 
|  27.01.2006, 16:12 | #2 | 
| Участник | 
			
			см. QueryBuildDataSource.addLink()
		 | 
|  | |
| За это сообщение автора поблагодарили: (-1). | |
|  27.01.2006, 16:33 | #3 | 
| Гость | 
			
			ответ неверный, dn низачот надо использовать addrange() примерно так, как в форме empltablelookup Последний раз редактировалось ahtoh; 27.01.2006 в 16:36. | 
|  | 
|  27.01.2006, 16:53 | #4 | 
| Участник | 
			
			упустил из виду знак "не равно"  Код: Table1.Field1 != Table2.Field1 | 
|  | 
|  27.01.2006, 16:57 | #5 | 
| Гость | 
			
			я где-то читал, что из-за того, что вместо ":=" написали "=" упал спутник и проект стоимостью несколько миллионов баксов накрылся таким образом
		 | 
|  | 
|  27.01.2006, 21:13 | #6 | 
| Moderator | 
			
			Всем привет! Позвольте присоединиться. Тема крайне интересна (по крайней мере, для меня   ). Я имею такой SQL-запрос в Oracle к таблице Axapta - LedgerTrans (т.е. Бухгалтерские проводки): SELECT LedgerTrans_L.TransDate AS TDATE, LedgerTrans_L.Voucher AS VOUCHER, LedgerTrans_L.Txt AS TXT, LedgerTrans_L.AccountNum AS L_ACCOUNT, LedgerTrans_R.AccountNum AS R_ACCOUNT, LedgerTrans_L.AmountMST AS L_AMOUNT, LedgerTrans_R.AmountMST AS R_AMOUNT, LedgerTrans_L.Crediting AS L_CREDITING, LedgerTrans_R.Crediting AS R_CREDITING FROM LEDGERTRANS LedgerTrans_L, LEDGERTRANS LedgerTrans_R WHERE LedgerTrans_L.TransDate = '20.01.2006' AND LedgerTrans_L.DataAreaId = LedgerTrans_R.DataAreaId AND LedgerTrans_L.BondBatch_RU = LedgerTrans_R.BondBatch_RU AND LedgerTrans_L.BondBatchTrans_RU = LedgerTrans_R.BondBatchTrans_RU AND LedgerTrans_L.Crediting <> LedgerTrans_R.Crediting который выводит примерно следующее: TDATE __ VOUCHER TXT ________ L_ACCOUNT R_ACCOUNT L_AMOUNT R_AMOUNT L_CREDITING R_CREDITING ------------------------------------------------------------------------------------------- 20.01.06 3 _____ оборудование 60 ______ 10 ______ -4000 __ 4000 ___ 1 _________ 0 20.01.06 3 _____ оборудование 10 ______ 60 ______ 4000 ___ -4000 __ 0 _________ 1 20.01.06 6 _____ светильник _ 60 ______ 19 ______ -500 ___ 500 ____ 1 _________ 0 20.01.06 6 _____ светильник _ 19 ______ 60 ______ 500 ____ -500 ___ 0 _________ 1 20.01.06 7 _____ телефон ____ 60 ______ 19 ______ -2000 __ 2000 ___ 1 _________ 0 20.01.06 7 _____ телефон ____ 19 ______ 60 ______ 2000 ___ -2000 __ 0 _________ 1 ВОПРОС: как сей селект воплотить в Axapta в виде View или Query? Самый непонятный мне момент как раз и связан с неравенством полей Crediting слева и справа. Куда их заталкивать? В Ranges? В Relations? Как? | 
|  | 
|  27.01.2006, 21:49 | #7 | 
| Участник | 
			
			RLedgerSheetEngine метод query. Там такая же ситуация, только связка делается по неравенству RecId.
		 | 
|  | |
| За это сообщение автора поблагодарили: Gustav (1). | |
|  27.01.2006, 23:11 | #8 | 
| Moderator | 
			
			Супер! Спасибо!  С Вашего позволения подведу радостный итог своего знакомства с расширенными диапазонами: Итак, нашёл строку как учили: qbr.value('(' + fieldStr(LedgerTrans, RecId) + '!=' + qBd.parentDataSource().name() + '.' + fieldStr(LedgerTrans, RecId) +')'); Создал по аналогии: (Crediting!=LedgerTrans_L.Crediting) --- Именно LedgerTrans_L, а не LedgerTrans, потому что я переименовал датасорсы c _L и _R. Вставил в отчет в Range ПОДЧИНЕННОГО датасорса, получилось так: Name : Crediting Table: LedgerTrans Field: Crediting Value: (Crediting!=LedgerTrans_L.Crediting) Запустил отчет - работает как надо!   | 
|  |