Пример #1
0
        //Работа со справочными таблицами
        private bool TablContains(int numTabl, Moment mcode, Moment msub, int fieldNum)
        {
            bool e = true;

            if (!_calc.Project.Tabls.ContainsKey(numTabl))
            {
                e = false;
            }
            else
            {
                var       tabl = _calc.Project.Tabls[numTabl];
                TablParam p    = null;
                if (mcode.DataType.LessOrEquals(DataType.Integer))
                {
                    e &= tabl.ParamsNum.ContainsKey(mcode.Integer);
                    if (e)
                    {
                        p = tabl.ParamsNum[mcode.Integer];
                    }
                }
                else
                {
                    e &= tabl.ParamsCode.ContainsKey(mcode.String);
                    if (e)
                    {
                        p = tabl.ParamsCode[mcode.String];
                    }
                }
                if (e && msub != null)
                {
                    if (msub.DataType.LessOrEquals(DataType.Integer))
                    {
                        e &= p.ParamsNum.ContainsKey(msub.Integer);
                    }
                    else
                    {
                        e &= p.ParamsCode.ContainsKey(msub.String);
                    }
                    e &= tabl.SubFieldsCount > fieldNum;
                }
                else
                {
                    e &= tabl.FieldsCount > fieldNum;
                }
            }
            return(e);
        }
Пример #2
0
 //Обрабатывает все фунции GetTabl, GetTablName, GetSubTabl, GetSubTablName
 private void GetTabl(int numTabl, Moment mcode, Moment msub, int fieldNum, Moment res)
 {
     if (!_calc.Project.Tabls.ContainsKey(numTabl))
     {
         PutErr("Таблица " + numTabl + " не найдена", res);
     }
     else
     {
         var       tabl = _calc.Project.Tabls[numTabl];
         bool      e    = true;
         TablParam p    = null;
         if (mcode.DataType.LessOrEquals(DataType.Integer))
         {
             if (!tabl.ParamsNum.ContainsKey(mcode.Integer))
             {
                 e = false;
             }
             else
             {
                 p = tabl.ParamsNum[mcode.Integer];
             }
         }
         else
         {
             if (!tabl.ParamsCode.ContainsKey(mcode.String))
             {
                 e = false;
             }
             else
             {
                 p = tabl.ParamsCode[mcode.String];
             }
         }
         if (e && msub != null)
         {
             if (msub.DataType.LessOrEquals(DataType.Integer))
             {
                 if (!p.ParamsNum.ContainsKey(msub.Integer))
                 {
                     e = false;
                 }
                 else
                 {
                     p = p.ParamsNum[msub.Integer];
                 }
             }
             else
             {
                 if (!p.ParamsCode.ContainsKey(msub.String))
                 {
                     e = false;
                 }
                 else
                 {
                     p = p.ParamsCode[msub.String];
                 }
             }
         }
         e &= fieldNum >= -1;
         if (msub == null)
         {
             e &= tabl.FieldsCount > fieldNum;
         }
         else
         {
             e &= tabl.SubFieldsCount > fieldNum;
         }
         if (!e)
         {
             PutErr("Не найдено значение в таблице " + numTabl
                    + ", параметр " + mcode.String + (msub == null ? "" : ", подпараметр " + (msub.String ?? "")) + (fieldNum >= 0 ? ", колонка " + fieldNum : ""), res);
         }
         else
         {
             res.String = fieldNum == -1 ? p.Name : p.Values[fieldNum];
         }
     }
 }