void QSubstations_QSubstationsRowDeleted(object sender, DataSetQuery.QSubstationsRowChangeEvent e) { if (e.Action == DataRowAction.Delete) { if (!m_bAcceptChanges) { e.Row.RejectChanges(); } else { try { using (var cmdBuilder = new SQLiteCommandBuilder(this.qSubstationsTableAdapter.Adapter)) this.qSubstationsTableAdapter.Adapter.Update(this.dataSetQuery.QSubstations); } catch (SQLiteException ex) { MyLocalizer.XtraMessageBoxShow(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (DBConcurrencyException ex) { MyLocalizer.XtraMessageBoxShow(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }
void QSubstations_QSubstationsRowChanged(object sender, DataSetQuery.QSubstationsRowChangeEvent e) { if (e.Action == DataRowAction.Add || e.Action == DataRowAction.Change) { try { if (e.Action == DataRowAction.Change && m_bUpdateID) { this.dataSetQuery.QSubstations.AcceptChanges(); m_bUpdateID = false; return; } else { using (var cmdBuilder = new SQLiteCommandBuilder(this.qSubstationsTableAdapter.Adapter)) this.qSubstationsTableAdapter.Adapter.Update(this.dataSetQuery.QSubstations); } if (e.Action == DataRowAction.Add) { SQLiteConnection connection = new SQLiteConnection(global::DiarMain.Properties.Settings.Default.diarConnectionString); connection.Open(); SQLiteCommand com = new SQLiteCommand(connection); com.CommandText = "select seq from sqlite_sequence where name = 'Substations'"; com.CommandType = CommandType.Text; SQLiteDataReader dr = com.ExecuteReader(); long id = 0; while (dr.Read()) { id = Convert.ToInt64(dr["seq"]); } dr.Close(); connection.Close(); m_bUpdateID = true; ((DataRowView)(qSubstationsBindingSource.Current)).Row["SubstationID"] = id; } } catch (SQLiteException ex) { MyLocalizer.XtraMessageBoxShow(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (DBConcurrencyException ex) { MyLocalizer.XtraMessageBoxShow(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
void QSubstations_QSubstationsRowDeleting(object sender, DataSetQuery.QSubstationsRowChangeEvent e) { try { if (e.Action == DataRowAction.Delete) { if (Convert.ToInt64(e.Row["ReadOnly"]) != 0) { MyLocalizer.XtraMessageBoxShow("Недостаточно прав для удаления записи.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); m_bAcceptChanges = false; return; } if (MyLocalizer.XtraMessageBoxShow("Удалить запись?", "Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) { m_bAcceptChanges = false; return; } else { long id = Convert.ToInt64(e.Row["SubstationID"]); SQLiteConnection connection = new SQLiteConnection(global::DiarMain.Properties.Settings.Default.diarConnectionString); connection.Open(); SQLiteCommand com = new SQLiteCommand(connection); com.CommandText = "Select COUNT(*) AS Cnt from Equipments AS e WHERE e.SubstationID = ?"; com.CommandType = CommandType.Text; SQLiteParameter param1 = new SQLiteParameter("@Param1", DbType.Int64); param1.Value = id; com.Parameters.Add(param1); SQLiteDataReader dr = com.ExecuteReader(); while (dr.Read()) { if (Convert.ToInt64(dr["Cnt"]) > 0) { MyLocalizer.XtraMessageBoxShow("Существует оборудование, зарегистрированное на данную подстанцию.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); m_bAcceptChanges = false; dr.Close(); connection.Close(); return; } } dr.Close(); com.CommandText = "Select COUNT(*) AS Cnt from Checks AS c WHERE c.SubstationID = ?"; com.CommandType = CommandType.Text; SQLiteDataReader dr2 = com.ExecuteReader(); while (dr2.Read()) { if (Convert.ToInt64(dr2["Cnt"]) > 0) { if (MyLocalizer.XtraMessageBoxShow("Существуют комплексные обследования, проведенные на данной подстанции. Удалить их вместе с подстанцией?", "Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == System.Windows.Forms.DialogResult.Yes) { com.CommandText = "DELETE FROM Checks WHERE SubstationID = ?)"; com.ExecuteNonQuery(); } else { m_bAcceptChanges = false; dr2.Close(); connection.Close(); return; } } } dr2.Close(); m_bAcceptChanges = true; connection.Close(); } } } catch (SQLiteException ex) { MyLocalizer.XtraMessageBoxShow(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (DBConcurrencyException ex) { MyLocalizer.XtraMessageBoxShow(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } }