Discussion:
Problem reporting in Intraweb .Net aspx assembly
(too old to reply)
clacke
2007-02-16 08:17:53 UTC
Permalink
Sorry for crosspost from thirdpartytool.general but there was asked for a
rave report replacement.
Because I received a support message (thanks Thomas Pfister!), I put here
hoping it's useful to all users of this newsgroup.

Problem:
Need to produce a pdf report with Rave 6.5.2 in BDS 2006 within an Intraweb
8.0.23 .NET aspx/assembly application.
Following tips on Nevrona Design site (working in Intraweb x win32
applications), Rave shows setup form ON THE SERVER SIDE (yes, I setted
RvSystem.SystemSetups := tmpRvs.SystemSetups - [ssAllowSetup];) so browser
client seems hang up.
Next, when intraweb application calls RvProject.ExecuteReport('myReport');
it obtains a "Object reference not set to an instance of an object".

To reproduce this problem you can create a new Intraweb application for
.Net, add a TRvProject, a TRvSystem, create a new rav file from within Rave
and invoke it. If you don't want put visual components on the forms, you can
write as follows:

procedure TIWUserSession.CreatePDF(FileName: string);
var
tmpRvp: TRvProject;
tmpRvs: TRvSystem;
tmpRPdf: TRvRenderPDF;
begin
try
tmpRvp := TRvProject.Create(Self);
tmpRvs := TRvSystem.Create(Self);
tmpRPdf := TRvRenderPDF.Create(Self);
tmpRvp.Engine := tmpRvs;
tmpRvp.ProjectFile := WebApplication.ApplicationPath +
'\project1.rav';
tmpRvs.DefaultDest := rdFile;
tmpRvs.DoNativeOutput := false;
tmpRvs.RenderObject := tmpRPdf;
tmpRvs.OutputFileName := FileName;
tmpRvs.SystemSetups := tmpRvs.SystemSetups - [ssAllowSetup];
tmpRvs.SystemOptions := [];
tmpRvp.Open;
tmpRvp.ExecuteReport('Report2');
tmpRvp.Close;
finally
tmpRvp.Free;
tmpRvs.Free;
tmpRPdf.Free;
end;

Any suggestion or help will be greately appreciated.
Thanks in advance.

clacke
clacke
2007-02-20 12:10:35 UTC
Permalink
I tried from a traditional ASPX web application too obtaining this error:

System.NullReferenceException: Object reference not set to an instance of an
object

Error happens on ExecuteReport('MyReport') call and the stack trace is:
[NullReferenceException: Object reference not set to an instance of an
object.]
System.Runtime.InteropServices.Marshal.WriteInt32(IntPtr ptr, Int32 ofs,
Int32 val) +0
System.Runtime.InteropServices.Marshal.WriteInt32(IntPtr ptr, Int32 val)
+79
Nevrona.Rave.TRaveDataSystem.WriteInt(Int32 Value)
Nevrona.Rave.TRaveDataSystem.CallEvent(Int32 EventType,
TRaveDataConnection DataCon)
Nevrona.Rave.TRaveDataView.Open()
Nevrona.Rave.TRaveBaseDataView.GetData(Int32 EventType)
Nevrona.Rave.TRaveBaseDataView.First()
Nevrona.Rave.Units.RvData.DataViewFirst(TRaveBaseDataView DataView,
String DetailKey, TRaveBaseDataView MasterDataView, String MasterKey, String
SortKey)
Nevrona.Rave.TRaveDataBand.First()
***@43RvCsRpt$PrintAll$PrintBodyInner($Unnamed22&
$frame_TRaveIterateBand.PrintAll, TRaveIterateBand Self, Int32 MinRows,
Boolean DoSave)
***@53RvCsRpt$PrintAll$PrintBody($Unnamed22&
$frame_TRaveIterateBand.PrintAll, TRaveIterateBand Self)
Nevrona.Rave.TRaveIterateBand.PrintAll(TBaseReport Report)
Nevrona.Rave.TRaveRegion.PrintBands(TBaseReport Report, TRaveIterateBand
ControllerBand, TBandPrintLoc APrintLoc)
Nevrona.Rave.TRaveRegion.PrintAll(TBaseReport Report)
Nevrona.Rave.TRavePage.PrintAll(TBaseReport Report)
Nevrona.Rave.Units.RvClass.PrintAllCaller(TRaveComponent Component,
TBaseReport Report)
Nevrona.Rave.TRaveReport.RSPrint(Object Sender)
Nevrona.Rave.TBaseReport.PrintEvent()
Nevrona.Rave.TBaseReport.Execute()
Nevrona.Rave.TRvSystem.GenerateReport(TForm& StatusForm)
Nevrona.Rave.TRvSystem.Execute()
Nevrona.Rave.TRaveReport.InternalExecute(TRpComponent Engine)
Nevrona.Rave.TRaveReport.Execute(TRpComponent Engine)
Nevrona.Rave.TRvProject.ExecuteReport(String ReportName)
UDm.TDataModule1.pdf(String NomeFile) in
c:\inetpub\wwwroot\WapRave\UDm.pas:43
WebForm1.TWebForm1.btStampaInProcess_Click(Object sender, EventArgs e) in
c:\inetpub\wwwroot\WapRave\WebForm1.pas:71
System.Web.UI.WebControls.Button.OnClick(EventArgs e)
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String
eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler
sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain()

Please help!

TIA
clacke

Loading...