Да, так работает, но 2008-я студия периодически мучает мессагами "object referense not....".
Кстати, когда ваш суппорт ответит мне по поводу невозможности скачать что-либо из моего клиентского раздела (TID#159422) ?
Можно подробнее насчет object referense? Когда это происходит, если вышлете тестовый пример - будет вообще замечательно.
Саппорт, я полагаю, ответит в ближайший рабочий день - понедельник.
1. Окошко с процентом выполненых страниц (с кнопкой отмены) выходит только в дизайне. В рантайм - нет. Может чего задать где-то надо?
2. Если на дата-бенде выбрать кол-во колонок = 2 и флаг AcrossThenDown, то отчет из 620стр готовится быстро(секунд 10).
А вот если флаг = DownThenAcross, то отчет гововит страницы очень медленно и страниц становится бесконечно много, через 15 минут - около 2000, потом приходится снимать студию, т.к. кнопка отмены не работает.
3. Если на дата-бенде выбрать кол-во колонок = 2 и у самого дата-бенда включить все границы, то превью выглядит прикольно. Рамочки отрисовываются и на листе и справа.
1. Да, надо указать report1.ShowProgress = true. Я поправлю исходники, чтобы св-во по умолчанию было true.
2. Тестирую на отчете master-detail, в обычном режиме без колонок он генерит 2000 страниц за 16сек. В режиме с двумя колонками, AcrossThenDown - 1000 страниц за 23сек, в режиме DownThenAcross - 1000 страниц за 14сек. Режим AcrossThenDown более медленный, т.к. в процессе построения происходит дополнительное копирование данных. В вашем случае какая-то другая ошибка, если пришлете демку, буду премного благодарен.
3. Это исправил.
Если выбирается 1 или более строк, то всё работает как ожидалось.
Но если выбирается 0 строк(н-р, невыполнимые условия), то отчет печатается по всей таблице (>600 стр).
Если FR видит, что таблица пустая, он пытается заполнить ее данными, вызвав метод Fill типизированного датасета. Он, естественно, возвращает все данные. Поправлю, т.к. это должно работать только в дизайн-тайме.
Открываем шаблон отчета, добавляем данные, кидаем на форму несколько текст боксов в ДатаБэнд. закрываем отчет
изменяем датасет, добавив убрав несколько полей. передаем его в отчет, выводим. оказывается что выводимые данные сместились. текстбокс должен выводить одно значение а выводит значение из другого поля. хотя при просмотре данных в дизайнере все данные соответствуют своим полям.
Сделал солюшин в которм есть этот баг, отправил вам на tz мыло.
также сделал серию снимков описывающих баг.
+ обнаружил еще один баг, на снимке он тоже есть. отображение Картинки в просмотре данных как кодированную строку.
в FastReport.Data.TableDataSource.GetNativeColumnIndex(String name)
в FastReport.Data.DataSourceBase.ODHKeU9lr(String )
в FastReport.Report.8o5FvN2RC()
в FastReport.Report.7M0kR0SZ7()
в FastReport.Report.Prepare(Boolean append)
в FastReport.Report.Show()
в aSB1Q3Eywv52nOG19D3.LWR3GsElifRQOAQ5BqH.YCTq7P10G()
Предварительный просмотр выдает ошибка не задана ссылка на объект - входим в источники данных делаем просмотр таблицы - после этого делаем предварительный просмотр - всё в порядке, закрываем окно предварительного просмотра и заново входим в предварительный просмотр - получаем вышеуказанную ошибку.
AlexTZ
Запустите мой пример(TestFR4) с новой сборкой.
1. посмотрите на страницу 29 - она пустая, если на очереди длинный бенд и свойство разрываться не указано..
2. если ТОЛЬКО у дата бенда становить может разрываться, то отчет считает 3500(вместо ~600) страниц, потом падает.
3. есть поставить разрываться у всех "заинтересованных" объектов (дата-бенд, Text1, Тext3), то печатается визуально верно, но длинный бенд с 29 стр вместо отрисовки продолжения на второй, пустой, колонке, рисуется на след.странице.
Все эти пункты проверьте и на C++Builder2009 (как будет для него готов FR, черкните мне письмо, если не трудно).
Сделал колонки страницы, стало не лучше.
Во-первых иногда колонки разнятся по высоте, н-е Вы отрисовываете межбендовый пустой интервал на самом верху второй колонки. Думаю там его рисовать не надо. Отступ от верхнего края страницы у всех колонок должен быть одинаковым.
Во-вторых, объясните мне как сделать, чтобы бенды короче высоты страницы(колонки) рисовались целиком, т.е. если не помещаются в текущей колонке рисовались на следующей.
И только бенды, длиннее высоты страницы и колонки, отрисовывались с начала новой колонки и дробились по колонкам пока не закончатся.
И еще.
Если я к примеру не поставил свойство разрываться, то длинный бенд отрисовавается на нижнем колонтитуле и чуть ниже края страницы.
Предлагаю НИКОГДА не рисовать бенд на нижнем колонтитуле(все колонтитулы - запретная зона для отчета), а при формировании отчета в этом случае выводить сообщение, что бенд на такой-то странице не помещается и останавливать формирование отчета. Чтоб ошибка разработчика отчета или ошибка в самом ФР отлавливалась сразу и не формировались проблемные(неполноценные) отчеты.
Сделал колонки страницы, стало не лучше.
Во-первых иногда колонки разнятся по высоте, н-е Вы отрисовываете межбендовый пустой интервал на самом верху второй колонки. Думаю там его рисовать не надо. Отступ от верхнего края страницы у всех колонок должен быть одинаковым.
Во-вторых, объясните мне как сделать, чтобы бенды короче высоты страницы(колонки) рисовались целиком, т.е. если не помещаются в текущей колонке рисовались на следующей.
И только бенды, длиннее высоты страницы и колонки, отрисовывались с начала новой колонки и дробились по колонкам пока не закончатся.
Св-во ShowProgress перенесено в компонент EnvironmentSettings, он есть в VS Toolbox.
1) бэнд всегда рисуется вверху второй колонки. Интервал в Вашем случае - это отступ объекта от верхнего края бэнда.
2) это невозможно сделать штатными средствами. Можно задействовать скрипт, проверяющий перед печатью бэнда свободное место.
И еще.
Если я к примеру не поставил свойство разрываться, то длинный бенд отрисовавается на нижнем колонтитуле и чуть ниже края страницы.
Предлагаю НИКОГДА не рисовать бенд на нижнем колонтитуле(все колонтитулы - запретная зона для отчета), а при формировании отчета в этом случае выводить сообщение, что бенд на такой-то странице не помещается и останавливать формирование отчета. Чтоб ошибка разработчика отчета или ошибка в самом ФР отлавливалась сразу и не формировались проблемные(неполноценные) отчеты.
бэнд всегда рисуется вверху второй колонки. Интервал в Вашем случае - это отступ объекта от верхнего края бэнда.
в моём примере установите колонки у страницы и запустите, Вы найдете страницы с колонками начинающимися по разной высоте. н-р, 1, 9, 46...
написал:
это невозможно сделать штатными средствами. Можно задействовать скрипт, проверяющий перед печатью бэнда свободное место.
Может всё же реализовать такой функционал в ФР? Чтоб люди не мучались с бендами длиннее высоты колонки, и чтоб такой даже один бенд не влиял на неразрывное размещение коротких бендов...
После установки свежей версии при вызове дизайнера из демо - вываливается
System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.Exception: Cannot use SyntaxEdit outside of FastReport.Net!
в FastReport.Editor.SyntaxEdit.OnParentChanged(EventArgs e)
в System.Windows.Forms.Control.AssignParent(Control value)
в System.Windows.Forms.Control.ControlCollection.Add(Control value)
в Ugaf30ATJUZqGCFkZn7.QYL5RsAJhhwYs1CFwHt..ctor(Designer designer)
--- Конец трассировки внутреннего стека исключений ---
в System.RuntimeMethodHandle._InvokeConstructor(Object[] args, SignatureStruct& signature, IntPtr declaringType)
в System.RuntimeMethodHandle.InvokeConstructor(Object[] args, SignatureStruct signature, RuntimeTypeHandle declaringType)
в System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
в System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
в System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
в TjGQkEAldRUvXumJ6Gq.cdC6pIAoO2dR9gAyurb.WSbbXgX4u(PageBase )
в TjGQkEAldRUvXumJ6Gq.cdC6pIAoO2dR9gAyurb.I0dWinwRS(PageBase )
в TjGQkEAldRUvXumJ6Gq.cdC6pIAoO2dR9gAyurb.PPalvkASH(Object , EventArgs )
в mgUMSQv1ZonGhnRv3Cs.nQuWbWvvxBUpfRrjyxD.NonPWMwTW(Int32 )
в TjGQkEAldRUvXumJ6Gq.cdC6pIAoO2dR9gAyurb.8CdqQemHO(Int32 )
в TjGQkEAldRUvXumJ6Gq.cdC6pIAoO2dR9gAyurb.vmbNp8v6x(Int32 )
в TjGQkEAldRUvXumJ6Gq.cdC6pIAoO2dR9gAyurb.P9SPhqpg1()
в TjGQkEAldRUvXumJ6Gq.cdC6pIAoO2dR9gAyurb..ctor(Designer designer, Report report)
в FastReport.Design.Designer.DdxtYkWSO()
в FastReport.Design.Designer.MZ2pqUyLJ(Boolean )
в FastReport.Report.Design(Boolean modal, Form mdiParent)
в FastReport.Report.Design()
в Demo.Form1.btnDesign_Click(Object sender, EventArgs e)
в System.Windows.Forms.Control.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ButtonBase.WndProc(Message& m)
в System.Windows.Forms.Button.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
в моём примере установите колонки у страницы и запустите, Вы найдете страницы с колонками начинающимися по разной высоте. н-р, 1, 9, 46...
Это отступ объектов от верхнего края бэнда. При разрыве он остается на предыдущей странице/колонке. Делайте отступ не сверху, а снизу, добавив бэнд "Дочерний".
Может всё же реализовать такой функционал в ФР? Чтоб люди не мучались с бендами длиннее высоты колонки, и чтоб такой даже один бенд не влиял на неразрывное размещение коротких бендов...
Это отступ объектов от верхнего края бэнда. При разрыве он остается на предыдущей странице/колонке. Делайте отступ не сверху, а снизу, добавив бэнд "Дочерний".
Я не могу сейчас зайти в дизайнер, он падает, но Вы что-то не то говорите.
Когда у меня стояли колонки "неправильно" в дата-бенде, то все колонки начинались с одинакового отступа от верхнего края страницы. Когда я поставил по вашему совету колонки=2 у страницы, а не у бенда, то колонки стали на некоторых страницах начинаться с разной высоты. И чем страница 1 отличается от страниц 2 или 3 к примеру у всех у них внизу есть место(т.е. нельзя сказать что колонка заполнена до отказа)...
Когда у меня стояли колонки "неправильно" в дата-бенде, то все колонки начинались с одинакового отступа от верхнего края страницы.
Потому что разрыв данных между колонками в этом режиме не работает. Кстати, возможно, это именно то, что Вам нужно... Остается открытым вопрос о разрыве, это постараюсь доделать.
написал:
как сделать, чтобы бенды короче высоты страницы(колонки) рисовались целиком, т.е. если не помещаются в текущей колонке рисовались на следующей.
И только бенды, длиннее высоты страницы и колонки, отрисовывались с начала новой колонки и дробились по колонкам пока не закончатся.
Комментарии
Можно подробнее насчет object referense? Когда это происходит, если вышлете тестовый пример - будет вообще замечательно.
Саппорт, я полагаю, ответит в ближайший рабочий день - понедельник.
1. Да, надо указать report1.ShowProgress = true. Я поправлю исходники, чтобы св-во по умолчанию было true.
2. Тестирую на отчете master-detail, в обычном режиме без колонок он генерит 2000 страниц за 16сек. В режиме с двумя колонками, AcrossThenDown - 1000 страниц за 23сек, в режиме DownThenAcross - 1000 страниц за 14сек. Режим AcrossThenDown более медленный, т.к. в процессе построения происходит дополнительное копирование данных. В вашем случае какая-то другая ошибка, если пришлете демку, буду премного благодарен.
3. Это исправил.
Если FR видит, что таблица пустая, он пытается заполнить ее данными, вызвав метод Fill типизированного датасета. Он, естественно, возвращает все данные. Поправлю, т.к. это должно работать только в дизайн-тайме.
изменяем датасет, добавив убрав несколько полей. передаем его в отчет, выводим. оказывается что выводимые данные сместились. текстбокс должен выводить одно значение а выводит значение из другого поля. хотя при просмотре данных в дизайнере все данные соответствуют своим полям.
Не смог воспроизвести. Можно кусок кода, как делаете?
также сделал серию снимков описывающих баг.
+ обнаружил еще один баг, на снимке он тоже есть. отображение Картинки в просмотре данных как кодированную строку.
> отображение Картинки в просмотре данных как кодированную строку.
Это потому, что не загружена схема данных (файл .xsd).
в FastReport.Data.TableDataSource.GetNativeColumnIndex(String name)
в FastReport.Data.DataSourceBase.ODHKeU9lr(String )
в FastReport.Report.8o5FvN2RC()
в FastReport.Report.7M0kR0SZ7()
в FastReport.Report.Prepare(Boolean append)
в FastReport.Report.Show()
в aSB1Q3Eywv52nOG19D3.LWR3GsElifRQOAQ5BqH.YCTq7P10G()
Предварительный просмотр выдает ошибка не задана ссылка на объект - входим в источники данных делаем просмотр таблицы - после этого делаем предварительный просмотр - всё в порядке, закрываем окно предварительного просмотра и заново входим в предварительный просмотр - получаем вышеуказанную ошибку.
Смотрите почту.
Было бы неплохо, если бы в инсталляторе FR.NET было автоматическое удаление предыдущей версии...
Подскажите, пожалуйста, какими именно действиями можно загрузить схему данных (.xsd файл) ?
Исправил, соберется сегодня ночью.
А что насчет FR для C++Builder2009?
Запустите мой пример(TestFR4) с новой сборкой.
1. посмотрите на страницу 29 - она пустая, если на очереди длинный бенд и свойство разрываться не указано..
2. если ТОЛЬКО у дата бенда становить может разрываться, то отчет считает 3500(вместо ~600) страниц, потом падает.
3. есть поставить разрываться у всех "заинтересованных" объектов (дата-бенд, Text1, Тext3), то печатается визуально верно, но длинный бенд с 29 стр вместо отрисовки продолжения на второй, пустой, колонке, рисуется на след.странице.
Все эти пункты проверьте и на C++Builder2009 (как будет для него готов FR, черкните мне письмо, если не трудно).
Вам в данном случае лучше использовать не колонки бэнда, а колонки страницы - так оно правильнее, да и работать быстрее будет.
Пропало свойство ShowProgress...
Сделал колонки страницы, стало не лучше.
Во-первых иногда колонки разнятся по высоте, н-е Вы отрисовываете межбендовый пустой интервал на самом верху второй колонки. Думаю там его рисовать не надо. Отступ от верхнего края страницы у всех колонок должен быть одинаковым.
Во-вторых, объясните мне как сделать, чтобы бенды короче высоты страницы(колонки) рисовались целиком, т.е. если не помещаются в текущей колонке рисовались на следующей.
И только бенды, длиннее высоты страницы и колонки, отрисовывались с начала новой колонки и дробились по колонкам пока не закончатся.
Если я к примеру не поставил свойство разрываться, то длинный бенд отрисовавается на нижнем колонтитуле и чуть ниже края страницы.
Предлагаю НИКОГДА не рисовать бенд на нижнем колонтитуле(все колонтитулы - запретная зона для отчета), а при формировании отчета в этом случае выводить сообщение, что бенд на такой-то странице не помещается и останавливать формирование отчета. Чтоб ошибка разработчика отчета или ошибка в самом ФР отлавливалась сразу и не формировались проблемные(неполноценные) отчеты.
Св-во ShowProgress перенесено в компонент EnvironmentSettings, он есть в VS Toolbox.
1) бэнд всегда рисуется вверху второй колонки. Интервал в Вашем случае - это отступ объекта от верхнего края бэнда.
2) это невозможно сделать штатными средствами. Можно задействовать скрипт, проверяющий перед печатью бэнда свободное место.
Подумаю над этим.
Может всё же реализовать такой функционал в ФР? Чтоб люди не мучались с бендами длиннее высоты колонки, и чтоб такой даже один бенд не влиял на неразрывное размещение коротких бендов...
System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.Exception: Cannot use SyntaxEdit outside of FastReport.Net!
в FastReport.Editor.SyntaxEdit.OnParentChanged(EventArgs e)
в System.Windows.Forms.Control.AssignParent(Control value)
в System.Windows.Forms.Control.ControlCollection.Add(Control value)
в Ugaf30ATJUZqGCFkZn7.QYL5RsAJhhwYs1CFwHt..ctor(Designer designer)
--- Конец трассировки внутреннего стека исключений ---
в System.RuntimeMethodHandle._InvokeConstructor(Object[] args, SignatureStruct& signature, IntPtr declaringType)
в System.RuntimeMethodHandle.InvokeConstructor(Object[] args, SignatureStruct signature, RuntimeTypeHandle declaringType)
в System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
в System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
в System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
в TjGQkEAldRUvXumJ6Gq.cdC6pIAoO2dR9gAyurb.WSbbXgX4u(PageBase )
в TjGQkEAldRUvXumJ6Gq.cdC6pIAoO2dR9gAyurb.I0dWinwRS(PageBase )
в TjGQkEAldRUvXumJ6Gq.cdC6pIAoO2dR9gAyurb.PPalvkASH(Object , EventArgs )
в mgUMSQv1ZonGhnRv3Cs.nQuWbWvvxBUpfRrjyxD.NonPWMwTW(Int32 )
в TjGQkEAldRUvXumJ6Gq.cdC6pIAoO2dR9gAyurb.8CdqQemHO(Int32 )
в TjGQkEAldRUvXumJ6Gq.cdC6pIAoO2dR9gAyurb.vmbNp8v6x(Int32 )
в TjGQkEAldRUvXumJ6Gq.cdC6pIAoO2dR9gAyurb.P9SPhqpg1()
в TjGQkEAldRUvXumJ6Gq.cdC6pIAoO2dR9gAyurb..ctor(Designer designer, Report report)
в FastReport.Design.Designer.DdxtYkWSO()
в FastReport.Design.Designer.MZ2pqUyLJ(Boolean )
в FastReport.Report.Design(Boolean modal, Form mdiParent)
в FastReport.Report.Design()
в Demo.Form1.btnDesign_Click(Object sender, EventArgs e)
в System.Windows.Forms.Control.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ButtonBase.WndProc(Message& m)
в System.Windows.Forms.Button.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
привью отрабатывает нормально
Сейчас пересоберу...
Это отступ объектов от верхнего края бэнда. При разрыве он остается на предыдущей странице/колонке. Делайте отступ не сверху, а снизу, добавив бэнд "Дочерний".
Попробую сделать.
Когда у меня стояли колонки "неправильно" в дата-бенде, то все колонки начинались с одинакового отступа от верхнего края страницы. Когда я поставил по вашему совету колонки=2 у страницы, а не у бенда, то колонки стали на некоторых страницах начинаться с разной высоты. И чем страница 1 отличается от страниц 2 или 3 к примеру у всех у них внизу есть место(т.е. нельзя сказать что колонка заполнена до отказа)...
Потому что разрыв данных между колонками в этом режиме не работает. Кстати, возможно, это именно то, что Вам нужно... Остается открытым вопрос о разрыве, это постараюсь доделать.
Выложил исправленную версию.