/// <summary> /// This stores the resultlist and parameterlist into a binary file (using the Datatable conversion); /// This can be used for debugging the printing, and saving time on calculating the report by reusing previous results /// /// </summary> /// <returns>void</returns> public void WriteBinaryFile(TParameterList AParameters, String AFilename) { DataTable dt = ToDataTable(AParameters); FileStream fs = new FileStream(AFilename, FileMode.Create); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(fs, dt); dt = AParameters.ToDataTable(); bf.Serialize(fs, dt); fs.Close(); }
/// <summary> /// Checks if there is already a field with the same name in the grid. If yes, ask /// if the field should be added again. /// </summary> /// <param name="AColumnParameters">List with the current columns</param> /// <param name="AColumnName">Name of the field</param> /// <param name="ASelectedColumn">Index of the column in the grid</param> /// <returns>True if the field should be added. Otherwise false</returns> public static bool CheckAddDoubleEntry(ref TParameterList AColumnParameters, String AColumnName, int ASelectedColumn) { bool ReturnValue = true; DataTable ColumnTable = AColumnParameters.ToDataTable(); String NewField = "eString:" + AColumnName; foreach (DataRow Row in ColumnTable.Rows) { if ((Row["value"].ToString() == NewField) && (((int)Row["column"]) != ASelectedColumn)) { if (MessageBox.Show("The column is already there.\nDo you want to add it anyway?", "Add field?", MessageBoxButtons.YesNo) == DialogResult.No) { ReturnValue = false; } break; } } return ReturnValue; }
/// <summary> /// calculate the report and save the result and returned parameters to file /// </summary> public static void CalculateReport(string AReportParameterXmlFile, TParameterList ASpecificParameters, int ALedgerNumber = -1) { // important: otherwise month names are in different language, etc Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB", false); TReportGeneratorUIConnector ReportGenerator = new TReportGeneratorUIConnector(); TParameterList Parameters = new TParameterList(); string resultFile = AReportParameterXmlFile.Replace(".xml", ".Results.xml"); string parameterFile = AReportParameterXmlFile.Replace(".xml", ".Parameters.xml"); Parameters.Load(AReportParameterXmlFile); if (ALedgerNumber != -1) { Parameters.Add("param_ledger_number_i", ALedgerNumber); } Parameters.Add(ASpecificParameters); ReportGenerator.Start(Parameters.ToDataTable()); while (!ReportGenerator.Progress.JobFinished) { Thread.Sleep(500); } Assert.IsTrue(ReportGenerator.GetSuccess(), "Report did not run successfully"); TResultList Results = new TResultList(); Results.LoadFromDataTable(ReportGenerator.GetResult()); Parameters.LoadFromDataTable(ReportGenerator.GetParameter()); if (!Parameters.Exists("ControlSource", ReportingConsts.HEADERPAGELEFT1, -1, eParameterFit.eBestFit)) { Parameters.Add("ControlSource", new TVariant("Left1"), ReportingConsts.HEADERPAGELEFT1); } if (!Parameters.Exists("ControlSource", ReportingConsts.HEADERPAGELEFT2, -1, eParameterFit.eBestFit)) { Parameters.Add("ControlSource", new TVariant("Left2"), ReportingConsts.HEADERPAGELEFT2); } Parameters.Save(parameterFile, false); Results.WriteCSV(Parameters, resultFile, ",", false, false); }