/// <summary> /// Set the given DateTime control to be blank instead of /// DateTime.Now if the value is not specified. /// </summary> private void SetdtpControlManual(Ict.Petra.Client.CommonControls.TtxtPetraDate AControl, TVariant AValue) { if (AValue.IsZeroOrNull()) { AControl.Date = null; } }
/// <summary> /// todoComment /// </summary> /// <param name="precalculatedColumns"></param> /// <returns></returns> public TVariant Precalculate(TVariant[] precalculatedColumns) { String strCalculation; TRptDataCalcCalculation rptDataCalcCalculation; TRptCalculation rptCalculation; TVariant ReturnValue = new TVariant(); // calculation is used for display in the GUI, formula is used for adding ledgers if ((!GetParameters().Exists("param_calculation", column, Depth))) { return(ReturnValue); } if (GetParameters().Exists("param_formula", column, Depth)) { strCalculation = GetParameters().Get("param_formula", column, Depth).ToString(); } else { strCalculation = GetParameters().Get("param_calculation", column, Depth).ToString(); } rptCalculation = ReportStore.GetCalculation(CurrentReport, strCalculation); if (rptCalculation == null) { ReturnValue = EvaluateFunctionCalculation(strCalculation, precalculatedColumns); } else { rptDataCalcCalculation = new TRptDataCalcCalculation(this); if (!rptDataCalcCalculation.EvaluateCalculationFunction(rptCalculation.rptGrpQuery, ref precalculatedColumns, ref ReturnValue)) { ReturnValue = rptDataCalcCalculation.EvaluateCalculationAll(rptCalculation, null, rptCalculation.rptGrpTemplate, rptCalculation.rptGrpQuery).VariantValue; if (ReturnValue.IsZeroOrNull()) { ReturnValue.ApplyFormatString(rptCalculation.strReturnsFormat); return(ReturnValue); } // Removed some code from here due to Bug 3081 Reports crash if data contains the word SELECT // Even if there were a case for running SQL at this point, it wouldn't work anyway due // to the "" parameter in the call to DatabaseConnection.SelectDT(). } ReturnValue.ApplyFormatString(rptCalculation.strReturnsFormat); } return(ReturnValue); }
/// <summary> /// returns true if the value is zero or null /// </summary> public bool IsZeroOrNull() { if (IsVariant) { return(FVariantValue.IsZeroOrNull()); } TVariant v = new TVariant(this.FSQLStmt); return(v.IsZeroOrNull()); }
/// <summary> /// Reads the selected values from the controls, /// and stores them into the parameter system of FCalculator /// /// </summary> /// <param name="ACalculator"></param> /// <param name="AReportAction"></param> /// <returns>void</returns> public void ReadControls(TRptCalculator ACalculator, TReportActionEnum AReportAction) { System.Int32 MaxDisplayColumns; MaxDisplayColumns = TUC_ColumnHelper.ReadControls(ref FColumnParameters, ref ACalculator); FPetraUtilsObject.FMaxDisplayColumns = MaxDisplayColumns; for (int Counter = 0; Counter <= FColumnParameters.Get("MaxDisplayColumns").ToInt() - 1; Counter += 1) { String SelectedLedgers = FColumnParameters.Get("param_selected_ledgers", Counter).ToString(false); if (SelectedLedgers.Length != 0) { ACalculator.AddColumnFunctionLedgers(Counter, "add", StringHelper.StrSplit(SelectedLedgers, ","), FColumnParameters.Get("param_calculation", Counter).ToString(), FColumnParameters.Get("param_ytd", Counter).ToBool()); } } // set the global param_ytd; that is needed for formatting the header of some reports String ytdMixed = ""; for (int Counter = 0; Counter <= FColumnParameters.Get("MaxDisplayColumns").ToInt() - 1; ++Counter) { TVariant ParamYtd = FColumnParameters.Get("param_ytd", Counter); if (!ParamYtd.IsZeroOrNull()) { if (ytdMixed.Length == 0) { ytdMixed = ParamYtd.ToString(); } if (ParamYtd.ToString() != ytdMixed) { ytdMixed = "mixed"; } } } if (ytdMixed.Length != 0) { ACalculator.AddParameter("param_ytd", ytdMixed); } }
/// <summary> /// todoComment /// </summary> /// <param name="precalculatedColumns"></param> /// <returns></returns> public TVariant Precalculate(TVariant[] precalculatedColumns) { TVariant ReturnValue; String strCalculation; TRptDataCalcCalculation rptDataCalcCalculation; TRptCalculation rptCalculation; DataTable tab; ReturnValue = new TVariant(); // calculation is used for display in the GUI, formula is used for adding ledgers if ((!GetParameters().Exists("param_calculation", column, Depth))) { return(ReturnValue); } if (GetParameters().Exists("param_formula", column, Depth)) { strCalculation = GetParameters().Get("param_formula", column, Depth).ToString(); } else { strCalculation = GetParameters().Get("param_calculation", column, Depth).ToString(); } rptCalculation = ReportStore.GetCalculation(CurrentReport, strCalculation); if (rptCalculation == null) { ReturnValue = EvaluateFunctionCalculation(strCalculation, precalculatedColumns); } else { rptDataCalcCalculation = new TRptDataCalcCalculation(this); if (!rptDataCalcCalculation.EvaluateCalculationFunction(rptCalculation.rptGrpQuery, ref precalculatedColumns, ref ReturnValue)) { ReturnValue = rptDataCalcCalculation.EvaluateCalculationAll(rptCalculation, null, rptCalculation.rptGrpTemplate, rptCalculation.rptGrpQuery); if (ReturnValue.IsZeroOrNull()) { ReturnValue.ApplyFormatString(rptCalculation.strReturnsFormat); return(ReturnValue); } int SelectPos = ReturnValue.ToString().ToUpper().IndexOf("SELECT"); if ((SelectPos >= 0) && (SelectPos <= 3)) { // this is an sql statement and not a function result tab = DatabaseConnection.SelectDT(ReturnValue.ToString(), "", DatabaseConnection.Transaction); if (tab.Rows.Count > 0) { if (tab.Rows[0][0].GetType() == typeof(String)) { ReturnValue = new TVariant(Convert.ToString(tab.Rows[0][0])); } else { ReturnValue = new TVariant(tab.Rows[0][0]); } } } } ReturnValue.ApplyFormatString(rptCalculation.strReturnsFormat); } return(ReturnValue); }