Example #1
0
        private void IngredientBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            //            VEDataSet.IngredientDataTable table = MyFunction.SaveCheck<VEDataSet.IngredientDataTable>(this, IngredientBindingSource, vEDataSet.Ingredient);
            if (!this.Validate())
            {
                MessageBox.Show("有資料錯誤, 請改好再存!");
                return;
            }
            IngredientBindingSource.EndEdit();     // 執行此行時,若無問題 RowState.Detached => RowState.Added
            var table = (MyIngredientTable)m_DataSet.Ingredient.GetChanges();

            if (table == null)
            {
                MessageBox.Show("沒有改動任何資料! 不用存");
                return;
            }
            if (table == null)
            {
                return;
            }
            MyFunction.SetGlobalFlag(GlobalFlag.basicDataModified);

            foreach (var r in table)
            {
                if (r.RowState != DataRowState.Deleted)
                {
                    r.BeginEdit();
                    //if (r.IsTitleCodeNull()) r.TitleCode = "";
                    //if (r.IsVendorIDNull()) r.VendorID = 0;
                    //if (r.IsCanPurchaseNull()) r.CanPurchase = true;
                    //if (r.IsClassNull()) r.Class = 0;
                    //if (r.IsCodeNull()) r.Code = 0;
                    //if (r.IsMinOrderNull()) r.MinOrder = "";
                    //if (r.IsNameNull()) r.Name = "";
                    //if (r.IsPriceNull()) r.Price = 0;
                    //if (r.IsSpecsNull()) r.Specs = "";
                    //if (r.IsUnitNull()) r.Unit = "";
                    //if (r.IsUnitWeightNull()) r.UnitWeight = 0;
                    r.LastUpdated = DateTime.Now;
                    r.EndEdit();
                }
            }
            try
            {
                m_DataSet.Ingredient.Merge(table);
                this.IngredientAdapter.Update(m_DataSet.Ingredient);
                m_DataSet.Ingredient.AcceptChanges();
            }
            catch (Exception ex)
            {
                MessageBox.Show("錯誤原因:" + ex.Message + "\r\n存檔發生錯誤,請關閉程式,重新登入!");
            }
        }
Example #2
0
        private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)
        {
//            MyFunction.AddNewItem(dgvIngredient, "columnIngredientID","IngredientID", vEDataSet.Ingredient);
            IngredientBindingSource.AddNew();
            int max          = (from ro in m_DataSet.Ingredient select ro.IngredientID).Max();
            int ingredientID = MyFunction.SetCellMaxNo("columnIngredientID", dgvIngredient, max);

            // 因為供應商資料沒有ValueMember啟始值,只Binding了SelectedValue
            // 所以後來 BindingSource.EndEdit時,無法成功==> RowState還是Detached,永遠無法改


            // 測試方案1:硬上,自己加.   EditBakeryProduct.cs的處理方式比較文明, 每個Field都在螢幕上填值
            //DataRowView rowView = (DataRowView)IngredientBindingSource.Current;
            //VEDataSet.IngredientRow row = (VEDataSet.IngredientRow)rowView.Row;
            //if (row.RowState == DataRowState.Detached)
            //    vEDataSet.Ingredient.Rows.Add(row);

            DataRowView rowView = (DataRowView)IngredientBindingSource.Current;
            var         row     = (MyIngredientRow)rowView.Row;

            row.CanPurchase = true;
        }
Example #3
0
        private void DeletetoolStripButton_Click(object sender, EventArgs e)
        {
            if (!this.Validate())
            {
                MessageBox.Show("有資料錯誤, 請改好再作刪除操作!");
                return;
            }
            this.IngredientBindingSource.EndEdit();
            string str          = this.IngredientIDTextBox.Text.Trim();
            int    ingredientID = 0;
            string name;

            try
            {
                ingredientID = Convert.ToInt32(str);
                name         = nameTextBox.Text.Trim();
            }
            catch
            {
                MessageBox.Show("要刪除的食材內碼必需是數字!");
                return;
            }
            string strCodeName = "食材 <" + ingredientID.ToString() + ">" + name;

            if (MessageBox.Show("能刪除的食材必需是本年度從來沒有進過貨的\r\n按'確定', 開始載入並檢查全年度進貨單!", "刪除" + strCodeName, MessageBoxButtons.OKCancel)
                != DialogResult.OK)
            {
                return;
            }
            if (!m_VoucherDetailLoaded)
            {
                try
                {
                    VoucherAdapter.Fill(m_DataSet.Voucher);
                    VoucherDetailAdapter.Fill(m_DataSet.VoucherDetail);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("載入客人進貨細項時,資料庫發生錯誤:" + ex.Message);
                    return;
                }
                m_VoucherDetailLoaded = true;
            }
            foreach (var row in m_DataSet.VoucherDetail)
            {
                if (row.IsIngredientIDNull())
                {
                    continue;
                }
                if (row.IngredientID == ingredientID)
                {
                    var voucher = row.VoucherRow;
                    MessageBox.Show("進貨單" + voucher.ID.ToString() + "  己經進過" + strCodeName + " 無法刪除");
                    return;
                }
            }

            if (MessageBox.Show(strCodeName + " 本年度沒有進過此貨,可以被刪除\r\n按'確定' 刪除", strCodeName, MessageBoxButtons.OKCancel) ==
                DialogResult.OK)
            {
                try
                {
                    IngredientBindingSource.RemoveCurrent();
                    IngredientAdapter.Update(m_DataSet.Ingredient);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("刪除" + strCodeName + "及存檔過程錯誤:" + ex.Message);
                    return;
                }
                MessageBox.Show("己刪除" + strCodeName + " 並存檔成功!");
                return;
            }
            MessageBox.Show("沒有刪除 " + strCodeName);
        }