public bool SaveToBase(MDataSet.InvoiceDetailRow sourceRow) { if (sourceRow.HasErrors) return false; if ((sourceRow.RowState == DataRowState.Detached)|(sourceRow.RowState==DataRowState.Unchanged)) return true; if (_changesInvoiceDetail.Count == 0) return true; MDataSet.InvoiceMasterRow _invoiceMasterRow; _invoiceMasterRow = sourceRow.InvoiceMasterRow; /*если после Update полей на сервере*/ if ((sourceRow.RowState == DataRowState.Modified)&sourceRow.HasVersion(DataRowVersion.Current)) { if (Convert.ToInt32(sourceRow["ID", DataRowVersion.Original]) != Convert.ToInt32(sourceRow["ID", DataRowVersion.Current])) return true; } //*Если удаление *// if (sourceRow.RowState==DataRowState.Deleted) _invoiceMasterRow = this.mDataSet.InvoiceMaster.FindByID(Convert.ToInt32((sourceRow as MDataSet.InvoiceDetailRow)["InvoiceMasterRef", DataRowVersion.Original])); MDataSet.RemainsDataTable _rem = new MDataSet.RemainsDataTable(); try { int res = this.invoiceDetailTableAdapter.Update(sourceRow); if (sourceRow.RemainsRow != null) { this.RemainsTableAdapter.FillByReceiptDetailRef(_rem, sourceRow.RemainsRow.ReceiptDetailRef); } else { this.RemainsTableAdapter.FillNew(_rem); } this.mDataSet.Remains.Merge(_rem); this.actionStatusLabel.Text = "Успешно обновлена строка"; } catch (DBConcurrencyException dbcx) { this.onInvoiceDetailDBCError(dbcx); this.actionStatusLabel.Text = "Ошибка совмесного доступа"; return false; } catch (SqlException sqlerr) { if (sqlerr.Class < 17) { OnInvoiceDetailSQLError(sqlerr,sourceRow); } else caughtGlobalError(sqlerr); Log("SaveToBase(MDataSet.InvoiceDetailRow sourceRow) ERROR" + sqlerr.Message + " " + sqlerr.Source ); return false; } catch (Exception err) { MessageBox.Show(err.Message); Log("SaveToBase(MDataSet.InvoiceDetailRow sourceRow) ERROR" + err.Message + " " + err.Source); return false; } finally { RefreshData(_invoiceMasterRow,false); } return true; }
public bool RefreshData(MDataSet.RemainsRow sourceRow) { MDataSet.RemainsDataTable _RemainsDataTable = new MDataSet.RemainsDataTable(); try { this.RemainsTableAdapter.FillByReceiptDetailRef(_RemainsDataTable, sourceRow.ReceiptDetailRef); } catch (Exception err) { MessageBox.Show(err.Message); Log("(MDataSet.RemainsRow sourceRow) " + err.Message + " " + err.Source + err.InnerException.Message); return false; } finally { this.mDataSet.Remains.Merge(_RemainsDataTable); } return true; }