17.07.2006, 08:37 | #21 |
Участник
|
Цитата:
Сообщение от AndyD
...
query = new Query(VendContractItem_ds.query()); qbd1 = query.DataSourceTable(TableNum(VendContractItem)); ... qbd2.joinMode(JoinMode::InnerJoin); qbd2.fetchMode(QueryFetchMode::One2One); ... Вот еще один вопросец появился: SELECT * FROM VendContractItem WHERE RContractTable.RContractAccount=VendContractItem.RContractAccount JOIN * FROM VendItemPrice WHERE VendContractItem.PriceLineId = VendItemPrice.PriceLineId AND ((IsPrimary = Да)) JOIN ItemName FROM InventTable USING INDEX ItemName_idx WHERE VendContractItem.ItemId = InventTable.ItemId Там еще несколько строк, не суть. вопрос вот в чем - вроде как строки в первую очередь выбираются из VendContractItem, сджойненный с VendItemPrice? а следующий джойн, InventTable - он с VendItemPrice или с VendContractItem или с результатом предыдущего джойна? |
|
17.07.2006, 13:19 | #22 |
Участник
|
Для чистоты эксперимента сделал пробную форму (туториал испоганивать не стал) с одним гридом и 2 сджойненными табличками.
Работает! Но попытка сменить linkType для подчиненной таблички провалилась с нулевым эффектом PHP код:
|
|
17.07.2006, 13:55 | #23 |
Lean Six Sigma
|
VendContractItem_ds.queryRun(); в этом контексте абсолютно не в тему. Метод возвращает указатель на инстанс класса и больше ничего не делает.
|
|
17.07.2006, 14:34 | #24 |
Участник
|
Цитата:
Сообщение от Ned
VendContractItem_ds.queryRun(); в этом контексте абсолютно не в тему. Метод возвращает указатель на инстанс класса и больше ничего не делает.
|
|
17.07.2006, 16:18 | #25 |
Британский учённый
|
Код: Query q; QueryBuildDataSource qB; QueryBuildDataSource qB2; QueryBuildDataSource qB3; ; qB = q.addDataSource(tablenum(AssetBookTable)); qB.addRange(Fieldnum(AssetBookTable,CurrentOperationsTax)).value(enum2value(currentOperationsTax)); qB2 = qB.addDataSource(tablenum(AssetBook)); qB2.addLink(FieldNum(AssetBookTable,BookId),fieldNum(AssetBook,BookId)); qB2.addRange(Fieldnum(AssetBook,AssetId)).value(assetId); qB2.joinMode(JoinMode::OuterJoin); //(а так же NoExistsJoin, InnerJoin, EXISTSJOIN); qB3 = qB2.addDataSource(tablenum(AssetBookTable)); qB3.addLink(FieldNum(AssetBook,BookId),fieldNum(AssetBookTable,BookId)); |
|
17.07.2006, 16:44 | #26 |
Участник
|
Изменять это, меняя свойство датасорса формы не получится.
Нужно менять это же свойство, только на запросе этого датасорса. Посмотрите код Linkа выше для понимания, как работают классы QueryBuild*. Достучаться к ним с датасорса - через DataSourceName.query() или DataSourceName.queryRun().query() |
|
17.07.2006, 20:45 | #27 |
Участник
|
Цитата:
Сообщение от Ихъ бин программикеер
Факт, были, см. форму VendContractItem. Задачка у меня на самом деле простая - позволить пользователю ставить галочки на элементах номенклатуры (форма вызывается через Работа с поставщиками/Договоры/Ассортимент) и показать отдельно (сортировка, отдельная вкладка и пр.) те элементы номенклатуры, которые не были выбраны. Способ показывания на отдельной вкладке тех, которые выделены, типа не подходит (такая уж постановка), поэтому надо извращаться.
может в качестве примера посмотрите на форму SalesQuickQuote (вызывается из заказов по функции создание строк) |
|
|
За это сообщение автора поблагодарили: Ихъ бин программикеер (1). |
18.07.2006, 10:24 | #28 |
Участник
|
В общем, исследование вопроса дало следующий результат:
1. Разнообразные баги и глюки были, как оказалось, прежде всего связаны с тем, что связка датасорсов в понимании аксапты - это, видимо, связка датасорсов. Она, видимо, принципиально не должна выполнять 2 функции одновременно. Т.е., я так понимаю, какие-то внутренние связи (а в той форме их довольно-таки много) не давали мне вытавить "NotExistJoin" на нужном датасорсе или просто добавить его . Однако заведение дополнительного комплекса датасорсов (посмотрел согласно указаниям wb SalesQuickQuote) дало как раз нужный мне эффект. Там еще, правда, есть небольшие глючки, но думаю, что это решаемый вопрос. 2. Link и kashperuk, спасибо, попробую обязательно, хоть это уже и неактуально в смысле решения текущей задачи, хотя, если честно, есть некоторые сомнения в стопроцентности получения результата . 3. kashperuk, если честно, вот нифига пока не понимаю как они, классы эти, работают... Чем отличаются принципиально указанные запросы? Т.е. зачем к ним такой разный доступ? |
|
18.07.2006, 10:57 | #29 |
Британский учённый
|
Цитата:
Сообщение от Ихъ бин программикеер
Т.е., я так понимаю, какие-то внутренние связи (а в той форме их довольно-таки много) не давали мне вытавить "NotExistJoin" на нужном датасорсе или просто добавить его .
Код: queryBuildDataSource.clearDynalinks(); queryBuildDataSource.clearLinks(); queryBuildDataSource.addDynalink(); queryBuildDataSource.addLink(); и в linkActive() датасорса перед super() Вот еще ссылка: Как узнать Alignment у элемента в Grid'е |
|
19.07.2006, 14:01 | #30 |
Участник
|
Ха, ну тогда это не мой случай :-) а что, по желанию пользователя никак?
|
|
19.07.2006, 18:45 | #31 |
Участник
|
Вот, кстати, инфы немного про эти самые "загадочные" классы
http://axgeek.spaces.msn.com/PersonalSpace.aspx |
|
Теги |
datasource, query, датасорс (datasource), запрос (query), форма, crm2011 |
|
|