public void Save() { string dstrSQL; DataTable dDT; int dintIndex = 0; try { if (MessageBox.Show("Alarm 리스트를 업데이트 합니다.\n양산중인 장비에서 이 기능을 실행하면\n심각한 문제가 발생 할 수 있습니다.\n진행하겠습니까?", "경고", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No) { return; } File.Copy(Application.StartupPath + @"\system\System.mdb", Application.StartupPath + @"\system\System.mdb.bak", true); if (!DBAct.clsDBAct.funBeginTransaction()) { MessageBox.Show("DB Transaction NG!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } //DataAdapter 생성 OleDbDataAdapter dataAdapter = new OleDbDataAdapter("SELECT * FROM tbAlarm order by AlarmID", DBAct.clsDBAct.funOleDbConnect()); OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(dataAdapter); //DataAdapter를 이용하여 DB로 업데이트를 한다. dataAdapter.SelectCommand.Transaction = DBAct.clsDBAct.funOleDbTransaction(); dataAdapter.Update((DataTable)pAlarmListSource.DataSource); if (!DBAct.clsDBAct.funCommitTransaction()) { MessageBox.Show("DB Commit Transaction NG!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Warning); DBAct.clsDBAct.funRollbackTransaction(); return; } //DB에 저장이 성공적으로 완료되면 다시 DB에서 Data를 로딩한다. //구조체의 내용 갱신 //현재 등록되어 있는 모든 Alarm을 삭제한다. pInfo.Unit(0).SubUnit(0).RemoveAlarm(); dstrSQL = "SELECT * FROM tbAlarm order by AlarmID"; //dDT = DBAct.clsDBAct.funSelectQuery2(dstrSQL); //DataTable을 받아온다. dDT = DBAct.clsDBAct.funSelectQuery2(dstrSQL); if (dDT != null) { pInfo.DeleteTable("ALARM"); pInfo.AddDataTable("ALARM", dDT); foreach (DataRow dr in dDT.Rows) { if (Convert.ToBoolean(dr["AlarmReport"].ToString().Trim())) { dintIndex = Convert.ToInt32(dr["AlarmID"]); pInfo.Unit(0).SubUnit(0).AddAlarm(dintIndex); pInfo.Unit(0).SubUnit(0).Alarm(dintIndex).AlarmCode = Convert.ToInt32(dr["AlarmCD"].ToString().Trim()); pInfo.Unit(0).SubUnit(0).Alarm(dintIndex).AlarmType = dr["AlarmType"].ToString().Trim(); pInfo.Unit(0).SubUnit(0).Alarm(dintIndex).AlarmDesc = dr["AlarmDesc"].ToString().Trim(); pInfo.Unit(0).SubUnit(0).Alarm(dintIndex).AlarmReport = Convert.ToBoolean(dr["AlarmReport"].ToString().Trim()); pInfo.Unit(0).SubUnit(0).Alarm(dintIndex).UnitID = pInfo.funGetModuleIDToUnitID(dr["ModuleID"].ToString()); pInfo.Unit(0).SubUnit(0).Alarm(dintIndex).ModuleID = dr["ModuleID"].ToString(); } } } //DBAct.clsDBAct.funDisconnect(); // DB 연결을 끊는다. subSaveLastModified(); //최종 수정된 날짜를 Ini파일에 저장한다. MessageBox.Show("Data Save Success!", "Jobs Complete", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { pInfo.subLog_Set(InfoAct.clsInfo.LogType.CIM, ex.ToString()); DBAct.clsDBAct.funRollbackTransaction(); DBAct.clsDBAct.funDisconnect(); // DB 연결을 끊는다. MessageBox.Show("DB Update Fail, Because DB Process Error!", "DB Update Error!", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }