//--------------------------------------------------------------------------- #pragma hdrstop #include "CDSVmsCtlrF.h" #include "AppGlobalF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) //--------------------------------------------------------------------------- TVmsIfscRltn::TVmsIfscRltn() { } //--------------------------------------------------------------------------- TVmsIfscRltn::~TVmsIfscRltn() { } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- TVmsMsg::TVmsMsg() { for (int ii = 0; ii < INT_MAX_VMS_FORM; ii++) { PHASE[ii].pVmsBmp = NULL; } Init(); }; //--------------------------------------------------------------------------- TVmsMsg::~TVmsMsg() { for (int ii = 0; ii < INT_MAX_VMS_FORM; ii++) { if (PHASE[ii].pVmsBmp) { PHASE[ii].pVmsBmp->FreeImage(); PHASE[ii].pVmsBmp->Assign(NULL); delete PHASE[ii].pVmsBmp; PHASE[ii].pVmsBmp = NULL; } } }; //--------------------------------------------------------------------------- void TVmsMsg::Init() { Total = 0; Curr = 0; OFFER_DT = "19990101000000"; OFFER_YN = false; for (int ii = 0; ii < INT_MAX_VMS_FORM; ii++) { PHASE[ii].DSPL_HH = 4; //Ç¥Ãâ½Ã°£ PHASE[ii].DNLD_YN = "N"; //´Ù¿î·Îµå¼º°ø¿©ºÎ PHASE[ii].DSPL_CD = ""; //Ç¥Ãâ¹æ¹ý } }; //--------------------------------------------------------------------------- void VmsInitStatus(WIN_VMS_STATE *AState) { int ii; if (AState->Comm != vms_normal && AState->Wcomm != vms_normal) { AState->DoorStatus = vms_unknown; /* µµ¾î»óÅÂÁ¤º¸ÄÚµå, 0:¿­¸² 1:´ÝÈû 2:¾Ë¼ö¾øÀ½ */ AState->ModulePowerStatus = vms_unknown; /* ¸ðµâÀü¿ø»óÅÂÁ¤º¸ÄÚµå, 0:ÄÑÁü 1:²¨Áü 2:¾Ë¼ö¾øÀ½ */ AState->BodyTemp = 0; /* ÇÔü¿Âµµ°ª(¡É), ¹üÀ§(-128~127) */ AState->LuminanceStatus = 0; /* È­¸éÀÇ ¹à±â°ª (ÃÖ´ë ÈÖµµ°ªÀ» 100À¸·Î ÇßÀ» ¶§ÀÇ ¹éºÐÀ² °ª), ¹üÀ§(0~100) */ AState->FanStatus = vms_unknown; /* Fan µ¿ÀÛ»óÅÂÁ¤º¸ÄÚµå, 0:ÄÑÁü, 1:²¨Áü 2:¾Ë¼ö¾øÀ½ */ AState->HeaterStatus = vms_unknown; /* Heater µ¿ÀÛ»óÅÂÁ¤º¸ÄÚµå, 0:ÄÑÁü, 1:²¨Áü 2:¾Ë¼ö¾øÀ½ */ AState->ExternalLightStatus = vms_unknown; /* ¼±Åà ¿ÜºÎÁ¶¸í µ¿ÀÛ»óÅÂÁ¤º¸ÄÚµå 0:ÄÑÁü, 1:²¨Áü, 2:ÀÚµ¿(°ø´ÜÀº ¹Ì»ç¿ë) */ AState->AlarmLightStatus = vms_unknown; /* ¼±Åà °æ±¤µî µ¿ÀÛ»óÅÂÁ¤º¸ÄÚµå 0:ÄÑÁü, 1:²¨Áü */ AState->SpeakerStatus = vms_unknown; /* ¼±Åà ½ºÇÇÄ¿ µ¿ÀÛ»óÅÂÁ¤º¸ÄÚµå 0:ÄÑÁü, 1:²¨Áü */ //memset(&AState->ControllerCurrentTime, 0x00, sizeof(AState->ControllerCurrentTime)); /*¼±Åà Á¦¾î±â ½Ã°£ (YYYYMMDDHHMMSS) */ AState->Voltage = 0; /* Àü¾Ð, ¹üÀ§(0~255), »ç¿ë¾ÈÇÔ */ // AState->ModuleState = vms_unknown; /* ¸ðµâ »óÅÂ, 0:Á¤»ó 1:Àå¾Ö 2:¾Ë¼ö¾øÀ½ */ #if 0 //AState->ModuleHorizontal = 0; /* °¡·Î ¸ðµâ¼ö */ //AState->ModuleVertical = 0; /* ¼¼·Î ¸ðµâ¼ö */ for (ii = 0; ii < INT_VMS_MAX_MODULE_BIT; ii++) AState->ModuleStatus[ii] = 0xFF;//vms_unknown; /* ¸ðµâ °³º° »óÅÂ, 0:Á¤»ó 1:Àå¾Ö 2:¾Ë¼ö¾øÀ½ */ //AState->PowerCount = 0; /* Àü¿ø °¹¼ö */ for (ii = 0; ii < INT_VMS_MAX_POWER_BIT; ii++) AState->PowerStatus[ii] = 0xFF;//vms_unknown; /* Àü¿ø °³º° »óÅÂ, 0:ÄÑÁü 1:²¨Áü 2:¾Ë¼ö¾øÀ½ */ #endif #if 0 AState->ScheduledMessageOperatingTime = 0; /* Çʼö °èȹµÈ ¸Þ½ÃÁöÀÇ µ¿À۽ð£(ÃÊ) */ AState->ModuleOperatingTemperature = 0; /* Çʼö ¸ðµâ Àü¿øÀÌ ²¨Áö´Â ¿Âµµ°ª(¡É) */ AState->FanOperatingTemperature = 0; /* Çʼö Fan µ¿ÀÛ ±âÁØ ¿Âµµ°ª(¡É) */ AState->HeaterOperatingTemperature = 0; /* Çʼö Heater µ¿ÀÛ ±âÁØ ¿Âµµ°ª(¡É) */ AState->ExternalLightOperatingLuminance = 0; /* ¼±Åà ¿ÜºÎÀüµî µ¿ÀÛ ±âÁØ ÈÖµµ°ª */ AState->ModuleBasicFailureRate = 0; /* ¼±Åà ¸ðµâ Àå¾ÖÀ² (ÇÑ °³ÀÇ ¸ðµâÀ» Àå¾Ö·Î ó¸®Çϱâ À§ÇÑ Çȼ¿ÀÇ ¹éºÐÀ²°ª) */ AState->MaximumRetry = 0; /* ¼±Åà ÃÖ´ë Àç½Ãµµ Ƚ¼ö(ȸ) */ AState->ResponseTimeOut = 0; /* ¼±Åà ÃÖ´ëÀÀ´ä´ë±â½Ã°£ (ÃÊ) */ AState->BlinkingCycleTime = 0; /* ¼±Åà Á¡¸ê½Ã°£ ÁÖ±â ( 1/10ÃÊ´ÜÀ§) */ #endif } for (ii = 0; ii < INT_VMS_MAX_MODULE_BIT; ii++) AState->ModuleStatus[ii] = 0xFF;//vms_unknown; /* ¸ðµâ °³º° »óÅÂ, 0:Á¤»ó 1:Àå¾Ö 2:¾Ë¼ö¾øÀ½ */ //AState->PowerCount = 0; /* Àü¿ø °¹¼ö */ for (ii = 0; ii < INT_VMS_MAX_POWER_BIT; ii++) AState->PowerStatus[ii] = 0xFF;//vms_unknown; /* Àü¿ø °³º° »óÅÂ, 0:ÄÑÁü 1:²¨Áü 2:¾Ë¼ö¾øÀ½ */ } //--------------------------------------------------------------------------- void VmsStatusCopy(WIN_VMS_STATE *AState, INT_VMS_STATE *ASrc) { int ii; AState->OprMode = ASrc->OprMode; /* VMS¿î¿µ¸ðµå, 0:auto, 1:Fix */ AState->Comm = ASrc->Comm; /* À¯¼±Åë½Å»óÅÂ, 0:Á¤»ó 1:Àå¾Ö */ AState->Wcomm = ASrc->Wcomm; /* ¹«¼±Åë½Å»óÅÂ, 0:Á¤»ó 1:Àå¾Ö */ AState->DoorStatus = ASrc->DoorStatus; /* µµ¾î»óÅÂÁ¤º¸ÄÚµå, 0:¿­¸² 1:´ÝÈû 2:¾Ë¼ö¾øÀ½ */ AState->ModulePowerStatus = ASrc->ModulePowerStatus; /* ¸ðµâÀü¿ø»óÅÂÁ¤º¸ÄÚµå, 0:ÄÑÁü 1:²¨Áü 2:¾Ë¼ö¾øÀ½ */ AState->BodyTemp = ASrc->BodyTemp; /* ÇÔü¿Âµµ°ª(¡É), ¹üÀ§(-128~127) */ AState->LuminanceStatus = ASrc->LuminanceStatus; /* È­¸éÀÇ ¹à±â°ª (ÃÖ´ë ÈÖµµ°ªÀ» 100À¸·Î ÇßÀ» ¶§ÀÇ ¹éºÐÀ² °ª), ¹üÀ§(0~100) */ AState->FanStatus = ASrc->FanStatus; /* Fan µ¿ÀÛ»óÅÂÁ¤º¸ÄÚµå, 0:ÄÑÁü, 1:²¨Áü 2:¾Ë¼ö¾øÀ½ */ AState->HeaterStatus = ASrc->HeaterStatus; /* Heater µ¿ÀÛ»óÅÂÁ¤º¸ÄÚµå, 0:ÄÑÁü, 1:²¨Áü 2:¾Ë¼ö¾øÀ½ */ AState->ExternalLightStatus = ASrc->ExternalLightStatus; /* ¼±Åà ¿ÜºÎÁ¶¸í µ¿ÀÛ»óÅÂÁ¤º¸ÄÚµå 0:ÄÑÁü, 1:²¨Áü, 2:ÀÚµ¿(°ø´ÜÀº ¹Ì»ç¿ë) */ AState->AlarmLightStatus = ASrc->AlarmLightStatus; /* ¼±Åà °æ±¤µî µ¿ÀÛ»óÅÂÁ¤º¸ÄÚµå 0:ÄÑÁü, 1:²¨Áü */ AState->SpeakerStatus = ASrc->SpeakerStatus; /* ¼±Åà ½ºÇÇÄ¿ µ¿ÀÛ»óÅÂÁ¤º¸ÄÚµå 0:ÄÑÁü, 1:²¨Áü */ for (ii = 0; ii < INT_VMS_MAX_DATETIME; ii++) AState->ControllerCurrentTime[ii] = ASrc->ControllerCurrentTime[ii]; /* ¼±Åà Á¦¾î±â ½Ã°£ (YYYYMMDDHHMMSS) */ AState->Voltage = ASrc->Voltage; /* Àü¾Ð, ¹üÀ§(0~255), »ç¿ë¾ÈÇÔ */ AState->ModuleState = ASrc->ModuleState; /* ¸ðµâ »óÅÂ, 0:Á¤»ó 1:Àå¾Ö 2:¾Ë¼ö¾øÀ½ */ AState->ModuleHorizontal = ASrc->ModuleHorizontal; /* °¡·Î ¸ðµâ¼ö */ AState->ModuleVertical = ASrc->ModuleVertical; /* ¼¼·Î ¸ðµâ¼ö */ for (ii = 0; ii < INT_VMS_MAX_MODULE_BIT; ii++) AState->ModuleStatus[ii] = ASrc->ModuleStatus[ii]; /* ¸ðµâ °³º° »óÅÂ, 0:Á¤»ó 1:Àå¾Ö 2:¾Ë¼ö¾øÀ½ */ AState->PowerCount = ASrc->PowerCount; /* Àü¿ø °¹¼ö */ for (ii = 0; ii < INT_VMS_MAX_POWER_BIT; ii++) AState->PowerStatus[ii] = ASrc->PowerStatus[ii]; /* Àü¿ø °³º° »óÅÂ, 0:ÄÑÁü 1:²¨Áü 2:¾Ë¼ö¾øÀ½ */ AState->ScheduledMessageOperatingTime = ASrc->ScheduledMessageOperatingTime; /* Çʼö °èȹµÈ ¸Þ½ÃÁöÀÇ µ¿À۽ð£(ÃÊ) */ AState->ModuleOperatingTemperature = ASrc->ModuleOperatingTemperature; /* Çʼö ¸ðµâ Àü¿øÀÌ ²¨Áö´Â ¿Âµµ°ª(¡É) */ AState->FanOperatingTemperature = ASrc->FanOperatingTemperature; /* Çʼö Fan µ¿ÀÛ ±âÁØ ¿Âµµ°ª(¡É) */ AState->HeaterOperatingTemperature = ASrc->HeaterOperatingTemperature; /* Çʼö Heater µ¿ÀÛ ±âÁØ ¿Âµµ°ª(¡É) */ AState->ExternalLightOperatingLuminance = ASrc->ExternalLightOperatingLuminance; /* ¼±Åà ¿ÜºÎÀüµî µ¿ÀÛ ±âÁØ ÈÖµµ°ª */ AState->ModuleBasicFailureRate = ASrc->ModuleBasicFailureRate; /* ¼±Åà ¸ðµâ Àå¾ÖÀ² (ÇÑ °³ÀÇ ¸ðµâÀ» Àå¾Ö·Î ó¸®Çϱâ À§ÇÑ Çȼ¿ÀÇ ¹éºÐÀ²°ª) */ AState->MaximumRetry = ASrc->MaximumRetry; /* ¼±Åà ÃÖ´ë Àç½Ãµµ Ƚ¼ö(ȸ) */ AState->ResponseTimeOut = ASrc->ResponseTimeOut; /* ¼±Åà ÃÖ´ëÀÀ´ä´ë±â½Ã°£ (ÃÊ) */ AState->BlinkingCycleTime = ASrc->BlinkingCycleTime; /* ¼±Åà Á¡¸ê½Ã°£ ÁÖ±â ( 1/10ÃÊ´ÜÀ§) */ } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- TVmsCtlr::TVmsCtlr() { InitializeCriticalSection(&FCS); FCompleted = false; FEditMode = DB_INIT; FGridIndex = -1; MEM_DEL = "N"; VMS_NGHT_BRGH_STEP = 0; // NUMBER(2) Y VMS ¾ß°£ ÈÖµµ ´Ü°è VMS_WEEK_BRGH_STEP = 0; // NUMBER(2) Y VMS ÁÖ°£ ÈÖµµ ´Ü°è CMNCFAIL_SLOT_NMBR = 0; // NUMBER(4) Y 0 Åë½ÅÀå¾Ö SLOT ¹øÈ£ PWER_FAIL_SLOT_NMBR = 0; // NUMBER(4) Y 0 Àü¿ø Àå¾Ö SLOT ¹øÈ£ CMTRINFR_CNCT_YN = "N"; // CHAR(1) Y 'N' ¼ÒÅëÁ¤º¸ ¿¬°è ¿©ºÎ WTHRINFR_CNCT_YN = "N"; // CHAR(1) Y 'N' ±â»óÁ¤º¸ ¿¬°è ¿©ºÎ ENVRINFR_CNCT_YN = "N"; // CHAR(1) Y 'N' ȯ°æÁ¤º¸ ¿¬°è ¿©ºÎ PANL_ON_TIME = "0000"; // VARCHAR2(4) Y Àü±¤ÆÇ ON TIME PANL_OFF_TIME = "0000"; // VARCHAR2(4) Y Àü±¤ÆÇ OFF TIME X_CRDN = 0; // NUMBER(11,8) Y X ÁÂÇ¥ Y_CRDN = 0; // NUMBER(10,8) Y Y ÁÂÇ¥ TRFC_STRG_USE_YN = "Y"; // CHAR(1) Y 'N' ±³Åë Àü·« »ç¿ë ¿©ºÎ VMS_LOC_IFSC_ID = ""; // NUMBER(10) Y VMS À§Ä¡ Á¤º¸Á¦°ø±¸°£ ID OPER_MODE = "A"; VMS_MAX_PHSE_NUM = 16; // NUMBER(2) Y VMS ÃÖ´ë Ç¥Ãâ¸é °³¼ö VMS_PHSE_CHNG_CYCL = 5; // NUMBER(3) Y VMS Ç¥Ãâ¸é º¯°æ ÁÖ±â VMS_CMNC_ERR_BASS_VAL = 127; // NUMBER(3) Y VMS Åë½Å ¿À·ù ±âº» °ª(¸ðµâ Àü¿øÀÌ ²¨Áö´Â ¿Âµµ°ª(¡É)) FAN_MTNS_TMPR = 35; // NUMBER(6,3) Y ÆÒ µ¿ÀÛ ¿Âµµ HETR_MTNS_TMPR = 0; // NUMBER(6,3) Y È÷ÅÍ µ¿ÀÛ ¿Âµµ VMS_MODL_ERR_RATE = 20; // NUMBER(3) Y VMS ¸ðµâ ¿À·ù À²(Options) WEB_CMRA_PORT = 0; // NUMBER(5) Y WEB_CMRA_ID = ""; // VARCHAR2(20) Y WEB_CMRA_PWD = ""; // VARCHAR2(20) Y STRM_SESN_NM = ""; // VARCHAR2(200) Y ½ºÆ®¸®¹Ö ¼¼¼Ç ¸í DEL_YN = "N"; // CHAR(1) Y 'N' »èÁ¦ ¿©ºÎ memset(&WSTATE, 0x00, sizeof(WSTATE)); WSTATE.Comm = vms_error; VmsInitStatus(&WSTATE); WSTATE.Comm = vms_error; InitFormCount(); VmsMsg = NULL; VmsMsg = new TVmsMsg(); VmsMsg->Init(); FData1 = NULL; FData2 = NULL; FData3 = NULL; RunState = state_error; } //--------------------------------------------------------------------------- TVmsCtlr::~TVmsCtlr() { FIfscRltn.RemoveAll(); DeleteCriticalSection(&FCS); } //--------------------------------------------------------------------------- void TVmsCtlr::Lock() { //EnterCriticalSection(&FCS); } //--------------------------------------------------------------------------- void TVmsCtlr::UnLock() { //LeaveCriticalSection(&FCS); } //--------------------------------------------------------------------------- void TVmsCtlr::CheckRunState() { RunState = WSTATE.Comm; if (RunState == vms_normal) { #if 0 if (WSTATE.DoorStatus == vms_open) RunState = state_module; if (WSTATE.ModulePowerStatus == vms_error) RunState = state_module; if (WSTATE.ModuleState == vms_error) RunState = state_module; #endif } } //--------------------------------------------------------------------------- TVmsSize::TVmsSize() { } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- TVmsCtlrManager *VmsManager = NULL; //--------------------------------------------------------------------------- TVmsCtlrManager::TVmsCtlrManager() { FImgStream = NULL; } //--------------------------------------------------------------------------- TVmsCtlrManager::~TVmsCtlrManager() { FVmsSize.RemoveAll(); FLists.RemoveAll(); if (FImgStream) delete FImgStream; FImgStream = NULL; } //--------------------------------------------------------------------------- void TVmsCtlrManager::InitFormCount() { try { FLists.Lock(); FOR_STL(TVmsCtlr*, pObj, FLists) { pObj->InitFormCount(); } } __finally { FLists.UnLock(); } }; //--------------------------------------------------------------------------- bool TVmsCtlrManager::LoadVmsSize(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; try { FVmsSize.Lock(); FVmsSize.RemoveAll(); } __finally { FVmsSize.UnLock(); } #if 0 sQry = "SELECT CMMN_CD, \r\n" " CMMN_CD_ENGL_NM AS CMMN_CD_KOR_NM, \r\n" " NVL(ATRB1, '320') AS FORMW, \r\n" " NVL(ATRB2, '64') AS FORMH \r\n" " FROM TB_CMMN_CD \r\n" " WHERE CMMN_CLSF_CD = 'VMP' \r\n" " AND USE_YN = 'Y' \r\n" " AND CMMN_CD IN (SELECT DISTINCT VMS_TYPE_CD \r\n" " FROM TB_VMS_CTLR) \r\n" " ORDER BY CMMN_CD DESC \r\n"; #else sQry = "SELECT VMS_TYPE_CD, VMS_TYPE_NM, \r\n" " VMS_WDTH, VMS_HGHT, MODL_ROW_NUM, MODL_COL_NUM \r\n" " FROM TB_VMS_TYPE \r\n"; #endif try { FVmsSize.Lock(); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Open(); for( ; !pADO->Eof; pADO->Next()) { TVmsSize *pObj = new TVmsSize(); pObj->TypeCd = pADO->FieldByName("VMS_TYPE_CD")->AsString; pObj->TypeNm = pADO->FieldByName("VMS_TYPE_NM")->AsString; pObj->Width = pADO->FieldByName("VMS_WDTH")->AsInteger; pObj->Height = pADO->FieldByName("VMS_HGHT")->AsInteger; FVmsSize.Push(pObj->TypeCd, pObj); } } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::LoadVmsSize", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::LoadVmsSize", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } FVmsSize.UnLock(); } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; FMinWidth = 1000; FMinHeight= 1000; FMaxWidth = 0; FMaxHeight= 0; try { FLists.Lock(); FLists.RemoveAll(); } __finally { FLists.UnLock(); } #if 0 sQry = "SELECT A.*, \r\n" " (SELECT NVL(ATRB1, '320') \r\n" " FROM TB_CMMN_CD \r\n" " WHERE CMMN_CLSF_CD = 'VMP' \r\n" " AND CMMN_CD = A.VMS_TYPE_CD) AS FORMW, \r\n" " (SELECT NVL(ATRB2, '64') \r\n" " FROM TB_CMMN_CD \r\n" " WHERE CMMN_CLSF_CD = 'VMP' \r\n" " AND CMMN_CD = A.VMS_TYPE_CD) AS FORMH \r\n" " FROM TB_VMS_CTLR A \r\n"; #else sQry = "SELECT A.*, \r\n" " B.VMS_WDTH AS FORMW, \r\n" " B.VMS_HGHT AS FORMH, \r\n" " B.MODL_ROW_NUM AS MODV, \r\n" " B.MODL_COL_NUM AS MODH \r\n" " FROM TB_VMS_CTLR A, TB_VMS_TYPE B \r\n" " WHERE A.DEL_YN = 'N' \r\n" " AND A.VMS_TYPE_CD = B.VMS_TYPE_CD \r\n"; #endif try { FLists.Lock(); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Open(); for( ; !pADO->Eof; pADO->Next()) { TVmsCtlr *pObj = new TVmsCtlr(); pObj->VMS_CTLR_NMBR = pADO->FieldByName("VMS_CTLR_NMBR")->AsInteger; pObj->VMS_ID = pADO->FieldByName("VMS_ID")->AsString; pObj->VMS_CTLR_ID = pADO->FieldByName("VMS_CTLR_ID")->AsString; pObj->VMS_NM = pADO->FieldByName("VMS_NM")->AsString; pObj->VMS_CTLR_IP = pADO->FieldByName("VMS_CTLR_IP")->AsString; pObj->VMS_CMNC_PORT = pADO->FieldByName("VMS_CMNC_PORT")->AsString; pObj->VMS_USAG_TYPE_CD = pADO->FieldByName("VMS_USAG_TYPE_CD")->AsString; pObj->VMS_FRM_TYPE_CD = pADO->FieldByName("VMS_FRM_TYPE_CD")->AsString; pObj->VMS_TYPE_CD = pADO->FieldByName("VMS_TYPE_CD")->AsString; pObj->VMS_MODL_TYPE_CD = pADO->FieldByName("VMS_MODL_TYPE_CD")->AsString; pObj->OPER_MODE = pADO->FieldByName("OPER_MODE")->AsString; pObj->VMS_CMNC_ERR_BASS_VAL = pADO->FieldByName("VMS_CMNC_ERR_BASS_VAL")->AsInteger; pObj->VMS_NGHT_BRGH_STEP = pADO->FieldByName("VMS_NGHT_BRGH_STEP")->AsInteger; pObj->VMS_WEEK_BRGH_STEP = pADO->FieldByName("VMS_WEEK_BRGH_STEP")->AsInteger; pObj->VMS_PHSE_CHNG_CYCL = pADO->FieldByName("VMS_PHSE_CHNG_CYCL")->AsInteger; pObj->VMS_MODL_ERR_RATE = pADO->FieldByName("VMS_MODL_ERR_RATE")->AsInteger; pObj->VMS_MODL_CHK_CYCL = pADO->FieldByName("VMS_MODL_CHK_CYCL")->AsInteger; pObj->CMNCFAIL_SLOT_NMBR = pADO->FieldByName("CMNCFAIL_SLOT_NMBR")->AsInteger; pObj->PWER_FAIL_SLOT_NMBR = pADO->FieldByName("PWER_FAIL_SLOT_NMBR")->AsInteger; pObj->CMTRINFR_CNCT_YN = pADO->FieldByName("CMTRINFR_CNCT_YN")->AsString; pObj->WTHRINFR_CNCT_YN = pADO->FieldByName("WTHRINFR_CNCT_YN")->AsString; pObj->ENVRINFR_CNCT_YN = pADO->FieldByName("ENVRINFR_CNCT_YN")->AsString; pObj->VMS_MAX_PHSE_NUM = pADO->FieldByName("VMS_MAX_PHSE_NUM")->AsInteger; pObj->FRST_REGR_NMBR = pADO->FieldByName("FRST_REGR_NMBR")->AsString; pObj->FRST_RGST_DT = pADO->FieldByName("FRST_RGST_DT")->AsString; pObj->LAST_CRPR_NMBR = pADO->FieldByName("LAST_CRPR_NMBR")->AsString; pObj->LAST_CRCT_DT = pADO->FieldByName("LAST_CRCT_DT")->AsString; pObj->PANL_ON_TIME = pADO->FieldByName("PANL_ON_TIME")->AsString; pObj->PANL_OFF_TIME = pADO->FieldByName("PANL_OFF_TIME")->AsString; pObj->PANL_PWER_MODE = pADO->FieldByName("PANL_PWER_MODE")->AsString; pObj->BRGH_MODE = pADO->FieldByName("BRGH_MODE")->AsString; pObj->X_CRDN = pADO->FieldByName("X_CRDN")->AsFloat; pObj->Y_CRDN = pADO->FieldByName("Y_CRDN")->AsFloat; pObj->ISTL_LCTN_NM = pADO->FieldByName("ISTL_LCTN_NM")->AsString; pObj->TRFC_STRG_USE_YN = pADO->FieldByName("TRFC_STRG_USE_YN")->AsString; pObj->VMS_LOC_IFSC_ID = pADO->FieldByName("VMS_LOC_IFSC_ID")->AsString; pObj->FAN_MTNS_TMPR = pADO->FieldByName("FAN_MTNS_TMPR")->AsString.Trim().ToIntDef(0); pObj->HETR_MTNS_TMPR = pADO->FieldByName("HETR_MTNS_TMPR")->AsString.Trim().ToIntDef(0); pObj->WEB_CMRA_IP = pADO->FieldByName("WEB_CMRA_IP")->AsString; pObj->WEB_CMRA_PORT = pADO->FieldByName("WEB_CMRA_PORT")->AsString.Trim().ToIntDef(0); pObj->WEB_CMRA_ID = pADO->FieldByName("WEB_CMRA_ID")->AsString; pObj->WEB_CMRA_PWD = pADO->FieldByName("WEB_CMRA_PWD")->AsString; pObj->WEB_CMRA_CMPY = pADO->FieldByName("WEB_CMRA_CMPY")->AsString; pObj->WEB_CMRA_MDL = pADO->FieldByName("WEB_CMRA_MDL")->AsString; pObj->STRM_SESN_NM = pADO->FieldByName("STRM_SESN_NM")->AsString; pObj->DEL_YN = pADO->FieldByName("DEL_YN")->AsString; pObj->DEF_PHSE_CHNG_CYCL = pADO->FieldByName("DEF_PHSE_CHNG_CYCL")->AsInteger; pObj->WIDTH = pADO->FieldByName("FORMW")->AsInteger; pObj->HEIGHT = pADO->FieldByName("FORMH")->AsInteger; pObj->ModVerCnt = pADO->FieldByName("MODV")->AsInteger; pObj->ModHorCnt = pADO->FieldByName("MODH")->AsInteger; if (pObj->WIDTH > FMaxWidth) FMaxWidth = pObj->WIDTH; if (pObj->WIDTH < FMinWidth) FMinWidth = pObj->WIDTH; if (pObj->HEIGHT > FMaxHeight) FMaxHeight = pObj->HEIGHT; if (pObj->HEIGHT < FMinHeight) FMinHeight = pObj->HEIGHT; pObj->WSTATE.ScheduledMessageOperatingTime = pObj->VMS_PHSE_CHNG_CYCL; /* Çʼö °èȹµÈ ¸Þ½ÃÁöÀÇ µ¿À۽ð£(ÃÊ) */ pObj->WSTATE.ModuleOperatingTemperature = pObj->VMS_CMNC_ERR_BASS_VAL; /* Çʼö ¸ðµâ Àü¿øÀÌ ²¨Áö´Â ¿Âµµ°ª(¡É) */ pObj->WSTATE.FanOperatingTemperature = pObj->FAN_MTNS_TMPR; /* Çʼö Fan µ¿ÀÛ ±âÁØ ¿Âµµ°ª(¡É) */ pObj->WSTATE.HeaterOperatingTemperature = pObj->HETR_MTNS_TMPR; /* Çʼö Heater µ¿ÀÛ ±âÁØ ¿Âµµ°ª(¡É) */ pObj->WSTATE.ModuleBasicFailureRate = pObj->VMS_MODL_ERR_RATE; /* ¼±Åà ¸ðµâ Àå¾ÖÀ² (ÇÑ °³ÀÇ ¸ðµâÀ» Àå¾Ö·Î ó¸®Çϱâ À§ÇÑ Çȼ¿ÀÇ ¹éºÐÀ²°ª) */ FLists.Push(String(pObj->VMS_CTLR_NMBR), pObj); pObj->Completed = true; } } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::LoadFromDb", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::LoadFromDb", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } FLists.UnLock(); } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::LoadVmsStatusFromDb(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; #if 0 //CONN_STTS_CD 1 CMS0 CMS Á¤»ó connected Y 2 CMS1 CMS Åë½ÅµÎÀý Not connected Y 3 CMS2 CMS Á¤º¸¾øÀ½ Y //COBXDOOR_OPEN_STTS_CD 1 CDS0 CDS ´ÝÈû a door closed Y 2 CDS1 CDS ¿­¸² a door opened Y 3 CDS2 CDS Á¤º¸¾øÀ½ Y 1 CRS0 CRS °¡µ¿ operated Y 2 CRS1 CRS ÁßÁö stopped Y 1 CPS0 CPS ON Power On Y 2 CPS1 CPS OFF Power Off Y //HETR_STTS_CD 1 HTS0 HTS °¡µ¿ operated Y 2 HTS1 HTS ÁßÁö stopped Y 3 HTS2 HTS Á¤º¸¾øÀ½ Y //PWER_STTS_CD 1 PWS0 PWS Á¤»ó normal Y 2 PWS1 PWS ¿À·ù abnormal Y //FAN_STTS_CD 1 PAS0 PAS °¡µ¿ operated Y 2 PAS1 PAS ÁßÁö stopped Y 3 PAS2 PAS Á¤º¸¾øÀ½ Y //¸ðµâ 1 MOS0 MOS Á¤»ó normal Y 2 MOS1 MOS ¿À·ù abnormal Y #endif sQry = "SELECT * \r\n" " FROM TB_VMS_STTS_PRST A, TB_VMS_CTLR B \r\n" " WHERE A.VMS_CTLR_NMBR = B.VMS_CTLR_NMBR \r\n" " AND A.RGST_DT >= TO_CHAR(SYSDATE-2/1440, 'YYYYMMDDHH24MISS') \r\n"; try { TVmsCtlr *pObj = NULL; FLists.Lock(); #if 0 FOR_STL(TVmsCtlr*, pTmp, FLists) { pTmp->WSTATE.Comm = vms_error; VmsInitStatus(&pTmp->WSTATE); pTmp->RunState = state_error; } #endif try { int nORD; pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Open(); //int nRows = pADO->RecordCount; for( ; !pADO->Eof; pADO->Next()) { String sVmsNmbr = pADO->FieldByName("VMS_CTLR_NMBR")->AsString; pObj = FLists.Find(sVmsNmbr); if (!pObj) continue; String RGST_DT = pADO->FieldByName("RGST_DT")->AsString; String CONN_STTS_CD = pADO->FieldByName("CONN_STTS_CD")->AsString; if (CONN_STTS_CD != "CMS0") { //Åë½ÅÀå¾Ö continue; } pObj->WSTATE.Comm = vms_normal; String CBOXDOOR_OPEN_STTS_CD = pADO->FieldByName("CBOXDOOR_OPEN_STTS_CD")->AsString; if (CBOXDOOR_OPEN_STTS_CD == "CDS0") pObj->WSTATE.DoorStatus = vms_close; else if (CBOXDOOR_OPEN_STTS_CD == "CDS1") pObj->WSTATE.DoorStatus = vms_open; String PWER_STTS_CD = pADO->FieldByName("PWER_STTS_CD")->AsString; if (PWER_STTS_CD == "PWS0") pObj->WSTATE.ModulePowerStatus = vms_normal; else if (PWER_STTS_CD == "PWS1") pObj->WSTATE.ModulePowerStatus = vms_error; String CBOX_TMPR = pADO->FieldByName("CBOX_TMPR")->AsString; pObj->WSTATE.BodyTemp = CBOX_TMPR.ToIntDef(0); String CBOX_HMDT = pADO->FieldByName("CBOX_HMDT")->AsString; pObj->WSTATE.LuminanceStatus = CBOX_HMDT.ToIntDef(0); String FAN_STTS_CD = pADO->FieldByName("FAN_STTS_CD")->AsString; if (FAN_STTS_CD == "PAS0") pObj->WSTATE.FanStatus = vms_on; else if (FAN_STTS_CD == "PAS1") pObj->WSTATE.FanStatus = vms_off; String HETR_STTS_CD = pADO->FieldByName("HETR_STTS_CD")->AsString; if (HETR_STTS_CD == "HTS0") pObj->WSTATE.HeaterStatus = vms_on; else if (HETR_STTS_CD == "HTS1") pObj->WSTATE.HeaterStatus = vms_off; String CBOXFAN_STTS_CD = pADO->FieldByName("CBOXFAN_STTS_CD")->AsString; if (CBOXFAN_STTS_CD == "MOS0") pObj->WSTATE.ModuleState = vms_normal; else if (CBOXFAN_STTS_CD == "MOS1") pObj->WSTATE.ModuleState = vms_error; //String CBOXHETR_STTS_CD = pADO->FieldByName("CBOXHETR_STTS_CD")->AsString; //String VMS_TMPR = pADO->FieldByName("VMS_TMPR")->AsString; //String MODL_STTS = pADO->FieldByName("MODL_STTS")->AsString; //String PWER_STTS = pADO->FieldByName("PWER_STTS")->AsString; pObj->CheckRunState(); #if 0 BYTE Comm; /* À¯¼±Åë½Å»óÅÂ, 0:Á¤»ó 1:Àå¾Ö */ BYTE ModuleHorizontal; /* °¡·Î ¸ðµâ¼ö */ BYTE ModuleVertical; /* ¼¼·Î ¸ðµâ¼ö */ BYTE ModuleStatus[INT_VMS_MAX_MODULE_BIT]; /* ¸ðµâ °³º° »óÅÂ, 0:Á¤»ó 1:Àå¾Ö 2:¾Ë¼ö¾øÀ½ */ BYTE PowerCount; /* Àü¿ø °¹¼ö */ BYTE PowerStatus[INT_VMS_MAX_POWER_BIT]; /* Àü¿ø °³º° »óÅÂ, 0:ÄÑÁü 1:²¨Áü 2:¾Ë¼ö¾øÀ½ */ #endif } } catch(EDatabaseError &E) { DBERRORLOG("TVmsCtlrManager::LoadVmsStatusFromDb", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("TVmsCtlrManager::LoadVmsStatusFromDb", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } FLists.UnLock(); } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::DeleteVms(TVmsCtlr *AObj, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "UPDATE TB_VMS_CTLR \r\n" " SET DEL_YN = 'Y' \r\n" " WHERE VMS_CTLR_NMBR = :p01 \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_CTLR_NMBR; pADO->ExecSQL(); #if 0 sQry = "UPDATE TB_FCLT_INFR \r\n" " SET DEL_YN = 'Y' \r\n" " WHERE FCLT_ID = :p01 \r\n"; #else sQry = "DELETE TB_FCLT_INFR \r\n" " WHERE FCLT_ID = :p01 \r\n"; //" AND FCLT_TYPE = 'DSRC' \r\n"; #endif pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_CTLR_ID; pADO->ExecSQL(); return true; } catch(EDatabaseError &E) { DBERRORLOG("TVmsCtlrManager::DeleteVms", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("TVmsCtlrManager::DeleteVms", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::InsertVms(TVmsCtlr *AObj, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "INSERT INTO TB_VMS_CTLR \r\n" " (VMS_CTLR_NMBR, \r\n" " VMS_ID, \r\n" " VMS_CTLR_ID, \r\n" " VMS_NM, \r\n" " VMS_USAG_TYPE_CD, \r\n" " VMS_TYPE_CD, \r\n" " X_CRDN, \r\n" " Y_CRDN, \r\n" " VMS_CTLR_IP, \r\n" " PANL_ON_TIME, \r\n" " PANL_OFF_TIME, \r\n" " WEB_CMRA_IP, \r\n" " WEB_CMRA_PORT, \r\n" " WEB_CMRA_ID, \r\n" " WEB_CMRA_PWD, \r\n" " STRM_SESN_NM, \r\n" " FRST_REGR_NMBR, \r\n" " FRST_RGST_DT, \r\n" " LAST_CRPR_NMBR, \r\n" " LAST_CRCT_DT, \r\n" " VMS_CMNC_PORT, \r\n" " VMS_MAX_PHSE_NUM, \r\n" //= 16; //VMS ÃÖ´ë Ç¥Ãâ¸é °³¼ö " VMS_PHSE_CHNG_CYCL, \r\n" //= 5; //VMS Ç¥Ãâ¸é º¯°æ ÁÖ±â(°èȹµÈ ¸Þ½ÃÁöÀÇ µ¿À۽ð£(ÃÊ)) " VMS_CMNC_ERR_BASS_VAL, \r\n" //= 127; //VMS Åë½Å ¿À·ù ±âº» °ª(¸ðµâ Àü¿øÀÌ ²¨Áö´Â ¿Âµµ°ª(¡É)) " FAN_MTNS_TMPR, \r\n" //= 35; //ÆÒµ¿Àۿµµ " HETR_MTNS_TMPR, \r\n" //= 0; //È÷Å͵¿Àۿµµ " VMS_MODL_ERR_RATE, \r\n" " OPER_MODE ) \r\n" // = 20; //¸ðµâÀå¾ÖÀ²(Options) " VALUES (:p01, \r\n" " :p02, \r\n" " :p03, \r\n" " :p04, \r\n" " :p05, \r\n" " :p06, \r\n" " :p07, \r\n" " :p08, \r\n" " :p09, \r\n" " :p10, \r\n" " :p11, \r\n" " :p12, \r\n" " :p13, \r\n" " :p14, \r\n" " :p15, \r\n" " :p16, \r\n" " :p17, \r\n" " :p18, \r\n" " :p19, \r\n" " :p20, \r\n" " :p21, \r\n" " :p22, \r\n" " :p23, \r\n" " :p24, \r\n" " :p25, \r\n" " :p26, \r\n" " :p27, \r\n" " :p28) \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_CTLR_NMBR; pADO->Parameters->ParamByName("p02")->Value = AObj->VMS_ID; pADO->Parameters->ParamByName("p03")->Value = AObj->VMS_CTLR_ID; pADO->Parameters->ParamByName("p04")->Value = AObj->VMS_NM; pADO->Parameters->ParamByName("p05")->Value = AObj->VMS_USAG_TYPE_CD; pADO->Parameters->ParamByName("p06")->Value = AObj->VMS_TYPE_CD; pADO->Parameters->ParamByName("p07")->Value = AObj->X_CRDN; pADO->Parameters->ParamByName("p08")->Value = AObj->Y_CRDN; pADO->Parameters->ParamByName("p09")->Value = AObj->VMS_CTLR_IP; pADO->Parameters->ParamByName("p10")->Value = AObj->PANL_ON_TIME; pADO->Parameters->ParamByName("p11")->Value = AObj->PANL_OFF_TIME; pADO->Parameters->ParamByName("p12")->Value = AObj->WEB_CMRA_IP; pADO->Parameters->ParamByName("p13")->Value = AObj->WEB_CMRA_PORT; pADO->Parameters->ParamByName("p14")->Value = AObj->WEB_CMRA_ID; pADO->Parameters->ParamByName("p15")->Value = AObj->WEB_CMRA_PWD; pADO->Parameters->ParamByName("p16")->Value = AObj->STRM_SESN_NM; pADO->Parameters->ParamByName("p17")->Value = AObj->FRST_REGR_NMBR; pADO->Parameters->ParamByName("p18")->Value = AObj->FRST_RGST_DT; pADO->Parameters->ParamByName("p19")->Value = AObj->LAST_CRPR_NMBR; pADO->Parameters->ParamByName("p20")->Value = AObj->LAST_CRCT_DT; pADO->Parameters->ParamByName("p21")->Value = AObj->VMS_CMNC_PORT; pADO->Parameters->ParamByName("p22")->Value = AObj->VMS_MAX_PHSE_NUM; pADO->Parameters->ParamByName("p23")->Value = AObj->VMS_PHSE_CHNG_CYCL; pADO->Parameters->ParamByName("p24")->Value = AObj->VMS_CMNC_ERR_BASS_VAL; pADO->Parameters->ParamByName("p25")->Value = AObj->FAN_MTNS_TMPR; pADO->Parameters->ParamByName("p26")->Value = AObj->HETR_MTNS_TMPR; pADO->Parameters->ParamByName("p27")->Value = AObj->VMS_MODL_ERR_RATE; pADO->Parameters->ParamByName("p28")->Value = AObj->OPER_MODE; pADO->ExecSQL(); return MergeFcltInfo(AObj, ADbConn); } catch(EDatabaseError &E) { DBERRORLOG("TVmsCtlrManager::InsertVms", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("TVmsCtlrManager::InsertVms", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::UpdateVms(TVmsCtlr *AObj, TADOConnection *ADbConn/*=NULL*/) { return MergeVms(AObj, ADbConn); } //--------------------------------------------------------------------------- bool TVmsCtlrManager::MergeVms(TVmsCtlr *AObj, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "MERGE INTO TB_VMS_CTLR L \r\n" "USING (SELECT :p01 AS VMS_CTLR_NMBR, \r\n" " :p02 AS VMS_ID, \r\n" " :p03 AS VMS_CTLR_ID, \r\n" " :p04 AS VMS_NM, \r\n" " :p05 AS VMS_USAG_TYPE_CD, \r\n" " :p06 AS VMS_TYPE_CD, \r\n" " :p07 AS X_CRDN, \r\n" " :p08 AS Y_CRDN, \r\n" " :p09 AS VMS_CTLR_IP, \r\n" " :p10 AS PANL_ON_TIME, \r\n" " :p11 AS PANL_OFF_TIME, \r\n" " :p12 AS WEB_CMRA_IP, \r\n" " :p13 AS WEB_CMRA_PORT, \r\n" " :p14 AS WEB_CMRA_ID, \r\n" " :p15 AS WEB_CMRA_PWD, \r\n" " :p16 AS STRM_SESN_NM, \r\n" " :p17 AS FRST_REGR_NMBR, \r\n" " :p18 AS FRST_RGST_DT, \r\n" " :p19 AS LAST_CRPR_NMBR, \r\n" " :p20 AS LAST_CRCT_DT, \r\n" " :p21 AS VMS_CMNC_PORT, \r\n" " :p22 AS VMS_MAX_PHSE_NUM \r\n" " FROM DUAL) M \r\n" " ON (L.VMS_CTLR_NMBR = M.VMS_CTLR_NMBR) \r\n" "WHEN MATCHED \r\n" "THEN \r\n" " UPDATE SET L.VMS_ID = M.VMS_ID, \r\n" " L.VMS_CTLR_ID = M.VMS_CTLR_ID, \r\n" " L.VMS_NM = M.VMS_NM, \r\n" " L.VMS_USAG_TYPE_CD = M.VMS_USAG_TYPE_CD, \r\n" " L.VMS_TYPE_CD = M.VMS_TYPE_CD, \r\n" " L.X_CRDN = M.X_CRDN, \r\n" " L.Y_CRDN = M.Y_CRDN, \r\n" " L.VMS_CTLR_IP = M.VMS_CTLR_IP, \r\n" " L.PANL_ON_TIME = M.PANL_ON_TIME, \r\n" " L.PANL_OFF_TIME = M.PANL_OFF_TIME, \r\n" " L.WEB_CMRA_IP = M.WEB_CMRA_IP, \r\n" " L.WEB_CMRA_PORT = M.WEB_CMRA_PORT, \r\n" " L.WEB_CMRA_ID = M.WEB_CMRA_ID, \r\n" " L.WEB_CMRA_PWD = M.WEB_CMRA_PWD, \r\n" " L.STRM_SESN_NM = M.STRM_SESN_NM, \r\n" " L.FRST_REGR_NMBR = M.FRST_REGR_NMBR, \r\n" " L.FRST_RGST_DT = M.FRST_RGST_DT, \r\n" " L.LAST_CRPR_NMBR = M.LAST_CRPR_NMBR, \r\n" " L.LAST_CRCT_DT = M.LAST_CRCT_DT, \r\n" " L.VMS_CMNC_PORT = M.VMS_CMNC_PORT, \r\n" " L.VMS_MAX_PHSE_NUM = M.VMS_MAX_PHSE_NUM \r\n" "WHEN NOT MATCHED \r\n" "THEN \r\n" " INSERT (VMS_CTLR_NMBR, \r\n" " VMS_ID, \r\n" " VMS_CTLR_ID, \r\n" " VMS_NM, \r\n" " VMS_USAG_TYPE_CD, \r\n" " VMS_TYPE_CD, \r\n" " X_CRDN, \r\n" " Y_CRDN, \r\n" " VMS_CTLR_IP, \r\n" " PANL_ON_TIME, \r\n" " PANL_OFF_TIME, \r\n" " WEB_CMRA_IP, \r\n" " WEB_CMRA_PORT, \r\n" " WEB_CMRA_ID, \r\n" " WEB_CMRA_PWD, \r\n" " STRM_SESN_NM, \r\n" " FRST_REGR_NMBR, \r\n" " FRST_RGST_DT, \r\n" " LAST_CRPR_NMBR, \r\n" " LAST_CRCT_DT, \r\n" " VMS_CMNC_PORT, \r\n" " VMS_MAX_PHSE_NUM ) \r\n" " VALUES (M.VMS_CTLR_NMBR, \r\n" " M.VMS_ID, \r\n" " M.VMS_CTLR_ID, \r\n" " M.VMS_NM, \r\n" " M.VMS_USAG_TYPE_CD, \r\n" " M.VMS_TYPE_CD, \r\n" " M.X_CRDN, \r\n" " M.Y_CRDN, \r\n" " M.VMS_CTLR_IP, \r\n" " M.PANL_ON_TIME, \r\n" " M.PANL_OFF_TIME, \r\n" " M.WEB_CMRA_IP, \r\n" " M.WEB_CMRA_PORT, \r\n" " M.WEB_CMRA_ID, \r\n" " M.WEB_CMRA_PWD, \r\n" " M.STRM_SESN_NM, \r\n" " M.FRST_REGR_NMBR, \r\n" " M.FRST_RGST_DT, \r\n" " M.LAST_CRPR_NMBR, \r\n" " M.LAST_CRCT_DT, \r\n" " M.VMS_CMNC_PORT, \r\n" " M.VMS_MAX_PHSE_NUM ) \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_CTLR_NMBR; pADO->Parameters->ParamByName("p02")->Value = AObj->VMS_ID; pADO->Parameters->ParamByName("p03")->Value = AObj->VMS_CTLR_ID; pADO->Parameters->ParamByName("p04")->Value = AObj->VMS_NM; pADO->Parameters->ParamByName("p05")->Value = AObj->VMS_USAG_TYPE_CD; pADO->Parameters->ParamByName("p06")->Value = AObj->VMS_TYPE_CD; pADO->Parameters->ParamByName("p07")->Value = AObj->X_CRDN; pADO->Parameters->ParamByName("p08")->Value = AObj->Y_CRDN; pADO->Parameters->ParamByName("p09")->Value = AObj->VMS_CTLR_IP; pADO->Parameters->ParamByName("p10")->Value = AObj->PANL_ON_TIME; pADO->Parameters->ParamByName("p11")->Value = AObj->PANL_OFF_TIME; pADO->Parameters->ParamByName("p12")->Value = AObj->WEB_CMRA_IP; pADO->Parameters->ParamByName("p13")->Value = AObj->WEB_CMRA_PORT; pADO->Parameters->ParamByName("p14")->Value = AObj->WEB_CMRA_ID; pADO->Parameters->ParamByName("p15")->Value = AObj->WEB_CMRA_PWD; pADO->Parameters->ParamByName("p16")->Value = AObj->STRM_SESN_NM; pADO->Parameters->ParamByName("p17")->Value = AObj->FRST_REGR_NMBR; pADO->Parameters->ParamByName("p18")->Value = AObj->FRST_RGST_DT; pADO->Parameters->ParamByName("p19")->Value = AObj->LAST_CRPR_NMBR; pADO->Parameters->ParamByName("p20")->Value = AObj->LAST_CRCT_DT; pADO->Parameters->ParamByName("p21")->Value = AObj->VMS_CMNC_PORT; pADO->Parameters->ParamByName("p22")->Value = AObj->VMS_MAX_PHSE_NUM; pADO->ExecSQL(); return MergeFcltInfo(AObj, ADbConn); } catch(EDatabaseError &E) { DBERRORLOG("TVmsCtlrManager::MergeVms", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("TVmsCtlrManager::MergeVms", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::MergeFcltInfo(TVmsCtlr *AObj, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "MERGE INTO TB_FCLT_INFR L \r\n" "USING (SELECT :p01 AS FCLT_ID, \r\n" " :p02 AS FCLT_TYPE, \r\n" " :p03 AS FCLT_LCTN \r\n" " FROM DUAL) M \r\n" " ON (L.FCLT_ID = M.FCLT_ID AND L.FCLT_TYPE = M.FCLT_TYPE) \r\n" "WHEN MATCHED \r\n" "THEN \r\n" " UPDATE SET L.FCLT_LCTN = M.FCLT_LCTN, \r\n" " L.DEL_YN = 'N' \r\n" "WHEN NOT MATCHED \r\n" "THEN \r\n" " INSERT ( FCLT_ID, FCLT_TYPE, FCLT_LCTN) \r\n" " VALUES (M.FCLT_ID, M.FCLT_TYPE, M.FCLT_LCTN) \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_CTLR_ID; pADO->Parameters->ParamByName("p02")->Value = "VMS"; pADO->Parameters->ParamByName("p03")->Value = AObj->VMS_NM; pADO->ExecSQL(); return true; } catch(EDatabaseError &E) { DBERRORLOG("TVmsCtlrManager::MergeFcltInfo", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("TVmsCtlrManager::MergeFcltInfo", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::GetNextVmsId(int &ANmbr, int &AId, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "SELECT NVL(MAX(VMS_CTLR_NMBR), 10000) + 1 AS NEWID FROM TB_VMS_CTLR \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Open(); ANmbr = pADO->FieldByName("NEWID")->AsInteger; AId = ANmbr / 10000; return true; } catch(EDatabaseError &E) { DBERRORLOG("VmsCtlrManager::GetNextVmsId", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("VmsCtlrManager::GetNextVmsId", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return false; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::UpdateCtlrInfo(TVmsCtlr *AObj, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "UPDATE TB_VMS_CTLR \r\n" " SET PANL_ON_TIME = :p01, \r\n" " PANL_OFF_TIME = :p02, \r\n" " LAST_CRPR_NMBR = :p03, \r\n" " LAST_CRCT_DT = :p04 \r\n" " WHERE DEL_YN = 'N' \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AObj->PANL_ON_TIME; pADO->Parameters->ParamByName("p02")->Value = AObj->PANL_OFF_TIME; pADO->Parameters->ParamByName("p03")->Value = AObj->LAST_CRPR_NMBR; pADO->Parameters->ParamByName("p04")->Value = AObj->LAST_CRCT_DT; pADO->ExecSQL(); return true; } catch(EDatabaseError &E) { DBERRORLOG("TVmsCtlrManager::UpdateCtlrInfo", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("TVmsCtlrManager::UpdateCtlrInfo", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::LoadIfscRltn(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; try { FLists.Lock(); FOR_STL(TVmsCtlr*, pObj, FLists) { pObj->FIfscRltn.RemoveAll(); } } __finally { FLists.UnLock(); } sQry = "SELECT A.VMS_CTLR_NMBR, B.VMS_IFSC_ID, B.DSPL_PRRT \r\n" " FROM TB_VMS_CTLR A, \r\n" " TB_VMS_IFSC_RLTN B, \r\n" " TB_VMS_IFSC C \r\n" " WHERE A.VMS_CTLR_NMBR = B.VMS_CTLR_NMBR \r\n" " AND B.VMS_IFSC_ID = C.VMS_IFSC_ID \r\n" " ORDER BY A.VMS_CTLR_NMBR, B.DSPL_PRRT \r\n"; try { int VMS_CTLR_NMBR; FLists.Lock(); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Open(); for( ; !pADO->Eof; pADO->Next()) { VMS_CTLR_NMBR = pADO->FieldByName("VMS_CTLR_NMBR")->AsInteger; TVmsCtlr *pVms = FLists.Find(String(VMS_CTLR_NMBR)); if (!pVms) continue; TVmsIfscRltn *pObj = new TVmsIfscRltn(); if (pObj) { pObj->VMS_CTLR_NMBR = VMS_CTLR_NMBR; pObj->VMS_IFSC_ID = pADO->FieldByName("VMS_IFSC_ID")->AsInteger; pObj->DSPL_PRRT = pADO->FieldByName("DSPL_PRRT")->AsInteger; pVms->FIfscRltn.Push(pObj->DSPL_PRRT, pObj); } } } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::LoadIfscRltn", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::LoadIfscRltn", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } FLists.UnLock(); } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::SaveIfscRltn(TVmsCtlr *AObj, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; int ii; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); sQry = "DELETE FROM TB_VMS_IFSC_RLTN WHERE VMS_CTLR_NMBR = :p01"; pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_CTLR_NMBR; pADO->ExecSQL(); sQry = "INSERT INTO TB_VMS_IFSC_RLTN(VMS_CTLR_NMBR, VMS_IFSC_ID, DSPL_PRRT) VALUES(:p01, :p02, :p03)"; ii = 0; pADO->SQL->Clear(); pADO->SQL->Text = sQry; FOR_STL(TVmsIfscRltn *, pLink, AObj->FIfscRltn) { pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_CTLR_NMBR; pADO->Parameters->ParamByName("p02")->Value = pLink->VMS_IFSC_ID; pADO->Parameters->ParamByName("p03")->Value = String(ii+1); pADO->ExecSQL(); ii++; } return true; } catch(EDatabaseError &E) { DBERRORLOG("TVmsCtlrManager::SaveIfscRltn", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("TVmsCtlrManager::SaveIfscRltn", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::LoadVmsMsg(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "SELECT A.VMS_CTLR_NMBR, A.PHASE, A.DSPL_HH, A.DNLD_YN, \r\n" " A.VMS_MSG_DSPL_MTHD_CD, A.TRFC_SITU_TYPE_CD, A.DSPL_DT, \r\n" " TO_CHAR(SYSDATE - 6/1440, 'YYYYMMDDHH24MISS') AS SVC_DT, \r\n" " A.VMS_DSPL_MSG_IMAG \r\n" " FROM TB_VMS_DSPL_PRST A, \r\n" " (SELECT VMS_CTLR_NMBR, MAX(DSPL_DT) AS DSPL_DT \r\n" " FROM TB_VMS_DSPL_PRST \r\n" " GROUP BY VMS_CTLR_NMBR) B \r\n" " WHERE A.VMS_CTLR_NMBR = B.VMS_CTLR_NMBR \r\n" " AND A.DSPL_DT = B.DSPL_DT \r\n" " ORDER BY A.VMS_CTLR_NMBR, A.PHASE \r\n"; try { FLists.Lock(); FOR_STL(TVmsCtlr*, pTmpObj, FLists) { pTmpObj->Lock(); pTmpObj->VmsMsg->Init(); pTmpObj->UnLock(); } } __finally { FLists.UnLock(); } TVmsCtlr *pObj = NULL; String sOldVmsNmbr = ""; int nPhase = 0; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Open(); for( ; !pADO->Eof; pADO->Next()) { String sVmsNmbr = pADO->FieldByName("VMS_CTLR_NMBR")->AsInteger; if (sVmsNmbr != sOldVmsNmbr) { if (pObj) { pObj->VmsMsg->Total = nPhase; pObj->VmsMsg->Curr = 0; pObj->UnLock(); } pObj = FLists.Find(sVmsNmbr); if (pObj) { pObj->Lock(); nPhase = 0; sOldVmsNmbr = sVmsNmbr; } else continue; } if (!pObj) continue; if (nPhase >= INT_MAX_VMS_FORM) continue; SAFE_DELETE(FImgStream); FImgStream = pADO->CreateBlobStream(pADO->FieldByName("VMS_DSPL_MSG_IMAG"), bmRead); if (FImgStream && FImgStream->Size > 0) { try { if (!pObj->VmsMsg->PHASE[nPhase].pVmsBmp) { pObj->VmsMsg->PHASE[nPhase].pVmsBmp = new Graphics::TBitmap(); } pObj->VmsMsg->PHASE[nPhase].pVmsBmp->FreeImage(); pObj->VmsMsg->PHASE[nPhase].pVmsBmp->LoadFromStream(FImgStream); int PHASE = pADO->FieldByName("PHASE")->AsInteger; pObj->VmsMsg->PHASE[nPhase].DSPL_HH = pADO->FieldByName("DSPL_HH")->AsInteger; pObj->VmsMsg->PHASE[nPhase].DNLD_YN = pADO->FieldByName("DNLD_YN")->AsString; pObj->VmsMsg->PHASE[nPhase].DSPL_CD = pADO->FieldByName("VMS_MSG_DSPL_MTHD_CD")->AsString; if (pObj->VmsMsg->PHASE[nPhase].DSPL_HH <= 0) pObj->VmsMsg->PHASE[nPhase].DSPL_HH = 3; if (pObj->VmsMsg->PHASE[nPhase].DSPL_HH >= 10) pObj->VmsMsg->PHASE[nPhase].DSPL_HH = 10; String DSPL_DT = pADO->FieldByName("DSPL_DT")->AsString; String SVC_DT = pADO->FieldByName("SVC_DT")->AsString; pObj->VmsMsg->OFFER_DT = DSPL_DT; if (DSPL_DT >= SVC_DT) { pObj->VmsMsg->OFFER_YN = true; } else { pObj->VmsMsg->OFFER_YN = false; } if (pObj->VmsMsg->PHASE[nPhase].DNLD_YN == "N") { pObj->VmsMsg->OFFER_YN = false; } //TODO if (pObj->WSTATE.Comm != vms_normal) { pObj->VmsMsg->OFFER_YN = false; } nPhase++; } catch(Exception &e) { } } } if (pObj) { pObj->VmsMsg->Total = nPhase; pObj->VmsMsg->Curr = 0; pObj->UnLock(); } } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::LoadVmsMsg", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::LoadVmsMsg", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::LoadVmsFormUsage(TADOConnection *ADbConn/*=NULL*/) { InitFormCount(); String sQry; TADOQuery *pADO = NULL; sQry = "SELECT A.VMS_CTLR_NMBR, A.TRFC_SITU_TYPE_CD, \r\n" " A.USE_YN, A.DSPL_STRT_HH, A.DSPL_END_HH, \r\n" " TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') AS CURR_HH \r\n" " FROM TB_VMS_TRFC_INFR_DSPL_SCH A, \r\n" " TB_VMS_FORM B \r\n" " WHERE A.VMS_FORM_ID = B.VMS_FORM_ID \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); ITSDb_SQLOpen(pADO); for( ; !pADO->Eof; pADO->Next()) { String sVmsNmbr = pADO->FieldByName("VMS_CTLR_NMBR")->AsString; TVmsCtlr *pObj = FLists.Find(sVmsNmbr); if (!pObj) continue; int nFormType = pADO->FieldByName("TRFC_SITU_TYPE_CD")->AsString.Trim().ToIntDef(-1); switch(nFormType) { case enFormTraffic: // , ' ¼ÒÅë»óȲ(1´Ü) // , ' ¼ÒÅë»óȲ(2´Ü) // , ' ¼ÒÅë»óȲ(3´Ü) // , ' ¼ÒÅë»óȲ(4´Ü) // , ' ¼ÒÅë»óȲ(µµÇü½Ä) case enFormDolbal: // , ' µ¹¹ß¹®¾È case enFormGongsa: // , ' °ø»ç/Çà»ç¹®¾È case enFormHongbo: // , ' È«º¸¹®¾È case enFormDeture: // , ' ¿ìȸµµ·Î case enFormFixed: // , ' °íÁ¤ case enFormBase: // , ' ±âº» case enFormCongest: // , ' Á¤Ã¼ break; default: continue; } pObj->FormCnt[nFormType][0]++; //µî·ÏµÇ¾îÀÖ´Â Àüü Æû ¼ýÀÚ String sUseYn = pADO->FieldByName("USE_YN")->AsString; if (sUseYn == "N") { continue; } //»ç¿ëÇÏ´Â °ÍÁß¿¡ ÇöÀç½Ã°¢ÀÌ Á¦°ø½Ã°¢¾È¿¡ µé¾îÀִ°ÍÀº Ä«¿îÆ®ÇÏÁö ¾ÊÀ½. String sStrHH = pADO->FieldByName("DSPL_STRT_HH")->AsString; String sEndHH = pADO->FieldByName("DSPL_END_HH")->AsString; String sCurHH = pADO->FieldByName("CURR_HH")->AsString; if (sCurHH >= sStrHH && sCurHH <= sEndHH) { pObj->FormCnt[nFormType][1]++; //»ç¿ë°¡´É Æû ¼ýÀÚ } } } catch(EDatabaseError &E) { DBERRORLOG("TVmsCtlrManager::LoadVmsFormUsage", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("TVmsCtlrManager::LoadVmsFormUsage", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::InsVmsControlHs(String ACtlDt, String AVmsNmbr, String ACtlType, String ACtlVal, String ACtlRes, String AUserId, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "INSERT INTO TB_VMS_CTL_HS( \r\n" " CTL_DT, \r\n" " VMS_CTLR_NMBR, \r\n" " CTL_TYPE, \r\n" " CTL_VAL, \r\n" " CTL_RESULT, \r\n" " USER_ID \r\n" " ) \r\n" " VALUES( \r\n" " :p01, \r\n" " :p02, \r\n" " :p03, \r\n" " :p04, \r\n" " :p05, \r\n" " :p06 \r\n" " ) \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = ACtlDt; pADO->Parameters->ParamByName("p02")->Value = AVmsNmbr; pADO->Parameters->ParamByName("p03")->Value = ACtlType; pADO->Parameters->ParamByName("p04")->Value = ACtlVal; pADO->Parameters->ParamByName("p05")->Value = ACtlRes; pADO->Parameters->ParamByName("p06")->Value = AUserId; pADO->ExecSQL(); return true; } catch(EDatabaseError &E) { DBERRORLOG("TVmsCtlrManager::InsVmsControlHs", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("TVmsCtlrManager::InsVmsControlHs", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //---------------------------------------------------------------------------