public static int Get_ColNum(Cld_Module input, List<List<Cld_Module>> target) { for (int i = 0; i < target.Count; i++) { if (target[i].Contains(input)) { return i; } } return -1; }
/// <summary> /// 构造函数,从数据库中读取包含给定ControllerAddr,DocumentName,SheetName的Cld_Module的集合 /// </summary> /// <param name="conn">到数据库的连接</param> /// <param name="ControllerAddr">Controller Address</param> /// <param name="DocumentName">Document Name</param> /// <param name="SheetName">Sheet Name</param> /// <param name="metamodules">Meta_Modules</param> public Cld_ModuleS(OleDbConnection conn, string ControllerAddr, string DocumentName, string SheetName, Meta_ModuleS metamodules) { //进行必要的初始化 cld_modules = new Hashtable(); signals = new Signals(); cld_signals = new Cld_SignalS(); meta_modules = metamodules; this.ControllerAddr = ControllerAddr; this.DocumentName = DocumentName; this.SheetName = SheetName; //建立数据库连接 if (conn.State == ConnectionState.Closed) { try { conn.Open(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } //数据库操作字符串 string sql_string = "SELECT * FROM Cld_FCMaster WHERE ControllerAddress='" + ControllerAddr + "' AND DocumentName='" + DocumentName + "' AND SheetName='" + SheetName + "'"; OleDbDataAdapter Cld_FCMaster_Adapter = new OleDbDataAdapter(sql_string, conn); DataSet myDataSet = new DataSet(); Cld_FCMaster_Adapter.Fill(myDataSet, "Cld_FCMaster"); //处理CLD FCMaster表的每一行 for (int i = 0; i < myDataSet.Tables["Cld_FCMaster"].Rows.Count; i++) { Cld_Module cld_module_temp = new Cld_Module(); //处理相应的Cld_FCMaster表 cld_module_temp.ObjectID = myDataSet.Tables["Cld_FCMaster"].Rows[i]["ObjectID"].ToString(); cld_module_temp.ControllerAddress = myDataSet.Tables["Cld_FCMaster"].Rows[i]["ControllerAddress"].ToString(); cld_module_temp.DocumentName = myDataSet.Tables["Cld_FCMaster"].Rows[i]["DocumentName"].ToString(); cld_module_temp.SheetName = myDataSet.Tables["Cld_FCMaster"].Rows[i]["SheetName"].ToString(); cld_module_temp.AlgName = myDataSet.Tables["Cld_FCMaster"].Rows[i]["AlgName"].ToString(); cld_module_temp.AlgOrder = myDataSet.Tables["Cld_FCMaster"].Rows[i]["AlgOrder"].ToString(); cld_module_temp.FunctionName = myDataSet.Tables["Cld_FCMaster"].Rows[i]["FunctionName"].ToString(); cld_module_temp.X_Y = myDataSet.Tables["Cld_FCMaster"].Rows[i]["X_Y"].ToString(); cld_module_temp.SymbolName = myDataSet.Tables["Cld_FCMaster"].Rows[i]["SymbolName"].ToString(); cld_module_temp.DESCRP = myDataSet.Tables["Cld_FCMaster"].Rows[i]["DESCRP"].ToString(); cld_module_temp.PERIOD = myDataSet.Tables["Cld_FCMaster"].Rows[i]["PERIOD"].ToString(); cld_module_temp.PHASE = myDataSet.Tables["Cld_FCMaster"].Rows[i]["PHASE"].ToString(); cld_module_temp.LOOPID = myDataSet.Tables["Cld_FCMaster"].Rows[i]["LOOPID"].ToString(); //处理相应的Cld_FCDetail表 sql_string = "SELECT * FROM Cld_FCDetail WHERE ObjectID='" + cld_module_temp.ObjectID + "'"; OleDbDataAdapter Cld_FCDetail_Adapter = new OleDbDataAdapter(sql_string, conn); Cld_FCDetail_Adapter.Fill(myDataSet, "Cld_FCDetail"); for (int m = 0; m < myDataSet.Tables["Cld_FCDetail"].Rows.Count; m++) { Cld_Module_Pin cld_module_pin_temp = new Cld_Module_Pin(); //对Cld_Module_Pin对象进行数据的填充 cld_module_pin_temp.ObjectID = myDataSet.Tables["Cld_FCDetail"].Rows[m]["ObjectID"].ToString(); cld_module_pin_temp.PinName = myDataSet.Tables["Cld_FCDetail"].Rows[m]["PinName"].ToString(); cld_module_pin_temp.PinValue = myDataSet.Tables["Cld_FCDetail"].Rows[m]["PinValue"].ToString(); cld_module_pin_temp.NetworkID = myDataSet.Tables["Cld_FCDetail"].Rows[m]["NetworkID"].ToString(); cld_module_pin_temp.IsHistory = (bool)(myDataSet.Tables["Cld_FCDetail"].Rows[m]["IsHistory"]); cld_module_pin_temp.Point = myDataSet.Tables["Cld_FCDetail"].Rows[m]["Point"].ToString(); cld_module_temp.Pins[cld_module_pin_temp.PinName] = cld_module_pin_temp; if (metamodules.Pin_Type(cld_module_temp.FunctionName, cld_module_pin_temp.PinName).Equals("Input")) { cld_module_pin_temp.PinType = "Input"; cld_module_temp.PinType[cld_module_pin_temp.PinName] = "Input"; cld_module_temp.Input_Pin[cld_module_pin_temp.PinName] = cld_module_pin_temp; } else if (metamodules.Pin_Type(cld_module_temp.FunctionName, cld_module_pin_temp.PinName).Equals("Output")) { cld_module_pin_temp.PinType = "Output"; cld_module_temp.PinType[cld_module_pin_temp.PinName] = "Output"; cld_module_temp.Out_Pin[cld_module_pin_temp.PinName] = cld_module_pin_temp; } else if (metamodules.Pin_Type(cld_module_temp.FunctionName, cld_module_pin_temp.PinName).Equals("Constant")) { cld_module_temp.PinType[cld_module_pin_temp.PinName] = "Constant"; cld_module_pin_temp.PinType = "Constant"; //cld_module_temp.Constant_Pin.Add(cld_module_pin_temp); cld_module_temp.Constant_Pin[cld_module_pin_temp.PinName] = cld_module_pin_temp; } else if (metamodules.Pin_Type(cld_module_temp.FunctionName, cld_module_pin_temp.PinName).Equals("Internal")) { cld_module_pin_temp.PinType = "Internal"; cld_module_temp.PinType[cld_module_pin_temp.PinName] = "Internal"; //cld_module_temp.Internal_Pin.Add(cld_module_pin_temp); cld_module_temp.Internal_Pin[cld_module_pin_temp.PinName] = cld_module_pin_temp; } else { //没有这种类型的引脚,因该是数据库有问题 cld_module_temp.PinType[cld_module_pin_temp.PinName] = ""; cld_module_pin_temp.PinType = ""; } } myDataSet.Tables["Cld_FCDetail"].Clear(); cld_modules[cld_module_temp.ObjectID] = cld_module_temp; } //读取数据完毕 myDataSet.Dispose(); Cld_FCMaster_Adapter.Dispose(); conn.Close(); }