Работа с компонентами

2»

Комментарии

  • ListopadListopad Хабаровск
    отредактировано 23:23
    Ну я нашла одно отличие Вашего отчета от моего.

    Связи все сделаны абсолютно так же, но у меня в CheckedListBox1 выводилось не напрямую из Orders.Order_Name, а по связи - Order_percent.Orders.Order_Name...
    Я переделала на Orders.Order_Name.
    Теперь перестал работать метод CheckedListBox1.FilterData(); Ничего не фильтруется - выводятся все строки из Order_percent. А до этого фильтрация работала... Но, как я уже говорила, не работала одна организация...

    Что же делать? )
  • ListopadListopad Хабаровск
    отредактировано 23:23
    Кстати, Ваш отчет не открылся, я просто сверила принцип построения связей и свойства объектов:

    FastReport.Net v1.3.47
    Customers: Таблица не подключена к данным. Зарегистрируйте данные методом Report.RegisterData.
    at FastReport.Data.TableDataSource.LoadData(ArrayList rows)
    at FastReport.Data.DataSourceBase.Init(Relation relation, String filter, SortCollection sort)
    at FastReport.Data.DataSourceBase.Init(DataSourceBase parentData, String filter, SortCollection sort)
    at FastReport.Data.DataSourceBase.Init(DataSourceBase parentData)
    at FastReport.Dialog.DataFilterBaseControl.FillData(DataSourceBase parentData)
    at FastReport.Dialog.DataFilterBaseControl.InitializeControl()
    at FastReport.Dialog.DialogPage.Z1dWSXiKx()
    at FastReport.Dialog.DialogPage.ShowDialog()
    at FastReport.Engine.ReportEngine.NrpSgFL0Y()
    at FastReport.Engine.ReportEngine.Qtp1wOJkl(Boolean , Boolean , ReportPage )
    at FastReport.Report.Prepare(Boolean append)
    at FastReport.Report.Prepare()
    at bjT93f5QVKJkyBGi2xW.y4ByNw5wSSf7kchBxch.EY8oQhhZM()
  • отредактировано 23:23
    Отчет надо открывать в Demo.exe.
  • ListopadListopad Хабаровск
    отредактировано 23:23
    У меня, в общем-то, все заработало. Дело было в том, что у меня на странице выводилось не как у Вас, у меня не было никаких subdetail'ов, я просто выводила строки из Order_Percent. Я думала, что можно просто взять строки из окончательной таблицы для вывода...
    Если сделать как у ВАс - три бэнда данных - все выводится правильно...

    То есть, если на странице выводить данные из Order_percent в один бэнд данные, то выводятся все строки из Order_percent.

    А если выводить в три бэнда:

    Данные: rep_month
    Данные: orders
    Данные: order_percent
    то все выводится как надо...

    Почему в первом случае не происходит фильтрация?

    Спасибо за помощь.
  • отредактировано 23:23
    Как бы это проще объяснить. Каскадная фильтрация (главный-подчиненный) подразумевает отчет аналогичной структуры (главный-подчиненный-и прочие уровни). Можно сделать отчет с одним уровнем данных, но тогда надо в коде выполнить инициализацию связанных источников данных. Чтобы этим не заниматься (не писать код вообще), структура отчета должна повторять структуру фильтрации. Т.е. есть у Вас каскадная фильтрация по Customers и Orders - делайте отчет master-detail (Customers-Orders). К Orders можно цеплять вложенные уровни (OrderDetails), это уже не критично.
  • ListopadListopad Хабаровск
    отредактировано March 2010
    Внимание, вопрос! ))))

    Вот есть у меня на странице эти бэнды...
    Данные: rep_month
    Данные: orders
    Данные: order_percent
    В таблице order_percent есть поле order_group = '1' или '2'.
    Как мне сделать, чтобы выводились строки order_percent с группировкой?
    Т.е. бэнд данные Данные: order_percent должен выглядеть так:

    order_group='1'
    все строки order_percent c order_group = '1'
    Итог для order_group='1'

    order_group='2'
    все строки order_percent c order_group = '2'
    Итог для order_group='2'

    Как сделать? Куда влепить заголовок группы?
    Возможно, это глупый вопрос, просто я уже перестала что-либо соображать...
  • ListopadListopad Хабаровск
    отредактировано 23:23
    AlexTZ написал: »
    Как бы это проще объяснить. Каскадная фильтрация (главный-подчиненный) подразумевает отчет аналогичной структуры (главный-подчиненный-и прочие уровни). Можно сделать отчет с одним уровнем данных, но тогда надо в коде выполнить инициализацию связанных источников данных. Чтобы этим не заниматься (не писать код вообще), структура отчета должна повторять структуру фильтрации. Т.е. есть у Вас каскадная фильтрация по Customers и Orders - делайте отчет master-detail (Customers-Orders). К Orders можно цеплять вложенные уровни (OrderDetails), это уже не критично.

    Ну вроде бы понятно...
    Если у Вас будет время, прошу выслать мне код для того случая, если я хочу выполнить инициализацию связанных источников данных в коде и не делать отчет со структурой страницы аналогичной "главный-подчиненный-и прочие уровни"...

    Спасибо Вам огромное за помощь!
  • ListopadListopad Хабаровск
    отредактировано 23:23
    И сразу созрел еще один вопрос.

    У меня на странице есть два НЕЗАВИСИМЫХ бэнда Данные - они выводятся из одной и той же таблицы, но там стоит фильтрация по определенному значению, и в одном бэнде выводятся одни строки, а в другом - совершенно другие.
    Как мне вывести в каждой строке номер строки, причем, если последняя строка первого бэнда имеет номер N, мне необходимо, чтобы первая строка второго бэнда имела имела номер (N+1) и т.д...

    Спасибо. Извините за такое кол-во вопросов, просто все хочется знать)
  • отредактировано 23:23
    Listopad написал: »
    Как сделать? Куда влепить заголовок группы?

    Вот перед order_percent и влепить:
    Данные: rep_month
    
        Данные: orders
    
            Заголовок группы: order_group
            Данные: order_percent
            Подвал группы (необязательно)
    

    Для этого зайдите в меню "Отчет/Настроить бэнды...", щелкните правой кнопкой мыши на бэнде "Данные: order_percent" и выберите в меню - "Заголовок группы".
  • отредактировано 23:23
    Listopad написал: »
    Как мне вывести в каждой строке номер строки, причем, если последняя строка первого бэнда имеет номер N, мне необходимо, чтобы первая строка второго бэнда имела имела номер (N+1) и т.д...

    В первом бэнде (допустим, это бэнд с именем Data1) номер печатаем так:
    [Row#]
    Во втором так:
    [Data1.RowNo + [Row#]]
  • отредактировано 23:23
    Listopad написал: »
    Если у Вас будет время, прошу выслать мне код для того случая, если я хочу выполнить инициализацию связанных источников данных в коде и не делать отчет со структурой страницы аналогичной "главный-подчиненный-и прочие уровни"...

    Нужно выполнить следующий код перед началом печати данных (например, в обработчике ReportTitle.BeforePrint):
    DataSourceBase masterData = Report.GetDataSource("Customers");
    DataSourceBase detailData = Report.GetDataSource("Orders");
    masterData.Init();
    detailData.Init(masterData);
    
  • ListopadListopad Хабаровск
    отредактировано 23:23
    AlexTZ написал: »
    Вот перед order_percent и влепить.

    Все дело в том, что у меня в подвале группы выводится итог по группе, так что, если сделать вот так:

    Данные: rep_month
    Данные: orders
    Заголовок группы: order_percent.order_group - в заголовке ничего не выводится, группировка используется только ради итога по группе.
    Данные: order_percent
    Подвал группы: order_percent.order_group

    то у меня подвал группы выводится для каждой строки из Данные: order_percent....


  • ListopadListopad Хабаровск
    отредактировано 23:23
    AlexTZ написал: »
    В первом бэнде (допустим, это бэнд с именем Data1) номер печатаем так:
    [Row#]
    Во втором так:
    [Data1.RowNo + [Row#]]

    У меня заработало правильно, когда я сделала вот так:
    В первом бэнде (допустим, это бэнд с именем Data1) номер печатаем так:
    [AbsRow#]
    Во втором так:
    [Data1.AbsRowNo + [AbsRow#]]

    Спасибо!
  • ListopadListopad Хабаровск
    отредактировано 23:23
    AlexTZ написал: »
    Нужно выполнить следующий код перед началом печати данных (например, в обработчике ReportTitle.BeforePrint):
    DataSourceBase masterData = Report.GetDataSource("Customers");
    DataSourceBase detailData = Report.GetDataSource("Orders");
    masterData.Init();
    detailData.Init(masterData);
    

    А этот код у меня почему то не сработал...

    Я сделала для своего примера:
    DataSourceBase masterData = Report.GetDataSource("rep_month");
    DataSourceBase detailData = Report.GetDataSource("orders");
    masterData.Init();
    detailData.Init(masterData);
    
  • отредактировано 23:23
    написал:
    у меня подвал группы выводится для каждой строки из Данные: order_percent....
    Должно работать, если группа настроена правильно (не забудьте указать сортировку - по возрастанию или убыванию).
  • отредактировано 23:23
    написал:
    А этот код у меня почему то не сработал...
    Да, забыл - в Вашем случае надо указать св-во Relation у бэнда "Данные". Если источники связаны друг с другом через параметры sql запроса, то этого делать не надо.
  • ListopadListopad Хабаровск
    отредактировано 23:23
    AlexTZ написал: »
    Должно работать, если группа настроена правильно (не забудьте указать сортировку - по возрастанию или убыванию).

    Группа вроде бы настроена нормально... Сортировка - по возрастанию...
  • ListopadListopad Хабаровск
    отредактировано 23:23
    AlexTZ написал: »
    Да, забыл - в Вашем случае надо указать св-во Relation у бэнда "Данные". Если источники связаны друг с другом через параметры sql запроса, то этого делать не надо.

    У бэнда данные в моем случае в поле Relation можно выбрать:
    1. Table3_Table(rep_month->orders)
    2. Table_Table1(orders->order_percent)

    Выбрала Table_Table1(orders->order_percent). В итоге на печать из всех выбранных в CheckedListBox организаций выводится только первая, а остальные - не выводятся...

    Это из-за чего???
  • отредактировано 23:23
    На демо-отчете "Dialogs/Cascaded Data Filtering" описанный подход работает. Возможно, Ваш отчет не работает из-за какой-то специфики, но проверить это без данных я не смогу.
  • ListopadListopad Хабаровск
    отредактировано 23:23
    AlexTZ написал: »
    На демо-отчете "Dialogs/Cascaded Data Filtering" описанный подход работает. Возможно, Ваш отчет не работает из-за какой-то специфики, но проверить это без данных я не смогу.

    Я посмотрела демо-отчет "Dialogs/Cascaded Data Filtering". И не поняла к чему мне этот пример. Я там не нашла ни указание у бэнда данные св-ва Relation, ни кода, который вы говорили писать в событии BeforePrint.
    У меня сейчас работает все почти так же как и в этом отчете, но я так и не сделала группировку и не смогла заменить структуру мастер-детэйл на код события BeforePrint.
  • отредактировано 23:23
    Я о том, что если этот демо-отчет поменять указанным выше образом, то все работает нормально.
  • ListopadListopad Хабаровск
    отредактировано 23:23
    AlexTZ написал: »
    Я о том, что если этот демо-отчет поменять указанным выше образом, то все работает нормально.

    Я праверила - группировка работает в демо-отчете... Ладно... У меня так и не заработало...
  • отредактировано 23:23
    Пришлите, пожалуйста, файлы отчета (.frx) и готового отчета (.fpx, сохранить из превью) на tz@fast-report.com.
  • ListopadListopad Хабаровск
    отредактировано 23:23
    AlexTZ написал: »
    Пришлите, пожалуйста, файлы отчета (.frx) и готового отчета (.fpx, сохранить из превью) на tz@fast-report.com.

    Отправила.
  • отредактировано 23:23
    AlexTZ написал: »
    Главное - правильно настроить связь между таблицами (2 варианта выше), и соединить контролы с помощью св-ва DetailControl.
    Здрасвуйте, как настраивать связи и контролы для нескольких таблиц?

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.