|
08.07.2021, 14:19 | #1 |
Участник
|
Порядок колонок UNION Ax2012
Добрый день, All!
Вопрос выглядит простым, но явного ответа я не нашел. Создается Query с Union В каждой секции Union провязаны QueryBuildDataSource различных таблиц в порядке, как позволяет addLink. Порядок колонок не соответствует порядку QueryBuildDataSource. Как подобное реализуется? |
|
08.07.2021, 15:06 | #2 |
Участник
|
Порядок колонок? а какую роль он играет, какая разница в каком они порядке?
|
|
08.07.2021, 15:25 | #3 |
Участник
|
|
|
08.07.2021, 16:05 | #4 |
Участник
|
amin, я тоже не понял вас. Попробуйте объяснить что вы имеете в виду. А если есть возможность то прикрепите скриншот.
|
|
08.07.2021, 16:24 | #5 |
Участник
|
Попробую написать SQL, соответствующий примеру (наверно так будет проще)
Таблицы из первого Union - t11, t12, t13 Таблицы из второго Union - t21, t22, t23 SELECT f11.f1,f12.f1, f13.f1 FROM f11 INNER JOIN f12 ON f11.r2=f12.r2 INNER JOIN f13 ON f12.r3=f13.r3 UNION ALL SELECT f23.f1,f22.f1, f21.f1 FROM f21 INNER JOIN f22 ON f21.r2=f22.r2 INNER JOIN f23 ON f22.r3=f23.r3 Соответственно, имеем 3 колонки. Хочу в Union секциях расставить поля заданным образом, вне зависимости от того, какими addLik я собирал Query |
|
08.07.2021, 16:35 | #6 |
Участник
|
|
|
08.07.2021, 16:53 | #7 |
Участник
|
Все не то. Вот код, задающий колонки
Query UNION Ax2009 - идентификация строки tatic void union(Args _args) { Query query; QueryBuildDataSource qbdsCustTable; QueryBuildDataSource qbdsVendTable; QueryRun queryRun; CustVendTable custVendTable; TableName tableName; ; query = new Query(); query.queryType(QueryType::Union); query.allowCrossCompany(true); query.addCompanyRange('ceu'); query.addCompanyRange('cee'); qbdsCustTable = query.addDataSource(tableNum(CustTable)); qbdsCustTable.unionType(UnionType::UnionAll); // Include duplicate records qbdsCustTable.fields().dynamic(false); qbdsCustTable.fields().clearFieldList(); qbdsCustTable.fields().addField(fieldNum(CustTable, AccountNum)); qbdsCustTable.fields().addField(fieldNum(CustTable, Name)); qbdsCustTable.fields().addField(fieldNum(CustTable, DataAreaId)); qbdsVendTable = query.addDataSource(tableNum(Vendtable)); qbdsVendTable.unionType(UnionType::UnionAll); // Include duplicate records qbdsVendTable.fields().dynamic(false); qbdsVendTable.fields().clearFieldList(); qbdsVendTable.fields().addField(fieldNum(VendTable, AccountNum)); qbdsVendTable.fields().addField(fieldNum(VendTable, Name)); qbdsVendTable.fields().addField(fieldNum(VendTable, DataAreaId)); Все примеры почему-то берут только один QueryBuildDataSource. Брать больше "уставы не велят"(с)? Или есть явный запрет? Или "нужно уметь их готовить"? |
|
08.07.2021, 16:31 | #8 |
Участник
|
https://docs.microsoft.com/en-us/dyn...-a-union-query
Цитата:
The number, order, and data type of each column must match the fields selected in the first data source
|
|
08.07.2021, 16:58 | #9 |
Участник
|
Наверное вам нужен addSelectionField
как оформить запрос union или full join |
|
|
За это сообщение автора поблагодарили: Logger (5). |
08.07.2021, 17:57 | #10 |
Участник
|
За что я люблю...
подобные диалоги, так это за то, что не захочешь, а сам начнешь моделировать проблему, .... а динамический SQL в аксапте, за то, что его проектировал гений, а реализовывали руожопы. Вывод - данная функциональность сделана "ну, если тебе сильно нужно для простых случаев" (а для сложных пиши на чистом SQL, и не напрягай себя и других). Похоже, как-то так. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|