Beispiel #1
0
        private bool OnInvoiceDetailSQLError(SqlException sqlerr, MDataSet.InvoiceDetailRow row)
        {
            decimal _oldQnt = row.Quantity;

            RefreshData(row.RemainsRow);
            // если нулевой остаток
            if (row.RemainsRow.QuantityRemains == 0)
            {
                MessageBox.Show("Уже нет товара на складе!");
                row.RejectChanges();
                return(true);
            }
            else
            { // уменьшить до кол-ва остатка и снова сохранить
                try
                {
                    row.ClearErrors();
                    row.Quantity = row.RemainsRow.QuantityRemains;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    row.RejectChanges();
                    return(false);
                }
                finally
                {
                    decimal ed = _oldQnt - row.Quantity;
                    MessageBox.Show("Не удалось выписать: " + ed.ToString());
                }
                return(true);
            }
        }
Beispiel #2
0
        private void onInvoiceDetailDBCError(DBConcurrencyException dbcx)
        {
            MDataSet.InvoiceDetailRow _invoiceDetailRow = dbcx.Row as MDataSet.InvoiceDetailRow;


            MDataSet.InvoiceDetailDataTable _invoiceDetailDataTable = new MDataSet.InvoiceDetailDataTable();

            this.invoiceDetailTableAdapter.FillById(_invoiceDetailDataTable, (dbcx.Row as MDataSet.InvoiceDetailRow).ID);

            MDataSet.InvoiceDetailRow rowInDB = (_invoiceDetailDataTable.Rows[0] as MDataSet.InvoiceDetailRow);

            /*Сравнить изменения*/

            if ((Convert.ToDecimal(_invoiceDetailRow["Quantity", DataRowVersion.Original]) != rowInDB.Quantity) |
                (Convert.ToDecimal(_invoiceDetailRow["PriceRetailNDS", DataRowVersion.Original]) != rowInDB.PriceRetailNDS))
            {
                /*** Отменить **/
                string strInDB = "Запись была изменена пользователем: \n";

                string strMessage;

                strInDB += rowInDB.AuthorLastModif.ToString() + "\n";

                strMessage = strInDB + "\n";
                MessageBox.Show(strMessage + "Изменения отменены ", "Ошибка совмесного доступа",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);
                this.mDataSet.InvoiceDetail.Merge(_invoiceDetailDataTable);
            }
            else
            {
                _invoiceDetailRow.ClearErrors();
                this.mDataSet.InvoiceDetail.Merge(_invoiceDetailDataTable, true);
            }
        }
Beispiel #3
0
        private void onInvoiceDetailDBCError(DBConcurrencyException dbcx)
        {
            MDataSet.InvoiceDetailRow _invoiceDetailRow = dbcx.Row as MDataSet.InvoiceDetailRow;

            MDataSet.InvoiceDetailDataTable _invoiceDetailDataTable = new MDataSet.InvoiceDetailDataTable();
            if (_invoiceDetailRow.RowState == DataRowState.Deleted)
            {
                int _id = Convert.ToInt32(_invoiceDetailRow["ID", DataRowVersion.Original].ToString());

                this.invoiceDetailTableAdapter.FillById(_invoiceDetailDataTable, _id);
            }


            else
            {
                this.invoiceDetailTableAdapter.FillById(_invoiceDetailDataTable, (dbcx.Row as MDataSet.InvoiceDetailRow).ID);
            }


            { _invoiceDetailRow.ClearErrors();
              this.mDataSet.InvoiceDetail.Merge(_invoiceDetailDataTable, true); }

            MainForm.Log(" onInvoiceDetailDBCError " + "успешно");
        }