Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        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.");
        }
Beispiel #3
0
        /// <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.");
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
 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.");
 }
Beispiel #6
0
 /// <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);
 }
Beispiel #7
0
        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.");
        }
Beispiel #8
0
        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.");
        }
Beispiel #9
0
        /// <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);
        }
Beispiel #10
0
 internal abstract DataTotalLoss FindSimilarTotalLoss(DataTotalLoss curRec);
Beispiel #11
0
 internal abstract DataTotalLoss FindTotalLoss(DataTotalLoss curRec);
Beispiel #12
0
 internal abstract void UpdateTotalLossStruct(DataTotalLoss curRec);
Beispiel #13
0
 internal abstract void AddTotalLossStruct(DataTotalLoss curRec);
Beispiel #14
0
 internal void DeleteMicroBiology(DataTotalLoss curRec)
 {
     DeleteRecord(curRec, DataProvider.MicroBiologyTable);
     SendMicroBiologyChanged();
 }
Beispiel #15
0
 internal void DeleteTotalLoss(DataTotalLoss curRec)
 {
     DeleteRecord(curRec, DataProvider.DataTotalLossTable);
     SendTotalLossChanged();
 }
Beispiel #16
0
        /// <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);
        }