/// <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; }