Example #1
0
        internal void SetRuntimeValue(Report rpt, object v)
        {
            if (this.MultiValue)
            {   // ok to only set one parameter of multiValue;  but we still save as MultiValue
                ArrayList ar;
                if (v is string)
                {   // when the value is a string we parse it looking for multiple arguments
                    ParameterLexer pl = new ParameterLexer(v as string);
                    ar = pl.Lex();
                }
                else if (v is ICollection)
                {   // when collection put it in local array
                    ar = new ArrayList(v as ICollection);
                }
                else
                {
                    ar = new ArrayList(1);
                    ar.Add(v);
                }

                SetRuntimeValues(rpt, ar);
                return;
            }

            object rtv;

            //Added from Forum, User: solidstore http://www.fyireporting.com/forum/viewtopic.php?t=905
            if (v is Guid)
            {
                v = ((Guid)v).ToString("B");
            }

            if (!AllowBlank && _dt == TypeCode.String && (string)v == "")
            {
                throw new ArgumentException(string.Format("Empty string isn't allowed for {0}.", Name.Nm));
            }
            try
            {
                if (v is String && _NumericType)
                {
                    v = ConvertStringToNumber((string)v);
                }
                rtv = Convert.ChangeType(v, _dt);
            }
            catch (Exception e)
            {
                // illegal parameter passed
                string err = "Illegal parameter value for '" + Name.Nm + "' provided.  Value =" + v.ToString();
                if (rpt == null)
                {
                    OwnerReport.rl.LogError(4, err);
                }
                else
                {
                    rpt.rl.LogError(4, err);
                }
                throw new ArgumentException(string.Format("Unable to convert '{0}' to {1} for {2}", v, _dt, Name.Nm), e);
            }
            rpt.Cache.AddReplace(this, "runtimevalue", rtv);
        }
Example #2
0
        /// <summary>
        /// Take a string and parse it into multiple values
        /// </summary>
        /// <param name="v"></param>
        /// <returns></returns>
        private ArrayList ParseValue(string v)
        {
            ParameterLexer pl = new ParameterLexer(v);

            return(pl.Lex());
        }