|
|
#21 |
|
Участник
|
Zitat:
Zitat von 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 или с результатом предыдущего джойна? |
|
|
|
|
#22 |
|
Участник
|
Для чистоты эксперимента сделал пробную форму (туториал испоганивать не стал) с одним гридом и 2 сджойненными табличками.
Работает! Но попытка сменить linkType для подчиненной таблички провалилась с нулевым эффектом PHP-Code:
. Не работает. Так и должно быть?
|
|
|
|
|
#23 |
|
Lean Six Sigma
|
VendContractItem_ds.queryRun(); в этом контексте абсолютно не в тему. Метод возвращает указатель на инстанс класса и больше ничего не делает.
|
|
|
|
|
#24 |
|
Участник
|
Zitat:
Zitat von Ned
VendContractItem_ds.queryRun(); в этом контексте абсолютно не в тему. Метод возвращает указатель на инстанс класса и больше ничего не делает.
|
|
|
|
|
#25 |
|
Британский учённый
|
Code: 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)); |
|
|
|
|
#26 |
|
Участник
|
Изменять это, меняя свойство датасорса формы не получится.
Нужно менять это же свойство, только на запросе этого датасорса. Посмотрите код Linkа выше для понимания, как работают классы QueryBuild*. Достучаться к ним с датасорса - через DataSourceName.query() или DataSourceName.queryRun().query() |
|
|
|
|
#27 |
|
Участник
|
Zitat:
Zitat von Ихъ бин программикеер
Факт, были, см. форму VendContractItem. Задачка у меня на самом деле простая - позволить пользователю ставить галочки на элементах номенклатуры (форма вызывается через Работа с поставщиками/Договоры/Ассортимент) и показать отдельно (сортировка, отдельная вкладка и пр.) те элементы номенклатуры, которые не были выбраны. Способ показывания на отдельной вкладке тех, которые выделены, типа не подходит (такая уж постановка), поэтому надо извращаться.
может в качестве примера посмотрите на форму SalesQuickQuote (вызывается из заказов по функции создание строк) |
|
|
|
| This post has been rated by: Ихъ бин программикеер (1). | |
|
|
#28 |
|
Участник
|
В общем, исследование вопроса дало следующий результат:
1. Разнообразные баги и глюки были, как оказалось, прежде всего связаны с тем, что связка датасорсов в понимании аксапты - это, видимо, связка датасорсов. Она, видимо, принципиально не должна выполнять 2 функции одновременно. Т.е., я так понимаю, какие-то внутренние связи (а в той форме их довольно-таки много) не давали мне вытавить "NotExistJoin" на нужном датасорсе или просто добавить его . Однако заведение дополнительного комплекса датасорсов (посмотрел согласно указаниям wb SalesQuickQuote) дало как раз нужный мне эффект. Там еще, правда, есть небольшие глючки, но думаю, что это решаемый вопрос. 2. Link и kashperuk, спасибо, попробую обязательно, хоть это уже и неактуально в смысле решения текущей задачи, хотя, если честно, есть некоторые сомнения в стопроцентности получения результата .3. kashperuk, если честно, вот нифига пока не понимаю как они, классы эти, работают... Чем отличаются принципиально указанные запросы? Т.е. зачем к ним такой разный доступ? |
|
|
|
|
#29 |
|
Британский учённый
|
Zitat:
Zitat von Ихъ бин программикеер
Т.е., я так понимаю, какие-то внутренние связи (а в той форме их довольно-таки много) не давали мне вытавить "NotExistJoin" на нужном датасорсе или просто добавить его .
Code: queryBuildDataSource.clearDynalinks();
queryBuildDataSource.clearLinks();
queryBuildDataSource.addDynalink();
queryBuildDataSource.addLink();и в linkActive() датасорса перед super() Вот еще ссылка: Как узнать Alignment у элемента в Grid'е |
|
|
|
|
#30 |
|
Участник
|
Ха, ну тогда это не мой случай :-) а что, по желанию пользователя никак?
|
|
|
|
|
#31 |
|
Участник
|
Вот, кстати, инфы немного про эти самые "загадочные" классы
http://axgeek.spaces.msn.com/PersonalSpace.aspx |
|
|
| Stichworte |
| datasource, query, датасорс (datasource), запрос (query), форма, crm2011 |
|
|
|