15.06.2009, 19:52 | #1 |
Участник
|
Вопросик по джойнам на гридах.
Добрый день!
Стоит задача сделать похожую форму типа PurchTable, только с переопределенными relations. init PurchTable DS X++: Query a_query = new Query(); QueryBuildDataSource a_qbs, a_qbs1; ; super(); a_qbs = a_query.addDataSource(tablenum(PurchTable)); a_qbs.name(PurchTable_ds.name()); a_qbs.addRange(fieldNum(PurchTable, PurchStatus)).value(SysQuery::value(PurchStatus::Invoiced)); a_qbs1 = a_qbs.addDataSource(tablenum(PurchLine)); a_qbs1.name(PurchLine_ds.name()); a_qbs1.joinMode(JoinMode::InnerJoin); a_qbs1.fetchMode(QueryFetchMode::One2Many); a_qbs1.addLink(fieldnum(PurchTable,RecId), fieldnum(PurchLine, refRecId)); this.query(a_query); После запуска формы наблюдаю поведение, когда данные выгребаются один к одному, те если есть шапка с тремя линиями, - то я имею три шапки и три линии в верхнем и нижнем гридах. Может кто-нибудь сталкивался с такого рода поведением и как-то это победил? Заранее большое спасибо за ответы. ps DAX 40 SP2
__________________
Choose a job you love, and you will never have to work a day in your life. (c) Confucius Последний раз редактировалось custtable; 15.06.2009 в 19:54. Причина: ApplicationVersion |
|
15.06.2009, 20:31 | #2 |
----------------
|
А что еще можно было ожидать от InnerJoin?
|
|
15.06.2009, 22:28 | #3 |
MCITP
|
Сударь, вы извращенец.
1. зачем делать всё это на одном Init-e? Делайте те действия, которые относятся к PurchTable на PurchTable.Инит(), а к PurchLine - на PurchLine.инит(). Так будет гораздо понятнее в будущем... И возможно не вам... 2. вы вообще в курсе что такое Inner Join? Если нет, то советую подучить. То что вы хотите сделать нужно делать так же как и на форме PurchTable. Разве там есть Inner Join. Там стоит JoinType=Delayed.
__________________
Zhirenkov Vitaly |
|
16.06.2009, 03:31 | #4 |
Участник
|
дадада. всем огромное спасибо! я перепутал QueryBuildDataSource.addDynalink() c QueryBuildDataSource.addLink().
А с ИннерДжойном - так это понедельник, да еще судя по всему и вечер |
|