Keep all report in one file

hii alex

as we know fr generates report code in xml and stores it in the Resx file but if i want to keep all FRX file in one file format of any kind and then i want to load FRX from that one file for each FRX file one by one how can i do that ??

example : RP1.frx; Rp2.frx, RP3.Frx = RP.xml

then load it separately after extracting particular FRX file from xml file i.e. Report1.load(RP.RP1.frx)

or some other way like this hope u understood wht i mean ??


with regards

Comments

  • edited 3:02PM
    Hello,

    Please look at the Demos\C#\CustomOpenSaveDialogs. This demo uses DataSet that stores report files.
  • edited 3:02PM
    amazing alex ur support #1 [img]style_emoticons/<#EMO_DIR#>/wink.gif" style="vertical-align:middle" emoid=";)" border="0" alt="wink.gif" /> just whtever u imaging Fr will Complete that huh i have one question now i understood from this how to save in a XML file just i need a simple code that i have a Report conrol on my form through code how can i load specific reports from the Database.xml ??? without opening custom open Dialog?? and i dont want it to load in designer i need that in preview with regards k[/img]
  • edited 3:02PM
    Here is the code, I hope you will figure it out.
        private DataSet FReportsDs;
    
        private DataTable ReportsTable
        {
          get { return FReportsDs.Tables[0]; }
        }
        
        private void InitializeDatabase()
        {
          FReportsDs = new DataSet();
          FReportsDs.ReadXml(Config.ApplicationFolder + @"..\..\database.xml");
        }
    
        private void FinalizeDatabase()
        {
          FReportsDs.WriteXml(Config.ApplicationFolder + @"..\..\database.xml", XmlWriteMode.WriteSchema);
        }
    
        private void OpenReport(Report report, string reportName)
        {
          // find the datarow with specified ReportName
          foreach (DataRow row in ReportsTable.Rows)
          {
            if ((string)row["ReportName"] == reportName)
            {
              // load the report from a stream contained in the "ReportStream" datacolumn
              byte[] reportBytes = (byte[])row["ReportStream"];
              using (MemoryStream stream = new MemoryStream(reportBytes))
              {
                report.Load(stream);
              }
              return;
            }
          }
        }
    
        private void SaveReport(Report report, string reportName)
        {
          // find the datarow with specified ReportName
          DataRow reportRow = null;
    
          foreach (DataRow row in ReportsTable.Rows)
          {
            if ((string)row["ReportName"] == reportName)
            {
              reportRow = row;
              break;
            }
          }
    
          // no existing row found, append new one
          if (reportRow == null)
          {
            reportRow = ReportsTable.NewRow();
            ReportsTable.Rows.Add(reportRow);
          }
    
          // save the report to a stream, then put byte[] array to the datarow
          using (MemoryStream stream = new MemoryStream())
          {
            report.Save(stream);
    
            reportRow["ReportName"] = reportName;
            reportRow["ReportStream"] = stream.ToArray();
          }
        }
    

Leave a Comment