RegisterData empty?
Hi all,
I'm trying to create a report with a licensed version of FastReport.NET.
But even a simple 'RegisterData' isn't working.
The report used is an empty report, I see the newly 'created' datasources in the report designer but they remain empty.
:(
What am I missing here? Many thanks for the help
Comments
What are you hoping to see?
everything looks good
I share with you this sample code for generate PDF Report with .Net.
I hope this code can help you.
private static void GeneratePDFReport(int invoiceIndex)
{
// PDF Result
PdfSharp.Pdf.PdfDocument pdfFull = new PdfSharp.Pdf.PdfDocument();
// Fast Report Object
Report fastReportObject = new Report();
// Dataset Object Data (Empty)
DataSet dataSetschema = new DataSet();
//Source tables and columns
XmlSchemaSet schemaSet = new XmlSchemaSet();
XmlTextReader reader = new XmlTextReader("InvoiceSchema.xsd");
var invoiceSchema = XmlSchema.Read(reader, null);
schemaSet.Add(invoiceSchema);
schemaSet.Compile();
dataSetschema = ToDataSet(schemaSet);
// XML Data to fill data source
XDocument xdoc = XDocument.Load($"invoice{invoiceIndex}.xml");
// FILL DATASOURCE with XML data
dataSetschema.ReadXml(new MemoryStream(Encoding.UTF8.GetBytes(xdoc.ToString())), XmlReadMode.ReadSchema);
// Load FRX
fastReportObject.Load("FRX_Design.frx");
//Register DATA
fastReportObject.RegisterData(dataSetschema);
// Generate Report
fastReportObject.Prepare();
//Export repor to PDF
var exportpdf = new PDFExport();
exportpdf.ShowProgress = false;
exportpdf.Compressed = true;
exportpdf.Background = false;
exportpdf.TextInCurves = false;
exportpdf.PrintOptimized = true;
exportpdf.ImagesOriginalResolution = false;
exportpdf.ColorSpace = PDFExport.PdfColorSpace.RGB;
exportpdf.JpegCompression = true;
//exportpdf.EmbeddingFonts = false;
var resultFile = new MemoryStream();
fastReportObject.Export(exportpdf, resultFile);
// This step is not strictly necessary // with de PDF Export you can Save de PDF File
PdfSharp.Pdf.PdfDocument one = PdfReader.Open(resultFile, PdfDocumentOpenMode.Import);
for (int i = 0; i < one.PageCount; i++)
{
var page = one.Pages[i];
pdfFull.AddPage(page);
}
// Save if it is necesary
//pdfFull.Save($"invoice{DateTime.Now.ToString("yyyyMMddHHmmssFFFFFF")}.pdf");
}
Best Regards
Jai
Hi Jai,
Thanks for you example, but in this example you create an XML file first?
Isn't there a possibility to just pass the data from an object?
Kind Regards,
Gregory
Yes, I never use an object like a data source but Yes! it is possible.
You can use Json data like a source, an use Newtonsoft to convert object to Json. Another option is fill data set from the object and then use dataset like a data source.
and sorry, I can´t help more.
Send me a message.
F.A.C.E.B.O.O.K jairo.hernandez.9256
Alias José Hernández.
Found a solution:
Used the same code, but instead of a List<> use a 'DataTable' and it's working now.
@jerezkyo ; thanks for the input, no doubt this will be usefull for future projects.
Kind regards,
Gregory
👍️