コード例 #1
0
        void SetDataRow(
            DataRow dr,
            QueryTable qt,
            MetaBrokerStats mbs)
        {
            string txt;
            int    i1 = -1;

            bool searchStep    = (qt == null);
            bool retrievalStep = (qt != null);

            if (searchStep)             // search step
            {
                try
                {
                    string[] sa = mbs.Label.Split(':');

                    dr["MetatableLabel"] = sa[0];                    // search substep
                    dr["MetatableName"]  = sa[1];                    // one or more tables

                    int.TryParse(sa[2], out i1);
                    if (i1 >= 0)
                    {
                        dr["ColumnCount"] = i1;
                    }

                    int.TryParse(sa[3], out i1);
                    if (i1 >= 0)
                    {
                        dr["ColumnsSelected"] = i1;
                    }

                    int.TryParse(sa[4], out i1);
                    if (i1 >= 0)
                    {
                        dr["CriteriaCount"] = i1;
                    }

                    dr["BrokerCol"] = Lex.Replace(sa[5], "Broker", "");                     // remove any Broker suffix
                }

                catch (Exception ex) { return; }
            }

            else             // retrieval step
            {
                dr["MetatableLabel"] = qt.ActiveLabel;
                dr["MetatableName"]  = qt.MetaTable.Name;

                dr["ColumnCount"]     = qt.VisibleColumnCount;             // includes Selected_or_Criteria_or_GroupBy_or_Sorted
                dr["ColumnsSelected"] = qt.SelectedCount;
                dr["CriteriaCount"]   = qt.GetCriteriaCount(true, false);

                txt             = qt.MetaTable.MetaBrokerType.ToString();
                dr["BrokerCol"] = Lex.Replace(txt, "Broker", "");                 // remove any Broker suffix
            }

            if (mbs != null)
            {
                if (mbs.MultiPivot <= 0)
                {
                    dr["Multipivot"] = "";
                }
                else if (mbs.MultiPivot == 1)
                {
                    dr["Multipivot"] = "1";
                }
                else if (mbs.MultiPivot == 2)
                {
                    dr["Multipivot"] = "2";
                }
                else
                {
                    dr["Multipivot"] = "?";
                }

                if (mbs.MetatableRowCount >= 0)
                {
                    dr["NextRowCount"] = mbs.MetatableRowCount;
                    if (retrievalStep)
                    {
                        MetatableTotalRows += mbs.MetatableRowCount;
                    }
                }
                else
                {
                    dr["NextRowCount"] = DBNull.Value;
                }

                if (mbs.OracleRowCount >= 0)
                {
                    dr["ReadRowCount"] = mbs.OracleRowCount;
                    if (retrievalStep)
                    {
                        OracleTotalRows += mbs.OracleRowCount;
                    }
                }
                else
                {
                    dr["ReadRowCount"] = DBNull.Value;
                }

                if (mbs.Time > 0)
                {
                    dr["OracleTime"] = mbs.Time / 1000.0;                     // store fractional seconds as double
                }
                else
                {
                    dr["OracleTime"] = DBNull.Value;
                }
            }

            return;
        }