AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.01.2011, 16:20   #1  
AngelDominantes is offline
AngelDominantes
Участник
 
76 / 9 (1) +
Регистрация: 30.12.2010
Отчеты
Доброго времени суток.
Есть таблица из 4 полей. Необходимо получать отчет лишь по определенным записям, я создал на каждое поле Display метод такого типа:
X++:
 Table _table;
 ;
 select * from _table
  where _table.field == this.field;
 return  _table.field_2;
Отчет вызывается по нажатию MenuItem на форме c гридом, необходимо что бы из таблицы Table выбирались те записи, значение ключевого поля в которых равно значению этого поля на записе выбранной в гриде. Приведенный алгоритм выводит все записи таблицы Table. Где ошибка?
Старый 25.01.2011, 16:38   #2  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Вы в свойствах вашей кнопки MenuItemButton указали DataSource?
В методе init() вашего отчета нужно сделать проверку на наличие переданного курсора из grid'а и указать фильтр, который будет служить связкой между таблицей и записью из grid'а.
Примерно так:
X++:
public void init()
{
    Args            parameters;
    ;

    super();

    parameters = element.args();

    if(!parameters.record())
        throw error('Отчет должен вызываться с параметрами!');
    else if(parameters.record().TableId == tablenum(  ))
           = parameters.record();

    this.query().dataSourceTable(tableNum( )).addRange(fieldNum( ,  )).value(  . );
}
Таблицу из грида нужно объявить либо в ClassDeclaration, либо в этом же методе.

P.S. Для того, чтобы не отображалась форма запроса(SysQueryForm) при запуске отчета, нужно в свойствах Query отчета Interactive поставить в No.
__________________
С уважением, Александр.

Последний раз редактировалось samolalex; 25.01.2011 в 17:13.
Старый 25.01.2011, 16:47   #3  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,514 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Чего-то я не понял
Если запуск по нажатию MenuItemButton, то что означает конструкция "this.field"? Никаких полей у класса нет.
Может быть всё-таки имеется в виду простой button?
__________________
С уважением,
Вячеслав
Старый 25.01.2011, 16:53   #4  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Цитата:
Сообщение от pitersky Посмотреть сообщение
Чего-то я не понял
Если запуск по нажатию MenuItemButton, то что означает конструкция "this.field"? Никаких полей у класса нет.
Видимо методы у AngelDominantes табличные.
__________________
С уважением, Александр.
Старый 25.01.2011, 22:54   #5  
AngelDominantes is offline
AngelDominantes
Участник
 
76 / 9 (1) +
Регистрация: 30.12.2010
Цитата:
Сообщение от samolalex Посмотреть сообщение
Видимо методы у AngelDominantes табличные.
Да методы табличные, немного разобрался и понял, что в Display методы не передается указатель с грида, точнее я не знаю как его оттуда вытащить, если в init() отчета его возможно получить, то как его передать или использовать именно в Display?
Старый 25.01.2011, 23:45   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от AngelDominantes Посмотреть сообщение
Да методы табличные, немного разобрался и понял, что в Display методы не передается указатель с грида, точнее я не знаю как его оттуда вытащить, если в init() отчета его возможно получить, то как его передать или использовать именно в Display?
Так. Сдаётся мне, что у вас полный сумбур в голове

Вы писали:
Цитата:
Сообщение от AngelDominantes Посмотреть сообщение
я создал на каждое поле Display метод такого типа:
X++:
 Table _table;
 ;
 select * from _table
  where _table.field == this.field;
 return  _table.field_2;
Для чего вы сделали эти дисплей методы?

Цитата:
Сообщение от AngelDominantes Посмотреть сообщение
Необходимо получать отчет лишь по определенным записям
Забудем на время про дисплей-методы (ведь их использование никоим образом не влияет на решение этой задачи).

Каким образом у вас работает "отчёт"?
В его методе init есть цикл для обхода записей таблицы? Он основан на Query?
Перекрыт ли метод fetch?
Старый 26.01.2011, 00:27   #7  
AngelDominantes is offline
AngelDominantes
Участник
 
76 / 9 (1) +
Регистрация: 30.12.2010
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Так. Сдаётся мне, что у вас полный сумбур в голове

Вы писали:

Для чего вы сделали эти дисплей методы?


Забудем на время про дисплей-методы (ведь их использование никоим образом не влияет на решение этой задачи).

Каким образом у вас работает "отчёт"?
В его методе init есть цикл для обхода записей таблицы? Он основан на Query?
Перекрыт ли метод fetch?
Отчет построен с помощью мастера отчетов, в мастере выбрал Display методы в качестве отображаемой информации, виды Display методов выложил выше.Использовал Display методы, так как необходимо лишь выбрать некоторые записи в таблице, поле-критерий выборки записей располагается на гриде. Строго не судите если что-то концептуально не правильно, я только учусь.
Старый 27.01.2011, 12:14   #8  
AX2009
Гость
 
n/a
Заодно правописание -ТСЯ и -ТЬСЯ тут запости, вдруг тоже кому пригодится
Теги
query, отчет, report

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Изменить отчеты Dreadlock DAX: Программирование 2 04.06.2010 14:17
Фин отчеты: может ли работать по нескольким компаниям сразу Arahnid DAX: Функционал 3 30.05.2007 17:46
Шаблонные отчеты Bug DAX: Программирование 2 18.10.2005 16:41
Отчеты по клиентам Anastasiya DAX: Функционал 2 19.03.2005 12:11
CrystalReport и внутренние отчеты Anais DAX: Программирование 7 19.10.2004 16:26

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:13.