Exemplo n.º 1
0
 /// <summary>
 /// 初始化创建单元数据集
 /// </summary>
 /// <param name="unitItem">单元实例</param>
 /// <param name="ps">传递的环境参数</param>
 /// <returns>单元的数据集</returns>
 public DataSet BuildDataset(UnitItem unitItem, NameObjectList ps)
 {
     DataSet ds = new DataSet(unitItem.UnitName);
     QueryDataRes query = new QueryDataRes(unitItem.DataSrcFile);
     QueryDataRes queryD = query;
     if (!string.IsNullOrEmpty(unitItem.DictColSrcFile) && unitItem.DictColSrcFile != unitItem.DataSrcFile)
         queryD = new QueryDataRes(unitItem.DictColSrcFile);
     foreach (WorkItem item in unitItem.WorkItemList)
     {
         if (string.IsNullOrEmpty(item.DataSrc))
             continue;
         //填充数据项
         DataTable tab = null;
         string[] psmacro = ParamManager.setMacroParam(MacroPmType.FW, item.InitFilter);
         if (string.IsNullOrEmpty(item.CountDataSrc))
         {
             if (!BindManager.regexSQL.IsMatch(item.DataSrc))
                 tab = query.getTable(item.DataSrc, ps, psmacro);
             else
                 tab = query.GetDataTableBySql(item.DataSrc);
         }
         else
         {
             string[] psString = ParamManager.setMacroParam(MacroPmType.FW, item.InitFilter);
             tab = query.getTable(item.CountDataSrc, ps, psmacro);
             if (null != tab && tab.Rows.Count > 0 && tab.Columns.Contains("记录数量"))
                 psString = ParamManager.setMacroParam(psString, MacroPmType.topnum, Convert.ToString(tab.Rows[0]["记录数量"]));
             tab = query.getTable(item.DataSrc, ps, psmacro);
         }
         if (null == tab) continue;
         //填充字典数据集
         foreach (DictColumn c in item.DictCol)
         {
             if (string.IsNullOrEmpty(c.DataSrc) || string.IsNullOrEmpty(c.ValueCol))
                 continue;
             if (!tab.Columns.Contains(c.ColumnName) || ds.Tables.Contains(c.DataSrc))
                 continue;
             if (!BindManager.regexSQL.IsMatch(c.DataSrc))
                 queryD.FillDataSet(c.DataSrc, ps, ds);
             else
             {
                 DataTable tabtemp = queryD.GetDataTableBySql(c.DataSrc);
                 tabtemp.TableName = c.ColumnName;
                 ds.Tables.Add(tabtemp);
             }
         }
         ds.Tables.Add(tab);
         BindManager.setTablepro(tab, item);
     }
     return ds;
 }