/// <summary> /// Common procedure to retrieve a parameter of any type; will return a TVariant object /// </summary> /// <returns>void</returns> public TVariant Get(String parameterId, int column, int depth, eParameterFit exact) { TParameter element = GetParameter(parameterId, column, depth, exact); if (element != null) { return(element.value); } return(new TVariant()); }
/// <summary> /// Get the value of a parameter /// </summary> /// <param name="parameterId"></param> /// <param name="column"></param> /// <param name="depth"></param> /// <param name="exact"></param> /// <returns></returns> protected string Get(String parameterId, int column, int depth, eParameterFit exact) { string ReturnValue; ReturnValue = FParameters.Get(parameterId, column, depth, exact).ToString(); if (ReturnValue == "NOTFOUND") { ReturnValue = ""; } return(ReturnValue); }
/// <summary> /// Remove a variable; it will not exist anymore /// /// </summary> /// <returns>void</returns> public void RemoveVariable(String AParameterId, int AColumn, int ADepth, eParameterFit AExact) { TParameter element; element = GetParameter(AParameterId, AColumn, ADepth, AExact); while (element != null) { Fparameters.Remove(element); element = GetParameter(AParameterId, AColumn, ADepth, AExact); } }
/// <summary> /// get an untyped reference to an object of TRptGrpValue /// </summary> /// <returns>an untyped reference to an object of TRptGrpValue /// </returns> public System.Object GetGrpValue(String parameterId, int column, int depth, eParameterFit exact) { System.Object ReturnValue; TParameter element; ReturnValue = null; element = GetParameter(parameterId, column, depth, exact); if ((element != null) && (element.pRptGroup != null)) { ReturnValue = element.pRptGroup; } return(ReturnValue); }
/// <summary> /// Test if a value other than NOTFOUND would be returned /// </summary> /// <param name="parameterId"></param> /// <param name="column"></param> /// <param name="depth"></param> /// <param name="exact">determines how strictly a match has to fit the request; can be eExact, eBestFit, eAllColumnFit, eBestFitEvenLowerLevel</param> /// <returns>true if the parameter exists in the current collection /// </returns> public Boolean Exists(String parameterId, int column, int depth, eParameterFit exact) { Boolean ReturnValue; TParameter element; ReturnValue = false; element = GetParameter(parameterId, column, depth, exact); if (element != null) { ReturnValue = ((!element.value.IsNil())); } return(ReturnValue); }
/// <summary> /// Procedure to copy all parameters of one column from another parameter list; /// The column is first emptied in this parameter list, before the copying takes place. /// /// </summary> /// <returns>void</returns> public void Copy(TParameterList AOtherList, int column, int depth, eParameterFit exact, int ADestColumn) { TParameter element; System.Int32 Counter; if (ADestColumn == -1) { ADestColumn = column; } // remove all parameters in column Counter = 0; while (Counter < Fparameters.Count) { element = (TParameter)Fparameters[Counter]; if (element.column == ADestColumn) { Fparameters.RemoveAt(Counter); } else { Counter = Counter + 1; } } // copy parameters from other list foreach (TParameter element2 in AOtherList.Fparameters) { if (element2.column == column) { Add(element2.name, element2.value, ADestColumn, element2.level, element2.subreport); } } }
/// <summary> /// Common procedure to retrieve a parameter of any type; will return a TParameter object /// /// </summary> /// <returns>void</returns> public TParameter GetParameter(String parameterId, int column, int depth, eParameterFit exact) { int subreport = -1; TParameter ReturnValue = null; TParameter columnFit = null; TParameter commonFit = null; TParameter allColumnFit = null; TParameter bestLevelFit = null; TParameter lowerLevelFit = null; TParameter anyFit = null; int closestLevel = -1; int lowerLevel = 20; if (parameterId != "CurrentSubReport") { subreport = GetOrDefault("CurrentSubReport", -1, new TVariant(-1)).ToInt(); } /* Perhaps I'll get more speed if I remove this.. * // just to be careful: if curly brackets were used by accident in the xml file, remove them * if (parameterId[0] == '{') * { * TLogging.Log( * "deprecated: " + parameterId + * "; make sure your report xml file is correct, you might be using a variable with brackets in a function call to exists or isnull"); * parameterId = parameterId.Substring(1, parameterId.Length - 2); * * if ((parameterId[0] == '{') || (parameterId[0] == '#')) * { * parameterId = parameterId.Substring(1, parameterId.Length - 2); * } * } */ foreach (TParameter element in Fparameters) { if (((element.subreport == subreport) || (element.subreport == -1)) && StringHelper.IsSame(element.name, parameterId)) { // is there an exact match? if ((element.level == depth) && (element.column == column)) { return(element); } // there is a global match if (((element.level == -1) || (element.level == -2)) && (element.column == -1)) { commonFit = element; } // there is a match for all data columns (ALLCOLUMNS) if ((element.level == depth) && (element.column == ReportingConsts.ALLCOLUMNS)) { allColumnFit = element; } // has the exact column and is valid for all lines (1) or (2) if (((element.level == -1) || (element.level == -2)) && (element.column == column)) { columnFit = element; } // has the exact column or an column = 1 and the next line above if (((element.column == -1) || (element.column == column)) && (element.level > closestLevel) && (element.level <= depth)) { bestLevelFit = element; closestLevel = element.level; } // has the exact column or an column = 1 and a lower line if (((element.column == -1) || (element.column == column)) && (element.level < lowerLevel) && (element.level > depth)) { lowerLevelFit = element; lowerLevel = element.level; } // we are looking for any occurrence if ((depth == -1) && (column == -1)) { anyFit = element; } } // if } // foreach if (exact == eParameterFit.eExact) { // no exact fitting element was found return(null); } if (exact == eParameterFit.eAllColumnFit) { if (allColumnFit != null) { ReturnValue = allColumnFit; } return(ReturnValue); } if (columnFit != null) { return(columnFit); } if (bestLevelFit != null) { return(bestLevelFit); } if (commonFit != null) { return(commonFit); } if ((lowerLevelFit != null) && (exact == eParameterFit.eBestFitEvenLowerLevel)) { return(lowerLevelFit); } if ((ReturnValue == null) && (exact == eParameterFit.eBestFit) && (anyFit != null)) { return(anyFit); } return(ReturnValue); }
/// <summary> /// Common procedure to retrieve a parameter of any type; will return a TParameter object /// /// </summary> /// <returns>void</returns> public TParameter GetParameter(String parameterId, int column = -1, int depth = -1, eParameterFit exact = eParameterFit.eBestFit) { TParameter ReturnValue = null; TParameter columnFit = null; TParameter commonFit = null; TParameter allColumnFit = null; TParameter bestLevelFit = null; TParameter lowerLevelFit = null; TParameter anyFit = null; int closestLevel = -1; int lowerLevel = 20; foreach (TParameter element in Fparameters) { if (StringHelper.IsSame(element.name, parameterId)) { // is there an exact match? if ((element.level == depth) && (element.column == column)) { return(element); } // there is a global match if (((element.level == -1) || (element.level == -2)) && (element.column == -1)) { commonFit = element; } // there is a match for all data columns (ALLCOLUMNS) if ((element.level == depth) && (element.column == TParameter.ALLCOLUMNS)) { allColumnFit = element; } // has the exact column and is valid for all lines (1) or (2) if (((element.level == -1) || (element.level == -2)) && (element.column == column)) { columnFit = element; } // has the exact column or an column = 1 and the next line above if (((element.column == -1) || (element.column == column)) && (element.level > closestLevel) && (element.level <= depth)) { bestLevelFit = element; closestLevel = element.level; } // has the exact column or an column = 1 and a lower line if (((element.column == -1) || (element.column == column)) && (element.level < lowerLevel) && (element.level > depth)) { lowerLevelFit = element; lowerLevel = element.level; } // we are looking for any occurrence if ((depth == -1) && (column == -1)) { anyFit = element; } } // if } // foreach if (exact == eParameterFit.eExact) { // no exact fitting element was found return(null); } if (exact == eParameterFit.eAllColumnFit) { if (allColumnFit != null) { ReturnValue = allColumnFit; } return(ReturnValue); } if (columnFit != null) { return(columnFit); } if (bestLevelFit != null) { return(bestLevelFit); } if (commonFit != null) { return(commonFit); } if ((lowerLevelFit != null) && (exact == eParameterFit.eBestFitEvenLowerLevel)) { return(lowerLevelFit); } if ((ReturnValue == null) && (exact == eParameterFit.eBestFit) && (anyFit != null)) { return(anyFit); } return(ReturnValue); }
/// <summary> /// Common procedure to retrieve a parameter of any type; will return a TParameter object /// /// </summary> /// <returns>void</returns> public TParameter GetParameter(String parameterId, int column, int depth, eParameterFit exact) { int subreport = -1; TParameter ReturnValue = null; TParameter columnFit = null; TParameter commonFit = null; TParameter allColumnFit = null; TParameter bestLevelFit = null; TParameter lowerLevelFit = null; TParameter anyFit = null; int closestLevel = -1; int lowerLevel = 20; if (parameterId != "CurrentSubReport") { subreport = GetOrDefault("CurrentSubReport", -1, new TVariant(-1)).ToInt(); } /* Perhaps I'll get more speed if I remove this.. * // just to be careful: if curly brackets were used by accident in the xml file, remove them * if (parameterId[0] == '{') * { * TLogging.Log( * "deprecated: " + parameterId + * "; make sure your report xml file is correct, you might be using a variable with brackets in a function call to exists or isnull"); * parameterId = parameterId.Substring(1, parameterId.Length - 2); * * if ((parameterId[0] == '{') || (parameterId[0] == '#')) * { * parameterId = parameterId.Substring(1, parameterId.Length - 2); * } * } */ foreach (TParameter element in Fparameters) { if (((element.subreport == subreport) || (element.subreport == -1)) && StringHelper.IsSame(element.name, parameterId)) { // is there an exact match? if ((element.level == depth) && (element.column == column)) { return element; } // there is a global match if (((element.level == -1) || (element.level == -2)) && (element.column == -1)) { commonFit = element; } // there is a match for all data columns (ALLCOLUMNS) if ((element.level == depth) && (element.column == ReportingConsts.ALLCOLUMNS)) { allColumnFit = element; } // has the exact column and is valid for all lines (1) or (2) if (((element.level == -1) || (element.level == -2)) && (element.column == column)) { columnFit = element; } // has the exact column or an column = 1 and the next line above if (((element.column == -1) || (element.column == column)) && (element.level > closestLevel) && (element.level <= depth)) { bestLevelFit = element; closestLevel = element.level; } // has the exact column or an column = 1 and a lower line if (((element.column == -1) || (element.column == column)) && (element.level < lowerLevel) && (element.level > depth)) { lowerLevelFit = element; lowerLevel = element.level; } // we are looking for any occurance if ((depth == -1) && (column == -1)) { anyFit = element; } } // if } // foreach if (exact == eParameterFit.eExact) { // no exact fitting element was found return null; } if (exact == eParameterFit.eAllColumnFit) { if (allColumnFit != null) { ReturnValue = allColumnFit; } return ReturnValue; } if (columnFit != null) { return columnFit; } if (bestLevelFit != null) { return bestLevelFit; } if (commonFit != null) { return commonFit; } if ((lowerLevelFit != null) && (exact == eParameterFit.eBestFitEvenLowerLevel)) { return lowerLevelFit; } if ((ReturnValue == null) && (exact == eParameterFit.eBestFit) && (anyFit != null)) { return anyFit; } return ReturnValue; }
/// <summary> /// get an untyped reference to an object of TRptGrpValue /// </summary> /// <returns>an untyped reference to an object of TRptGrpValue /// </returns> public System.Object GetGrpValue(String parameterId, int column, int depth, eParameterFit exact) { System.Object ReturnValue; TParameter element; ReturnValue = null; element = GetParameter(parameterId, column, depth, exact); if ((element != null) && (element.pRptGroup != null)) { ReturnValue = element.pRptGroup; } return ReturnValue; }
/// <summary> /// Common procedure to retrieve a parameter of any type; will return a TVariant object /// </summary> /// <returns>void</returns> public TVariant Get(String parameterId, int column, int depth, eParameterFit exact) { TParameter element = GetParameter(parameterId, column, depth, exact); if (element != null) { return element.value; } return new TVariant(); }
/// <summary> /// Test if a value other than NOTFOUND would be returned /// </summary> /// <param name="parameterId"></param> /// <param name="column"></param> /// <param name="depth"></param> /// <param name="exact">determines how strictly a match has to fit the request; can be eExact, eBestFit, eAllColumnFit, eBestFitEvenLowerLevel</param> /// <returns>true if the parameter exists in the current collection /// </returns> public Boolean Exists(String parameterId, int column, int depth, eParameterFit exact) { Boolean ReturnValue; TParameter element; ReturnValue = false; element = GetParameter(parameterId, column, depth, exact); if (element != null) { ReturnValue = ((!element.value.IsNil())); } return ReturnValue; }
/// <summary> /// Remove a variable; it will not exist anymore /// /// </summary> /// <returns>void</returns> public void RemoveVariable(String AParameterId, int AColumn, int ADepth, eParameterFit AExact) { TParameter element; element = GetParameter(AParameterId, AColumn, ADepth, AExact); while (element != null) { Fparameters.Remove(element); element = GetParameter(AParameterId, AColumn, ADepth, AExact); } }
/// <summary> /// Procedure to copy all parameters of one column from another parameter list; /// The column is first emptied in this parameter list, before the copying takes place. /// /// </summary> /// <returns>void</returns> public void Copy(TParameterList AOtherList, int column, int depth, eParameterFit exact, int ADestColumn) { TParameter element; System.Int32 Counter; if (ADestColumn == -1) { ADestColumn = column; } // remove all parameters in column Counter = 0; while (Counter < Fparameters.Count) { element = (TParameter)Fparameters[Counter]; if (element.column == ADestColumn) { Fparameters.RemoveAt(Counter); } else { Counter = Counter + 1; } } // copy parameters from other list foreach (TParameter element2 in AOtherList.Fparameters) { if (element2.column == column) { Add(element2.name, element2.value, ADestColumn, element2.level, element2.subreport); } } }
/// <summary> /// Get the value of a parameter /// </summary> /// <param name="parameterId"></param> /// <param name="column"></param> /// <param name="depth"></param> /// <param name="exact"></param> /// <returns></returns> protected string Get(String parameterId, int column, int depth, eParameterFit exact) { string ReturnValue; ReturnValue = FParameters.Get(parameterId, column, depth, exact).ToString(); if (ReturnValue == "NOTFOUND") { ReturnValue = ""; } return ReturnValue; }