|
![]() |
#1 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Alucardkds (1). |
![]() |
#2 |
Участник
|
Доброе утро.
Вариант с queryRun.prompt() помог решить проблему. Корректно отдельно заполняются оба query. Цитата:
Напишите что вы хотите реализовать на том языке, который вам удобен.
Или напишите SQL-запрос, который вы хотите реализовать в Аксапте. Есть отчёт, где входящими значениями являются: 1. Начальная дата. 2. Конечная дата. 3. Подразделение работников. (Данные из Table1, что представляет из себя справочник подразделений специализированных рабочих). 4. Рабочее подразделение. (Данные из Table2, что представляет из себя справочник всех подразделений, используемых в системе, в том числе данные из Table1 есть в Table2). И это были обыкновенные диалоговые поля с однозначным выбором, то есть 1 поле = 1 значение. Пришёл запрос, что необходимо строить отчёт не по 1 значению, а по нескольким подразделениям, например, 1) 3 значения из Table1 и 1 значение из Table2 или 2) 2 значение из Table1 и 2 значения из Table2 (притом должны быть выведены значения по 4-м пар значений: 1-1, 1-2, 2-1, 2-2, где первое число в паре - введённое значение из Table1, а второе - из Table2). И на эту задачу я придумал то решение, что описал в 1-м сообщении. Но столкнувшись с проблемой решил здесь спросить совета, а вдруг я по незнанию упустил какой-то более простой и правильный вариант решения данной задачки. |
|
![]() |
#3 |
Участник
|
Цитата:
У Вас эти две таблицы никак не связаны между собой? Тот код, что Вы привели - именно так и работает. Т.е. на каждую запись Table1 в отчет выводятся ВСЕ записи Table2? Или все-таки между таблицами есть связь?
И моя идея реализации работает по 1-ому варианту, да. Но если есть что-то более оптимальное - с радостью выслушаю совет.. Последний раз редактировалось Alucardkds; 31.03.2016 в 12:15. |
|
![]() |
#4 |
Участник
|
Цитата:
Сообщение от Alucardkds
![]() Да, эти таблицы связаны. В обеих таблицах есть поле DepartmentId и при создании записи в Table1 могут быть созданы только те, по которым есть записи в Table2.
И моя идея реализации работает по 1-ому варианту, да. Но если есть что-то более оптимальное - с радостью выслушаю совет.. X++: void initQuery() { query query1 = new query(); QueryBuildDataSource qbds1, qbds2; ; qbds1= query1.addDataSource(tableNum(Table1)); qbds2= qbds1.addDataSource(tablenum(Table2)); // Если есть явно прописанные Relation на таблицах или в EDT //qbds2.relation(true); // Если нет, то указать объединение явно qbds2.addLink(fieldnum(Table1, DepartmentId), fieldnum(Table2, DepartmentId)) // Явное указание полей, которые будут отображены в форме диалога qbds1.addRange(fieldnum(Table1, Field1)); qbds2.addRange(fieldnum(Table2, Field1)); queryrun1 = new queryRun(query1); } X++: void printSheet1() { ... EDT edt1, edt2; Table1 table1; Table2 table2; ... ; while (queryrun1.next()) { table1 = queryrun1.get(tablenum(Table1)); table2 = queryrun1.get(tableNum(Table2)); edt1 = Table1.Field1; edt2 = Table2.Field2; (...) } }
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: mazzy (2), Alucardkds (1). |
![]() |
#5 |
Участник
|
Странно, но с предложенным вариантом ничего не хочет выводить.
![]() Все whil'ы успешно пропускает как будто не сформировал query. Хотя в initQuery заходит и даже успешно запросы делает в датасурс. |
|