コード例 #1
0
        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);
            }
        }