Как добраться до объекта внутри отчета (Crystal Reports)?
От: D.Triton Украина  
Дата: 24.02.06 11:15
Оценка:
Здравствуйте!

Как можно добраться до объекта внутри отчета?
К примеру, у меня есть диаграмма. На ней нужно проставить заголовок.
Как это можно сделать программно?


PS: Crystal Reports 10 + VS2003 (C#)
Re: Как добраться до объекта внутри отчета (Crystal Reports)
От: Ромашка Украина  
Дата: 24.02.06 12:53
Оценка:
Здравствуйте D.Triton, Вы писали :
> Как можно добраться до объекта внутри отчета?
> К примеру, у меня есть диаграмма. На ней нужно проставить заголовок.
> Как это можно сделать программно?

Передать через параметры отчета???
Вообще-то не совсем понятно, что это и зачем нужно, потому как, обычно,
отчет на то и отчет, чтобы от желания пользователя в нем ничего не
изменялосб....
Posted via RSDN NNTP Server 2.0


Всё, что нас не убивает, ещё горько об этом пожалеет.
Re: Как добраться до объекта внутри отчета (Crystal Reports)
От: Alex Getman  
Дата: 24.02.06 13:17
Оценка:
DT>Как можно добраться до объекта внутри отчета?

Нужно добавить ссылку на эту библиотеку:
%SYSTEM%\Program Files\Common Files\Crystal Decisions\1.0\Bin\craxddrt20.dll

потом в коде C#
using CRAXDDRT;

и дальше смотреть Object Browser'ом.
Re[2]: Как добраться до объекта внутри отчета (Crystal Repor
От: D.Triton Украина  
Дата: 24.02.06 13:34
Оценка:
Здравствуйте, Alex Getman, Вы писали:


DT>>Как можно добраться до объекта внутри отчета?


AG>Нужно добавить ссылку на эту библиотеку:

AG>%SYSTEM%\Program Files\Common Files\Crystal Decisions\1.0\Bin\craxddrt20.dll

AG>потом в коде C#

AG>using CRAXDDRT;

AG>и дальше смотреть Object Browser'ом.


Я не совсем понял, что вы имели ввиду.
У меня есть скажем такая ситуация.
В репорте есть диаграмма. Иногда мне надо поменять на ней заголовок.
Так вот, как получить ссылку на эту диаграмму?


MyCrystalReport rep = new MyCrystalReport();

rep.HowToGetGraphObject.Title = "Hello! This is my best report!";// что должно быть вместо HowToGetGraphObject?
Re[3]: Как добраться до объекта внутри отчета (Crystal Repor
От: FantomGood Украина  
Дата: 24.02.06 14:31
Оценка:
Здравствуйте, D.Triton, Вы писали:

DT>
DT>MyCrystalReport rep = new MyCrystalReport();

DT>rep.HowToGetGraphObject.Title = "Hello! This is my best report!";// что должно быть вместо HowToGetGraphObject?
DT>


Судя по коду скорее всего используеться CrystalReport встроенный в студию, а он имеет ограниченя на доступ к объектам отчета и поменять заголовок не получиться.

если использовать предложенный выше способ
получаеться приблизительно такой код
ApplicationClass app = new ApplicationClass();
Report rep;
rep = app.OpenReport(@"D:\CrystalReport1.rpt",0);

foreach(Section s in rep.Sections)
{
    foreach(IReportObject oRep in s.ReportObjects)
    {
        if (oRep.Kind == CRObjectKind.crGraphObject)
        {
                        IGraphObject gr ;
            gr = (CRAXDDRT.IGraphObject)oRep;
            gr.Title = "Заголовок";
        }
    }
}

crystalReportViewer1.ReportSource = rep;

ЗЫ: да заголовки поменяються во всех диаграммах
Re[4]: Как добраться до объекта внутри отчета (Crystal Repor
От: D.Triton Украина  
Дата: 27.02.06 14:43
Оценка:
Здравствуйте, FantomGood, Вы писали:


FG>foreach(Section s in rep.Sections)

FG>{
FG> foreach(IReportObject oRep in s.ReportObjects)
FG> {
FG> if (oRep.Kind == CRObjectKind.crGraphObject)
FG> {
FG> IGraphObject gr ;
FG> gr = (CRAXDDRT.IGraphObject)oRep;
FG> gr.Title = "Заголовок";
FG> }
FG> }
FG>}

FG>crystalReportViewer1.ReportSource = rep;

FG>[/c#]
FG>ЗЫ: да заголовки поменяються во всех диаграммах
Да. Так получается. Только есть трабла следующего характера:
crystalReportViewer1. — должен быть инстансом ActiveX контрола, а то .net-вский вариант Report не кушает

ApplicationClass app = new ApplicationClass();
            Report rep;
            rep = app.OpenReport(@"Report1.rpt",0);            
            rep.Database.SetDataSource(dataSet11.election, 3, 1);                
            axCRViewer1.ReportSource = rep;
            axCRViewer1.CtlRefresh();
            axCRViewer1.ViewReport();


Но когда я использую ActiveX, он все время ругается
"Query engine error: This operation is not valid for an closed connection"
К чему бы это?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.