Связи все сделаны абсолютно так же, но у меня в CheckedListBox1 выводилось не напрямую из Orders.Order_Name, а по связи - Order_percent.Orders.Order_Name...
Я переделала на Orders.Order_Name.
Теперь перестал работать метод CheckedListBox1.FilterData(); Ничего не фильтруется - выводятся все строки из Order_percent. А до этого фильтрация работала... Но, как я уже говорила, не работала одна организация...
Кстати, Ваш отчет не открылся, я просто сверила принцип построения связей и свойства объектов:
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()
У меня, в общем-то, все заработало. Дело было в том, что у меня на странице выводилось не как у Вас, у меня не было никаких subdetail'ов, я просто выводила строки из Order_Percent. Я думала, что можно просто взять строки из окончательной таблицы для вывода...
Если сделать как у ВАс - три бэнда данных - все выводится правильно...
То есть, если на странице выводить данные из Order_percent в один бэнд данные, то выводятся все строки из Order_percent.
Как бы это проще объяснить. Каскадная фильтрация (главный-подчиненный) подразумевает отчет аналогичной структуры (главный-подчиненный-и прочие уровни). Можно сделать отчет с одним уровнем данных, но тогда надо в коде выполнить инициализацию связанных источников данных. Чтобы этим не заниматься (не писать код вообще), структура отчета должна повторять структуру фильтрации. Т.е. есть у Вас каскадная фильтрация по Customers и Orders - делайте отчет master-detail (Customers-Orders). К Orders можно цеплять вложенные уровни (OrderDetails), это уже не критично.
Вот есть у меня на странице эти бэнды... Данные: 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'
Как сделать? Куда влепить заголовок группы?
Возможно, это глупый вопрос, просто я уже перестала что-либо соображать...
Как бы это проще объяснить. Каскадная фильтрация (главный-подчиненный) подразумевает отчет аналогичной структуры (главный-подчиненный-и прочие уровни). Можно сделать отчет с одним уровнем данных, но тогда надо в коде выполнить инициализацию связанных источников данных. Чтобы этим не заниматься (не писать код вообще), структура отчета должна повторять структуру фильтрации. Т.е. есть у Вас каскадная фильтрация по Customers и Orders - делайте отчет master-detail (Customers-Orders). К Orders можно цеплять вложенные уровни (OrderDetails), это уже не критично.
Ну вроде бы понятно...
Если у Вас будет время, прошу выслать мне код для того случая, если я хочу выполнить инициализацию связанных источников данных в коде и не делать отчет со структурой страницы аналогичной "главный-подчиненный-и прочие уровни"...
У меня на странице есть два НЕЗАВИСИМЫХ бэнда Данные - они выводятся из одной и той же таблицы, но там стоит фильтрация по определенному значению, и в одном бэнде выводятся одни строки, а в другом - совершенно другие.
Как мне вывести в каждой строке номер строки, причем, если последняя строка первого бэнда имеет номер N, мне необходимо, чтобы первая строка второго бэнда имела имела номер (N+1) и т.д...
Спасибо. Извините за такое кол-во вопросов, просто все хочется знать)
Для этого зайдите в меню "Отчет/Настроить бэнды...", щелкните правой кнопкой мыши на бэнде "Данные: order_percent" и выберите в меню - "Заголовок группы".
Как мне вывести в каждой строке номер строки, причем, если последняя строка первого бэнда имеет номер N, мне необходимо, чтобы первая строка второго бэнда имела имела номер (N+1) и т.д...
В первом бэнде (допустим, это бэнд с именем Data1) номер печатаем так:
[Row#]
Во втором так:
[Data1.RowNo + [Row#]]
Если у Вас будет время, прошу выслать мне код для того случая, если я хочу выполнить инициализацию связанных источников данных в коде и не делать отчет со структурой страницы аналогичной "главный-подчиненный-и прочие уровни"...
Нужно выполнить следующий код перед началом печати данных (например, в обработчике ReportTitle.BeforePrint):
Все дело в том, что у меня в подвале группы выводится итог по группе, так что, если сделать вот так:
Данные: rep_month
Данные: orders
Заголовок группы: order_percent.order_group - в заголовке ничего не выводится, группировка используется только ради итога по группе.
Данные: order_percent
Подвал группы: order_percent.order_group
то у меня подвал группы выводится для каждой строки из Данные: order_percent....
В первом бэнде (допустим, это бэнд с именем Data1) номер печатаем так:
[Row#]
Во втором так:
[Data1.RowNo + [Row#]]
У меня заработало правильно, когда я сделала вот так:
В первом бэнде (допустим, это бэнд с именем Data1) номер печатаем так:
[AbsRow#]
Во втором так:
[Data1.AbsRowNo + [AbsRow#]]
Да, забыл - в Вашем случае надо указать св-во Relation у бэнда "Данные". Если источники связаны друг с другом через параметры sql запроса, то этого делать не надо.
Да, забыл - в Вашем случае надо указать св-во Relation у бэнда "Данные". Если источники связаны друг с другом через параметры sql запроса, то этого делать не надо.
У бэнда данные в моем случае в поле Relation можно выбрать:
1. Table3_Table(rep_month->orders)
2. Table_Table1(orders->order_percent)
Выбрала Table_Table1(orders->order_percent). В итоге на печать из всех выбранных в CheckedListBox организаций выводится только первая, а остальные - не выводятся...
На демо-отчете "Dialogs/Cascaded Data Filtering" описанный подход работает. Возможно, Ваш отчет не работает из-за какой-то специфики, но проверить это без данных я не смогу.
На демо-отчете "Dialogs/Cascaded Data Filtering" описанный подход работает. Возможно, Ваш отчет не работает из-за какой-то специфики, но проверить это без данных я не смогу.
Я посмотрела демо-отчет "Dialogs/Cascaded Data Filtering". И не поняла к чему мне этот пример. Я там не нашла ни указание у бэнда данные св-ва Relation, ни кода, который вы говорили писать в событии BeforePrint.
У меня сейчас работает все почти так же как и в этом отчете, но я так и не сделала группировку и не смогла заменить структуру мастер-детэйл на код события BeforePrint.
Комментарии
Связи все сделаны абсолютно так же, но у меня в CheckedListBox1 выводилось не напрямую из Orders.Order_Name, а по связи - Order_percent.Orders.Order_Name...
Я переделала на Orders.Order_Name.
Теперь перестал работать метод CheckedListBox1.FilterData(); Ничего не фильтруется - выводятся все строки из Order_percent. А до этого фильтрация работала... Но, как я уже говорила, не работала одна организация...
Что же делать? )
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()
Если сделать как у ВАс - три бэнда данных - все выводится правильно...
То есть, если на странице выводить данные из Order_percent в один бэнд данные, то выводятся все строки из Order_percent.
А если выводить в три бэнда:
Данные: rep_month то все выводится как надо...
Почему в первом случае не происходит фильтрация?
Спасибо за помощь.
Вот есть у меня на странице эти бэнды...
Данные: rep_month В таблице order_percent есть поле order_group = '1' или '2'.
Как мне сделать, чтобы выводились строки order_percent с группировкой?
Т.е. бэнд данные Данные: order_percent должен выглядеть так:
order_group='1' Итог для order_group='1'
order_group='2' Итог для order_group='2'
Как сделать? Куда влепить заголовок группы?
Возможно, это глупый вопрос, просто я уже перестала что-либо соображать...
Ну вроде бы понятно...
Если у Вас будет время, прошу выслать мне код для того случая, если я хочу выполнить инициализацию связанных источников данных в коде и не делать отчет со структурой страницы аналогичной "главный-подчиненный-и прочие уровни"...
Спасибо Вам огромное за помощь!
У меня на странице есть два НЕЗАВИСИМЫХ бэнда Данные - они выводятся из одной и той же таблицы, но там стоит фильтрация по определенному значению, и в одном бэнде выводятся одни строки, а в другом - совершенно другие.
Как мне вывести в каждой строке номер строки, причем, если последняя строка первого бэнда имеет номер N, мне необходимо, чтобы первая строка второго бэнда имела имела номер (N+1) и т.д...
Спасибо. Извините за такое кол-во вопросов, просто все хочется знать)
Вот перед order_percent и влепить:
Для этого зайдите в меню "Отчет/Настроить бэнды...", щелкните правой кнопкой мыши на бэнде "Данные: order_percent" и выберите в меню - "Заголовок группы".
В первом бэнде (допустим, это бэнд с именем Data1) номер печатаем так:
[Row#]
Во втором так:
[Data1.RowNo + [Row#]]
Нужно выполнить следующий код перед началом печати данных (например, в обработчике ReportTitle.BeforePrint):
Все дело в том, что у меня в подвале группы выводится итог по группе, так что, если сделать вот так:
Данные: rep_month
Данные: orders
Заголовок группы: order_percent.order_group - в заголовке ничего не выводится, группировка используется только ради итога по группе.
Данные: order_percent
Подвал группы: order_percent.order_group
то у меня подвал группы выводится для каждой строки из Данные: order_percent....
У меня заработало правильно, когда я сделала вот так:
В первом бэнде (допустим, это бэнд с именем Data1) номер печатаем так:
[AbsRow#]
Во втором так:
[Data1.AbsRowNo + [AbsRow#]]
Спасибо!
А этот код у меня почему то не сработал...
Я сделала для своего примера:
Группа вроде бы настроена нормально... Сортировка - по возрастанию...
У бэнда данные в моем случае в поле Relation можно выбрать:
1. Table3_Table(rep_month->orders)
2. Table_Table1(orders->order_percent)
Выбрала Table_Table1(orders->order_percent). В итоге на печать из всех выбранных в CheckedListBox организаций выводится только первая, а остальные - не выводятся...
Это из-за чего???
Я посмотрела демо-отчет "Dialogs/Cascaded Data Filtering". И не поняла к чему мне этот пример. Я там не нашла ни указание у бэнда данные св-ва Relation, ни кода, который вы говорили писать в событии BeforePrint.
У меня сейчас работает все почти так же как и в этом отчете, но я так и не сделала группировку и не смогла заменить структуру мастер-детэйл на код события BeforePrint.
Я праверила - группировка работает в демо-отчете... Ладно... У меня так и не заработало...
Отправила.