/// <summary> /// загрузка из файла старого формата /// </summary> /// <param name="curnode"></param> /// <param name="par"></param> /// <param name="curVer"></param> /// <returns></returns> private static DataRecept LoadFromXmlVer0(XmlNode curnode, DataBase par, ReceptVersion curVer) { DataRecept curRec = new DataRecept(par); curRec.BeginUpdate(); XmlNode rootNode = curnode.SelectSingleNode("recept"); foreach (XmlNode props in rootNode.ChildNodes) { switch (props.Name) { case "name": curRec.Name = props.InnerText; break; case "number": curRec.Id = int.Parse(props.InnerText, CultureInfo.CurrentCulture); break; case "water": curRec._water = Convert.ToDecimal(props.InnerText, CultureInfo.CurrentCulture); break; case "deflect": { curRec._waterPlus = Convert.ToDecimal(props.InnerText, CultureInfo.CurrentCulture); curRec._waterMinus = curRec._waterPlus; break; } case "description": curRec._design = props.InnerText; break; case "poteri": curRec._totalLoss = DataTotalLoss.LoadFromXml(props, curRec, curVer); break; case "component": curRec.Components.Add(DataRaw.LoadOneFromXml(props, curRec, curVer)); break; } } curRec.IsChanged = false; curRec.EndUpdate(false); return(curRec); }
internal override DataTotalLoss FindSimilarTotalLoss(DataTotalLoss curRec) { string sqlStr = "SELECT id FROM totalLoss WHERE name=?"; OdbcCommand cmd = new OdbcCommand(sqlStr, this.conn); cmd.Parameters.AddWithValue("@name", curRec.Name); DataTable totalLossTable; try { if (this.conn.State == ConnectionState.Closed) { this.conn.Open(); } this.adapter.SelectCommand = cmd; DataSet ds = new DataSet("Loss"); ds.Locale = CultureInfo.InvariantCulture; this.adapter.Fill(ds); totalLossTable = ds.Tables[0]; } catch (System.Exception e) { MessageBox.Show(e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, 0); return(null); } if (totalLossTable.Rows.Count == 0) { return(null); } return(this.GetTotalLoss(Convert.ToInt32(totalLossTable.Rows[0][0], CultureInfo.InvariantCulture))); //throw new Exception("The method or operation is not implemented."); }
/// <summary> /// Обновление потерь в БД /// </summary> /// <param name="curRec">обновляемая запись</param> internal override void UpdateTotalLossStruct(DataTotalLoss curRec) { string sqlStr = "UPDATE totalLoss SET name=?, comment=?, [number]=? WHERE id=?"; OdbcCommand cmd = new OdbcCommand(sqlStr, this.conn); cmd.Parameters.AddWithValue("@name", curRec.Name); cmd.Parameters.AddWithValue("@comment", curRec.Comment); cmd.Parameters.AddWithValue("@number", curRec.Quantity.ToString(CultureInfo.InvariantCulture)); cmd.Parameters.AddWithValue("@id", curRec.Id.ToString(CultureInfo.InvariantCulture)); int ret = 0; try { if (this.conn.State == ConnectionState.Closed) { this.conn.Open(); } this.adapter.UpdateCommand = cmd; ret = this.adapter.UpdateCommand.ExecuteNonQuery(); } catch (System.Exception e) { MessageBox.Show("Обновление записи неудачно:\n " + e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, 0); return; } if (ret != 1) { MessageBox.Show("Во время обновления произошла ошибка", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, 0); } curRec.IsChanged = false; SendTotalLossChanged(); //throw new Exception("The method or operation is not implemented."); }
internal static DataTotalLoss LoadFromXml(System.Xml.XmlNode props, DataBase par, ReceptVersion curVer) { DataTotalLoss curRec = new DataTotalLoss(par); curRec.BeginUpdate(); switch (curVer) { case ReceptVersion.Version0: foreach (XmlNode curNode in props.ChildNodes) { switch (curNode.Name) { case "number": curRec.Id = int.Parse(curNode.InnerText, CultureInfo.CurrentCulture); break; case "name": curRec.Name = curNode.InnerText; break; case "value": curRec.Quantity = Convert.ToDecimal(curNode.InnerText, CultureInfo.CurrentCulture); break; case "comment": curRec.Comment = curNode.InnerText; break; } } break; case ReceptVersion.Version1: curRec.Id = int.Parse(props.Attributes["id"].Value, CultureInfo.CurrentCulture); foreach (XmlNode curnode in props.ChildNodes) { switch (curnode.Name) { case "comment": curRec.Comment = curnode.InnerText; break; case "name": curRec.Name = curnode.InnerText; break; case "quantity": curRec.Quantity = Convert.ToDecimal(curnode.InnerText, CultureInfo.CurrentCulture); break; } } break; default: throw new NotImplementedException("Not implemented"); } curRec.IsChanged = false; curRec.EndUpdate(false); DataTotalLoss ret = Config.DP.FindTotalLoss(curRec); if (ret == null) { FormCompare frm = new FormCompare(curRec, Config.DP.FindSimilarTotalLoss(curRec), DataBaseType.TotalLossType); frm.ShowDialog(); ret = (DataTotalLoss)frm.UserRec; ret.IsChanged = true; } else { ret.IsChanged = false; } return(ret); }
internal void SetData(DataTotalLoss p) { _data = p; tbNum.Text = _data.Id.ToString(CultureInfo.CurrentCulture); tbName.Text = _data.Name; tbQuantity.Text = _data.Quantity.ToString(CultureInfo.CurrentCulture); tbComment.Text = _data.Comment; //throw new Exception("The method or operation is not implemented."); }
/// <summary> /// Получение порядкового номера потери по списку. /// </summary> /// <param name="totalLoss">Структура потерь.</param> /// <returns>Порядковый номер.</returns> internal int GetTotalLossNum(DataTotalLoss totalLoss) { for (int i = 0; i < TotalLossList.Count; i++) { if (TotalLossList[i].Id == totalLoss.Id) { return(i); } } return(-1); }
public object Clone() { DataTotalLoss ret = new DataTotalLoss(this.Parent); ret.BeginUpdate(); ret.Id = this.Id; ret.Name = this.Name; ret.Quantity = this.Quantity; ret.Comment = this.Comment; ret.IsChanged = this.IsChanged; ret.EndUpdate(false); return(ret); //throw new Exception("The method or operation is not implemented."); }
internal override DataTotalLoss FindTotalLoss(DataTotalLoss curRec) { // шаг 1. Берем компоненту с таким ID DataTotalLoss ret = this.GetTotalLoss(curRec.Id); if (ret.EqualVal(curRec)) { return(ret); } // шаг 2. Ищем такую компоненту в БД без учета ID string sqlStr = "SELECT id FROM totalLoss WHERE name=? AND comment=? AND [number]=?"; OdbcCommand cmd = new OdbcCommand(sqlStr, this.conn); cmd.Parameters.AddWithValue("@name", curRec.Name); cmd.Parameters.AddWithValue("@comment", curRec.Comment); cmd.Parameters.AddWithValue("@number", curRec.Quantity.ToString(CultureInfo.InvariantCulture)); DataTable totalLossTable; try { if (this.conn.State == ConnectionState.Closed) { this.conn.Open(); } this.adapter.SelectCommand = cmd; DataSet ds = new DataSet("Loss"); ds.Locale = CultureInfo.InvariantCulture; this.adapter.Fill(ds); totalLossTable = ds.Tables[0]; } catch (System.Exception e) { MessageBox.Show(e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, 0); return(null); } if (totalLossTable.Rows.Count == 0) { return(null); } return(this.GetTotalLoss(Convert.ToInt32(totalLossTable.Rows[0][0], CultureInfo.InvariantCulture))); //throw new Exception("The method or operation is not implemented."); }
/// <summary> /// получение таблицы потерь /// </summary> /// <returns>Массив записей потерь</returns> protected override SortableBindingList <DataTotalLoss> LoadTotalLossList() { DataTable totalLossTable = null; String sql = "SELECT * FROM totalLoss ORDER BY number ASC"; try { if (this.conn.State == ConnectionState.Closed) { this.conn.Open(); } this.adapter.SelectCommand = new OdbcCommand(sql, this.conn); DataSet ds = new DataSet("Loss"); ds.Locale = CultureInfo.InvariantCulture; this.adapter.Fill(ds); totalLossTable = ds.Tables[0]; } catch (OdbcException pe) { MessageBox.Show(pe.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, 0); return(null); } SortableBindingList <DataTotalLoss> ret = new SortableBindingList <DataTotalLoss>(); for (int i = 0; i < totalLossTable.Rows.Count; i++) { DataTotalLoss curData = new DataTotalLoss(null); curData.Id = Convert.ToInt32(totalLossTable.Rows[i]["id"], CultureInfo.InvariantCulture); curData.Name = totalLossTable.Rows[i]["name"].ToString(); curData.Quantity = Convert.ToDecimal(totalLossTable.Rows[i]["number"], CultureInfo.InvariantCulture); curData.Comment = totalLossTable.Rows[i]["comment"].ToString(); curData.IsChanged = false; ret.Add(curData); } return(ret); }
internal abstract DataTotalLoss FindSimilarTotalLoss(DataTotalLoss curRec);
internal abstract DataTotalLoss FindTotalLoss(DataTotalLoss curRec);
internal abstract void UpdateTotalLossStruct(DataTotalLoss curRec);
internal abstract void AddTotalLossStruct(DataTotalLoss curRec);
internal void DeleteMicroBiology(DataTotalLoss curRec) { DeleteRecord(curRec, DataProvider.MicroBiologyTable); SendMicroBiologyChanged(); }
internal void DeleteTotalLoss(DataTotalLoss curRec) { DeleteRecord(curRec, DataProvider.DataTotalLossTable); SendTotalLossChanged(); }
/// <summary> /// загрузка файла версии программы "2" /// </summary> /// <param name="curnode">узел дерева XML</param> /// <param name="par">родительский объект</param> /// <returns>структуру данных рецептуры</returns> private static DataRecept LoadFromXmlVer1(XmlNode curnode, DataBase par, ReceptVersion curVer) { DataRecept curRec = new DataRecept(par); curRec.BeginUpdate(); curRec.Id = int.Parse(curnode.Attributes["id"].Value, CultureInfo.CurrentCulture); foreach (XmlNode props in curnode.ChildNodes) { switch (props.Name) { case "color": curRec._color = props.InnerText; break; case "components": curRec.Components.AddRange(DataRaw.LoadManyFromXml(props, curRec, curVer)); break; case "consistence": curRec._consistence = props.InnerText; break; case "delivery": curRec._delivery = props.InnerText; break; case "design": curRec._design = props.InnerText; break; case "extView": curRec._extView = props.InnerText; break; case "totalLoss": curRec._totalLoss = DataTotalLoss.LoadFromXml(props, curRec, curVer); break; case "process": curRec._process = props.InnerText; break; case "sale": curRec._sale = props.InnerText; break; case "storage": curRec._storage = props.InnerText; break; case "taste": curRec._taste = props.InnerText; break; case "water": curRec._water = Convert.ToDecimal(props.InnerText, CultureInfo.CurrentCulture); break; case "waterPlus": curRec._waterPlus = Convert.ToDecimal(props.InnerText, CultureInfo.CurrentCulture); break; case "waterMinus": curRec._waterMinus = Convert.ToDecimal(props.InnerText, CultureInfo.CurrentCulture); break; case "acidity": curRec.myAcidity = Convert.ToDecimal(props.InnerText, CultureInfo.CurrentCulture); break; case "name": curRec.Name = props.InnerText; break; case "source": curRec._source = props.InnerText; break; case "normativDoc": curRec._normativDoc = props.InnerText; break; case "preview": curRec._preview = props.InnerText; break; case "quantity": curRec.Quantity = Convert.ToDecimal(props.InnerText, CultureInfo.CurrentCulture); break; case "totalExit": curRec.myTotalExit = Convert.ToDecimal(props.InnerText, CultureInfo.CurrentCulture); break; case "countExit": curRec.myCountExit = Convert.ToDecimal(props.InnerText, CultureInfo.CurrentCulture); break; case "microbiology": curRec.myMicroBiology = DataMicroBiology.LoadFromXml(props, curRec, curVer); break; case "isCalcExit": curRec.myIsCalcExit = Convert.ToBoolean(props.InnerText, CultureInfo.CurrentCulture); break; case "isCalcWater": curRec.myIsCalcWater = Convert.ToBoolean(props.InnerText, CultureInfo.CurrentCulture); break; case "isSetWater": curRec.myIsSetWater = Convert.ToBoolean(props.InnerText, CultureInfo.CurrentCulture); break; } } curRec.IsChanged = false; curRec.EndUpdate(false); return(curRec); }