CDSAviF.cpp 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSAviF.h"
  4. #include "ITSDbF.h"
  5. #include "ITS_OPLibF.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. TItsAviDtct::TItsAviDtct()
  9. {
  10. DTCT_NMBR = "";
  11. DTCT_NM = "";
  12. CTLR_MNGM_NMBR = "";
  13. DTCT_TYPE_CD = "";
  14. ISTL_LANE = "";
  15. USE_YN = "";
  16. DEL_YN = "";
  17. MAX_TFVL = 0;
  18. MIN_TFVL = 0;
  19. MAX_OCPY_RATE = 0;
  20. MIN_OCPY_RATE = 0;
  21. MIN_SPED = 0;
  22. MAX_SPED = 0;
  23. MEM_DEL = "";
  24. }
  25. //---------------------------------------------------------------------------
  26. TItsAviDtct::~TItsAviDtct()
  27. {
  28. }
  29. //---------------------------------------------------------------------------
  30. TItsAvi::TItsAvi()
  31. {
  32. FCompleted = false;
  33. FEditMode = DB_INIT;
  34. FGridIndex = -1;
  35. MEM_DEL = "N";
  36. //Clear();
  37. }
  38. //---------------------------------------------------------------------------
  39. void TItsAvi::Clear()
  40. {
  41. AVI_CTLR_MNGM_NMBR = "";
  42. AVI_ID = "";
  43. LINK_ID = "";
  44. AVI_LCTN_NM = "";
  45. AVI_VALD_YN = "";
  46. AVI_CTLR_IP = "";
  47. AVI_CTLR_CMNC_PORT = "";
  48. AVI_MAIN_CTLR_YN = "";
  49. AVI_MNGM_LANE_NUM = "";
  50. AVI_CMRA_NUM = "";
  51. AVI_DTCT_NUM = "";
  52. AVI_DTCT_NM = "";
  53. AVI_CLCT_CYCL = "";
  54. AVI_LAMP_AUTO_YN = "";
  55. AVI_LAMP_ON_HMS = "";
  56. AVI_LAMP_OFF_HMS = "";
  57. AVI_LAMP_ON_YN = "";
  58. X_CRDN = "";
  59. Y_CRDN = "";
  60. RMRK = "";
  61. DEL_YN = "";
  62. MEM_DEL = "";
  63. }
  64. //---------------------------------------------------------------------------
  65. TItsAvi::~TItsAvi()
  66. {
  67. }
  68. //---------------------------------------------------------------------------
  69. TItsAviSect::TItsAviSect()
  70. {
  71. FCompleted = false;
  72. FEditMode = DB_INIT;
  73. FGridIndex = -1;
  74. MEM_DEL = "N";
  75. //Clear();
  76. }
  77. //---------------------------------------------------------------------------
  78. void TItsAviSect::Clear()
  79. {
  80. AVI_CTLR_MNGM_NMBR = "";
  81. ORD = 0;
  82. AVI_SECT_NMBR = "";
  83. STRT_SPOT_NM = "";
  84. END_SPOT_NM = "";
  85. AVI_SECT_NM = "";
  86. AVI_SECT_DSTC = "";
  87. SHRT_PASS_HH = "";
  88. LNST_PASS_HH = "";
  89. SPOT_NUM = "";
  90. STND_DRFT_VAL = "";
  91. MIN_SPED = "";
  92. MAX_SPED = "";
  93. SMTH_FCTR = "";
  94. DEL_YN = "";
  95. MEM_DEL = "";
  96. }
  97. //---------------------------------------------------------------------------
  98. TItsAviSect::~TItsAviSect()
  99. {
  100. }
  101. //---------------------------------------------------------------------------
  102. TItsAviLink::TItsAviLink()
  103. {
  104. FCompleted = false;
  105. FEditMode = DB_INIT;
  106. FGridIndex = -1;
  107. MEM_DEL = "N";
  108. //Clear();
  109. }
  110. //---------------------------------------------------------------------------
  111. void TItsAviLink::Clear()
  112. {
  113. AVI_CTLR_MNGM_NMBR = "";
  114. AVI_SECT_NMBR = "";
  115. LINK_ID = "";
  116. ORD = 0;
  117. MEM_DEL = "";
  118. }
  119. //---------------------------------------------------------------------------
  120. TItsAviLink::~TItsAviLink()
  121. {
  122. }
  123. //---------------------------------------------------------------------------
  124. //---------------------------------------------------------------------------
  125. TItsAviManager *ItsAviManager = NULL;
  126. //---------------------------------------------------------------------------
  127. /*
  128. * Avi Manager
  129. */
  130. TItsAviManager::TItsAviManager()
  131. {
  132. }
  133. //---------------------------------------------------------------------------
  134. TItsAviManager::~TItsAviManager()
  135. {
  136. FLists.RemoveAll();
  137. FSectLists.RemoveAll();
  138. }
  139. //---------------------------------------------------------------------------
  140. bool TItsAviManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  141. {
  142. String sQry;
  143. TADOQuery *pADO = NULL;
  144. sQry = "SELECT AVI_CTLR_MNGM_NMBR, \r\n"
  145. " AVI_ID, \r\n"
  146. " LINK_ID, \r\n"
  147. " AVI_LCTN_NM, \r\n"
  148. " AVI_VALD_YN, \r\n"
  149. " AVI_CTLR_IP, \r\n"
  150. " AVI_CTLR_CMNC_PORT, \r\n"
  151. " AVI_MAIN_CTLR_YN, \r\n"
  152. " AVI_MNGM_LANE_NUM, \r\n"
  153. " AVI_CMRA_NUM, \r\n"
  154. " AVI_DTCT_NUM, \r\n"
  155. " AVI_DTCT_NM, \r\n"
  156. " AVI_CLCT_CYCL, \r\n"
  157. " AVI_LAMP_AUTO_YN, \r\n"
  158. " AVI_LAMP_ON_HMS, \r\n"
  159. " AVI_LAMP_OFF_HMS, \r\n"
  160. " AVI_LAMP_ON_YN, \r\n"
  161. " X_CRDN, \r\n"
  162. " Y_CRDN, \r\n"
  163. " RMRK, \r\n"
  164. " DEL_YN \r\n"
  165. " FROM TB_AVI_CTLR \r\n";
  166. //" WHERE DEL_YN = 'N' \r\n";
  167. //" ORDER BY AVI_CTLR_MNGM_NMBR \r\n";
  168. try
  169. {
  170. FLists.Lock();
  171. FLists.RemoveAll();
  172. FSectLists.RemoveAll();
  173. try
  174. {
  175. pADO = new TADOQuery(NULL);
  176. pADO->Close();
  177. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  178. pADO->SQL->Clear();
  179. pADO->SQL->Text = sQry;
  180. pADO->Prepared = true;
  181. pADO->Open();
  182. for( ; !pADO->Eof; pADO->Next())
  183. {
  184. TItsAvi *pObj = new TItsAvi();
  185. pObj->AVI_CTLR_MNGM_NMBR= pADO->FieldByName("AVI_CTLR_MNGM_NMBR")->AsString;
  186. pObj->AVI_ID = pADO->FieldByName("AVI_ID")->AsString;
  187. pObj->LINK_ID = pADO->FieldByName("LINK_ID")->AsString;
  188. pObj->AVI_LCTN_NM = pADO->FieldByName("AVI_LCTN_NM")->AsString;
  189. pObj->AVI_VALD_YN = pADO->FieldByName("AVI_VALD_YN")->AsString;
  190. pObj->AVI_CTLR_IP = pADO->FieldByName("AVI_CTLR_IP")->AsString;
  191. pObj->AVI_CTLR_CMNC_PORT= pADO->FieldByName("AVI_CTLR_CMNC_PORT")->AsString;
  192. pObj->AVI_MAIN_CTLR_YN = pADO->FieldByName("AVI_MAIN_CTLR_YN")->AsString;
  193. pObj->AVI_MNGM_LANE_NUM = pADO->FieldByName("AVI_MNGM_LANE_NUM")->AsString;
  194. pObj->AVI_CMRA_NUM = pADO->FieldByName("AVI_CMRA_NUM")->AsString;
  195. pObj->AVI_DTCT_NUM = pADO->FieldByName("AVI_DTCT_NUM")->AsString;
  196. pObj->AVI_DTCT_NM = pADO->FieldByName("AVI_DTCT_NM")->AsString;
  197. pObj->AVI_CLCT_CYCL = pADO->FieldByName("AVI_CLCT_CYCL")->AsString;
  198. pObj->AVI_LAMP_AUTO_YN = pADO->FieldByName("AVI_LAMP_AUTO_YN")->AsString;
  199. pObj->AVI_LAMP_ON_HMS = pADO->FieldByName("AVI_LAMP_ON_HMS")->AsString;
  200. pObj->AVI_LAMP_OFF_HMS = pADO->FieldByName("AVI_LAMP_OFF_HMS")->AsString;
  201. pObj->AVI_LAMP_ON_YN = pADO->FieldByName("AVI_LAMP_ON_YN")->AsString;
  202. pObj->X_CRDN = pADO->FieldByName("X_CRDN")->AsString;
  203. pObj->Y_CRDN = pADO->FieldByName("Y_CRDN")->AsString;
  204. pObj->RMRK = pADO->FieldByName("RMRK")->AsString;
  205. pObj->DEL_YN = pADO->FieldByName("DEL_YN")->AsString;
  206. FLists.Push(pObj->AVI_CTLR_MNGM_NMBR, pObj);
  207. pObj->Completed = true;
  208. pObj->MEM_DEL = "N";
  209. }
  210. }
  211. catch(EDatabaseError &E)
  212. {
  213. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  214. DBERRORMSG("TItsAviManager::LoadFromDb", String(E.ClassName()), E.Message, sQry);
  215. throw Exception(String(E.ClassName()) + E.Message);
  216. }
  217. catch(Exception &exception)
  218. {
  219. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  220. DBERRORMSG("TItsAviManager::LoadFromDb", String(exception.ClassName()), exception.Message, sQry);
  221. throw Exception(String(exception.ClassName()) + exception.Message);
  222. }
  223. }
  224. __finally
  225. {
  226. if (pADO)
  227. {
  228. pADO->Close();
  229. delete pADO;
  230. }
  231. FLists.UnLock();
  232. }
  233. return true;
  234. }
  235. //---------------------------------------------------------------------------
  236. bool TItsAviManager::LoadFromDtctDb(TADOConnection *ADbConn/*=NULL*/)
  237. {
  238. String sQry;
  239. TADOQuery *pADO = NULL;
  240. sQry = "SELECT * \r\n"
  241. " FROM TB_AVI_DTCT_MSTR \r\n";
  242. //" WHERE DEL_YN = 'N' \r\n"
  243. //" ORDER BY AVI_CTLR_MNGM_NMBR, AVI_DTCT_NMBR \r\n";
  244. try
  245. {
  246. TItsAvi *pAvi;
  247. FLists.Lock();
  248. try
  249. {
  250. pADO = new TADOQuery(NULL);
  251. pADO->Close();
  252. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  253. pADO->SQL->Clear();
  254. pADO->SQL->Text = sQry;
  255. pADO->Prepared = true;
  256. pADO->Open();
  257. for( ; !pADO->Eof; pADO->Next())
  258. {
  259. String CTLR_MNGM_NMBR = pADO->FieldByName("AVI_CTLR_MNGM_NMBR")->AsString;
  260. pAvi = FLists.Find(CTLR_MNGM_NMBR);
  261. if (!pAvi) continue;
  262. TItsAviDtct *pObj = new TItsAviDtct();
  263. pObj->CTLR_MNGM_NMBR = CTLR_MNGM_NMBR;
  264. pObj->DTCT_NMBR = pADO->FieldByName("AVI_DTCT_NMBR")->AsString;
  265. pObj->DTCT_NM = pADO->FieldByName("AVI_DTCT_NM")->AsString;
  266. pObj->DTCT_TYPE_CD = pADO->FieldByName("DTCT_TYPE_CD")->AsString;
  267. pObj->ISTL_LANE = pADO->FieldByName("ISTL_LANE")->AsString;
  268. pObj->USE_YN = pADO->FieldByName("USE_YN")->AsString;
  269. pObj->DEL_YN = pADO->FieldByName("DEL_YN")->AsString;
  270. pObj->MAX_TFVL = pADO->FieldByName("MAX_TFVL")->AsInteger;
  271. pObj->MIN_TFVL = pADO->FieldByName("MIN_TFVL")->AsInteger;
  272. pObj->MAX_OCPY_RATE = pADO->FieldByName("MAX_OCPY_RATE")->AsFloat;
  273. pObj->MIN_OCPY_RATE = pADO->FieldByName("MIN_OCPY_RATE")->AsFloat;
  274. pObj->MIN_SPED = pADO->FieldByName("MIN_SPED")->AsInteger;
  275. pObj->MAX_SPED = pADO->FieldByName("MAX_SPED")->AsInteger;
  276. pAvi->FDtctLists.Push(pObj->DTCT_NMBR, pObj);
  277. pObj->Completed = true;
  278. pObj->MEM_DEL = "N";
  279. }
  280. }
  281. catch(EDatabaseError &E)
  282. {
  283. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  284. DBERRORMSG("TItsAviManager::LoadFromDtctDb", String(E.ClassName()), E.Message, sQry);
  285. throw Exception(String(E.ClassName()) + E.Message);
  286. }
  287. catch(Exception &exception)
  288. {
  289. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  290. DBERRORMSG("TItsAviManager::LoadFromDtctDb", String(exception.ClassName()), exception.Message, sQry);
  291. throw Exception(String(exception.ClassName()) + exception.Message);
  292. }
  293. }
  294. __finally
  295. {
  296. if (pADO)
  297. {
  298. pADO->Close();
  299. delete pADO;
  300. }
  301. FLists.UnLock();
  302. }
  303. return true;
  304. }
  305. //---------------------------------------------------------------------------
  306. bool TItsAviManager::LoadFromSectDb(TADOConnection *ADbConn/*=NULL*/)
  307. {
  308. String sQry;
  309. TADOQuery *pADO = NULL;
  310. sQry = "SELECT A.AVI_CTLR_MNGM_NMBR, \r\n"
  311. " A.AVI_SECT_NMBR, \r\n"
  312. " A.ORD, \r\n"
  313. " B.AVI_SECT_NMBR, \r\n"
  314. " B.STRT_SPOT_NM, \r\n"
  315. " B.END_SPOT_NM, \r\n"
  316. " B.AVI_SECT_NM, \r\n"
  317. " B.AVI_SECT_DSTC, \r\n"
  318. " B.SHRT_PASS_HH, \r\n"
  319. " B.LNST_PASS_HH, \r\n"
  320. " B.SPOT_NUM, \r\n"
  321. " B.STND_DRFT_VAL, \r\n"
  322. " B.MIN_SPED, \r\n"
  323. " B.MAX_SPED, \r\n"
  324. " B.SMTH_FCTR, \r\n"
  325. " B.DEL_YN \r\n"
  326. " FROM TB_AVI_SECT_CNFG A, \r\n"
  327. " TB_AVI_SECT_MSTR B \r\n"
  328. " WHERE A.AVI_SECT_NMBR = B.AVI_SECT_NMBR \r\n"
  329. " ORDER BY A.AVI_CTLR_MNGM_NMBR, A.ORD \r\n";
  330. try
  331. {
  332. TItsAvi *pAvi;
  333. FLists.Lock();
  334. try
  335. {
  336. pADO = new TADOQuery(NULL);
  337. pADO->Close();
  338. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  339. pADO->SQL->Clear();
  340. pADO->SQL->Text = sQry;
  341. pADO->Prepared = true;
  342. pADO->Open();
  343. for( ; !pADO->Eof; pADO->Next())
  344. {
  345. String AVI_CTLR_MNGM_NMBR = pADO->FieldByName("AVI_CTLR_MNGM_NMBR")->AsString;
  346. pAvi = FLists.Find(AVI_CTLR_MNGM_NMBR);
  347. if (!pAvi) continue;
  348. TItsAviSect *pObj = new TItsAviSect();
  349. pObj->AVI_CTLR_MNGM_NMBR = AVI_CTLR_MNGM_NMBR;
  350. pObj->ORD = pADO->FieldByName("ORD")->AsInteger;
  351. pObj->AVI_SECT_NMBR = pADO->FieldByName("AVI_SECT_NMBR")->AsString;
  352. pObj->STRT_SPOT_NM = pADO->FieldByName("STRT_SPOT_NM")->AsString;
  353. pObj->END_SPOT_NM = pADO->FieldByName("END_SPOT_NM")->AsString;
  354. pObj->AVI_SECT_NM = pADO->FieldByName("AVI_SECT_NM")->AsString;
  355. pObj->AVI_SECT_DSTC = pADO->FieldByName("AVI_SECT_DSTC")->AsString;
  356. pObj->SHRT_PASS_HH = pADO->FieldByName("SHRT_PASS_HH")->AsString;
  357. pObj->LNST_PASS_HH = pADO->FieldByName("LNST_PASS_HH")->AsString;
  358. pObj->SPOT_NUM = pADO->FieldByName("SPOT_NUM")->AsString;
  359. pObj->STND_DRFT_VAL = pADO->FieldByName("STND_DRFT_VAL")->AsString;
  360. pObj->MIN_SPED = pADO->FieldByName("MIN_SPED")->AsString;
  361. pObj->MAX_SPED = pADO->FieldByName("MAX_SPED")->AsString;
  362. pObj->SMTH_FCTR = pADO->FieldByName("SMTH_FCTR")->AsString;
  363. pObj->DEL_YN = pADO->FieldByName("DEL_YN")->AsString;
  364. pAvi->FSubLists.Push(pObj->AVI_SECT_NMBR, pObj);
  365. pObj->Completed = true;
  366. pObj->MEM_DEL = "N";
  367. TItsAviSect *pTmpObj = FSectLists.Find(pObj->AVI_SECT_NMBR);
  368. if (!pTmpObj)
  369. {
  370. TItsAviSect *pTmpObj = new TItsAviSect();
  371. pTmpObj->AVI_CTLR_MNGM_NMBR = pObj->AVI_CTLR_MNGM_NMBR;
  372. pTmpObj->ORD = pObj->ORD;
  373. pTmpObj->AVI_SECT_NMBR = pObj->AVI_SECT_NMBR;
  374. pTmpObj->STRT_SPOT_NM = pObj->STRT_SPOT_NM;
  375. pTmpObj->END_SPOT_NM = pObj->END_SPOT_NM;
  376. pTmpObj->AVI_SECT_NM = pObj->AVI_SECT_NM;
  377. pTmpObj->AVI_SECT_DSTC = pObj->AVI_SECT_DSTC;
  378. pTmpObj->SHRT_PASS_HH = pObj->SHRT_PASS_HH;
  379. pTmpObj->LNST_PASS_HH = pObj->LNST_PASS_HH;
  380. pTmpObj->SPOT_NUM = pObj->SPOT_NUM;
  381. pTmpObj->STND_DRFT_VAL = pObj->STND_DRFT_VAL;
  382. pTmpObj->MIN_SPED = pObj->MIN_SPED;
  383. pTmpObj->MAX_SPED = pObj->MAX_SPED;
  384. pTmpObj->SMTH_FCTR = pObj->SMTH_FCTR;
  385. pTmpObj->DEL_YN = pObj->DEL_YN;
  386. pTmpObj->Completed = true;
  387. pTmpObj->MEM_DEL = "N";
  388. FSectLists.Push(pTmpObj->AVI_SECT_NMBR, pTmpObj);
  389. }
  390. }
  391. }
  392. catch(EDatabaseError &E)
  393. {
  394. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  395. DBERRORMSG("TItsAviManager::LoadFromSectDb", String(E.ClassName()), E.Message, sQry);
  396. throw Exception(String(E.ClassName()) + E.Message);
  397. }
  398. catch(Exception &exception)
  399. {
  400. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  401. DBERRORMSG("TItsAviManager::LoadFromSectDb", String(exception.ClassName()), exception.Message, sQry);
  402. throw Exception(String(exception.ClassName()) + exception.Message);
  403. }
  404. }
  405. __finally
  406. {
  407. if (pADO)
  408. {
  409. pADO->Close();
  410. delete pADO;
  411. }
  412. FLists.UnLock();
  413. }
  414. return true;
  415. }
  416. //---------------------------------------------------------------------------
  417. bool TItsAviManager::LoadFromSectLinkDb(TADOConnection *ADbConn/*=NULL*/)
  418. {
  419. String sQry;
  420. TADOQuery *pADO = NULL;
  421. sQry = "SELECT A.AVI_CTLR_MNGM_NMBR, \r\n"
  422. " A.AVI_SECT_NMBR, \r\n"
  423. " B.LINK_ID, \r\n"
  424. " B.ORD \r\n"
  425. " FROM TB_AVI_SECT_CNFG A, \r\n"
  426. " TB_AVI_SECT_LINK B \r\n"
  427. " WHERE A.AVI_SECT_NMBR = B.AVI_SECT_NMBR \r\n"
  428. " ORDER BY A.AVI_CTLR_MNGM_NMBR, A.AVI_SECT_NMBR, B.ORD \r\n";
  429. try
  430. {
  431. TItsAvi *pAvi;
  432. TItsAviSect *pAviSect;
  433. FLists.Lock();
  434. try
  435. {
  436. pADO = new TADOQuery(NULL);
  437. pADO->Close();
  438. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  439. pADO->SQL->Clear();
  440. pADO->SQL->Text = sQry;
  441. pADO->Prepared = true;
  442. pADO->Open();
  443. for( ; !pADO->Eof; pADO->Next())
  444. {
  445. String AVI_CTLR_MNGM_NMBR = pADO->FieldByName("AVI_CTLR_MNGM_NMBR")->AsString;
  446. pAvi = FLists.Find(AVI_CTLR_MNGM_NMBR);
  447. if (!pAvi) continue;
  448. String AVI_SECT_NMBR = pADO->FieldByName("AVI_SECT_NMBR")->AsString;
  449. pAviSect = pAvi->FSubLists.Find(AVI_SECT_NMBR);
  450. if (!pAviSect) continue;
  451. TItsAviLink *pObj = new TItsAviLink();
  452. pObj->AVI_CTLR_MNGM_NMBR = AVI_CTLR_MNGM_NMBR;
  453. pObj->AVI_SECT_NMBR = AVI_SECT_NMBR;
  454. pObj->LINK_ID = pADO->FieldByName("LINK_ID")->AsString;
  455. pObj->ORD = pADO->FieldByName("ORD")->AsInteger;
  456. pAviSect->FLinkLists.Push(pObj->ORD, pObj);
  457. pObj->Completed = true;
  458. pObj->MEM_DEL = "N";
  459. }
  460. }
  461. catch(EDatabaseError &E)
  462. {
  463. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  464. DBERRORMSG("TItsAviManager::LoadFromSectLinkDb", String(E.ClassName()), E.Message, sQry);
  465. throw Exception(String(E.ClassName()) + E.Message);
  466. }
  467. catch(Exception &exception)
  468. {
  469. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  470. DBERRORMSG("TItsAviManager::LoadFromSectLinkDb", String(exception.ClassName()), exception.Message, sQry);
  471. throw Exception(String(exception.ClassName()) + exception.Message);
  472. }
  473. }
  474. __finally
  475. {
  476. if (pADO)
  477. {
  478. pADO->Close();
  479. delete pADO;
  480. }
  481. FLists.UnLock();
  482. }
  483. return true;
  484. }
  485. //---------------------------------------------------------------------------
  486. bool TItsAviManager::GetNextAviId(String &ANewId, TADOConnection *ADbConn/*=NULL*/)
  487. {
  488. String sQry;
  489. TADOQuery *pADO = NULL;
  490. sQry = "SELECT TO_NUMBER(CASE WHEN EXISTS (SELECT 1 FROM TB_AVI_CTLR) \r\n"
  491. " THEN (SELECT TRIM(MAX(TO_NUMBER(AVI_CTLR_MNGM_NMBR)) + 1) \r\n"
  492. " FROM TB_AVI_CTLR) \r\n"
  493. " ELSE '1' END) NEWID \r\n"
  494. " FROM DUAL \r\n";
  495. ANewId = "";
  496. try
  497. {
  498. try
  499. {
  500. pADO = new TADOQuery(NULL);
  501. pADO->Close();
  502. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  503. pADO->SQL->Clear();
  504. pADO->SQL->Text = sQry;
  505. pADO->Prepared = true;
  506. pADO->Open();
  507. ANewId = pADO->FieldByName("NEWID")->AsString;
  508. return true;
  509. }
  510. catch(EDatabaseError &E)
  511. {
  512. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  513. DBERRORMSG("TItsAviManager::GetNextAviId", String(E.ClassName()), E.Message, sQry);
  514. throw Exception(String(E.ClassName()) + E.Message);
  515. }
  516. catch(Exception &exception)
  517. {
  518. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  519. DBERRORMSG("TItsAviManager::GetNextAviId", String(exception.ClassName()), exception.Message, sQry);
  520. throw Exception(String(exception.ClassName()) + exception.Message);
  521. }
  522. }
  523. __finally
  524. {
  525. if (pADO)
  526. {
  527. pADO->Close();
  528. delete pADO;
  529. }
  530. }
  531. return false;
  532. }
  533. //---------------------------------------------------------------------------
  534. bool TItsAviManager::GetNextAviSectId(String &ANewId, TADOConnection *ADbConn/*=NULL*/)
  535. {
  536. String sQry;
  537. TADOQuery *pADO = NULL;
  538. sQry = "SELECT TO_NUMBER(CASE WHEN EXISTS (SELECT 1 FROM TB_AVI_SECT_MSTR) \r\n"
  539. " THEN (SELECT TRIM(MAX(TO_NUMBER(AVI_SECT_NMBR)) + 1) \r\n"
  540. " FROM TB_AVI_SECT_MSTR) \r\n"
  541. " ELSE '1' END) NEWID \r\n"
  542. " FROM DUAL \r\n";
  543. ANewId = "";
  544. try
  545. {
  546. try
  547. {
  548. pADO = new TADOQuery(NULL);
  549. pADO->Close();
  550. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  551. pADO->SQL->Clear();
  552. pADO->SQL->Text = sQry;
  553. pADO->Prepared = true;
  554. pADO->Open();
  555. ANewId = pADO->FieldByName("NEWID")->AsString;
  556. return true;
  557. }
  558. catch(EDatabaseError &E)
  559. {
  560. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  561. DBERRORMSG("TItsAviManager::GetNextAviSectId", String(E.ClassName()), E.Message, sQry);
  562. throw Exception(String(E.ClassName()) + E.Message);
  563. }
  564. catch(Exception &exception)
  565. {
  566. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  567. DBERRORMSG("TItsAviManager::GetNextAviSectId", String(exception.ClassName()), exception.Message, sQry);
  568. throw Exception(String(exception.ClassName()) + exception.Message);
  569. }
  570. }
  571. __finally
  572. {
  573. if (pADO)
  574. {
  575. pADO->Close();
  576. delete pADO;
  577. }
  578. }
  579. return false;
  580. }
  581. //---------------------------------------------------------------------------
  582. bool TItsAviManager::DeleteAvi(TItsAvi *AObj, TADOConnection *ADbConn/*=NULL*/)
  583. {
  584. String sQry;
  585. TADOQuery *pADO = NULL;
  586. sQry = "UPDATE TB_AVI_CTLR \r\n"
  587. " SET DEL_YN = 'Y' \r\n"
  588. " WHERE ID = :p01 \r\n";
  589. try
  590. {
  591. FLists.Lock();
  592. try
  593. {
  594. pADO = new TADOQuery(NULL);
  595. pADO->Close();
  596. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  597. pADO->SQL->Clear();
  598. pADO->SQL->Text = sQry;
  599. pADO->Parameters->ParamByName("p01")->Value = AObj->AVI_CTLR_MNGM_NMBR;
  600. pADO->ExecSQL();
  601. sQry = "DELETE TB_FCLT_INFR \r\n"
  602. " WHERE FCLT_ID = :p01 \r\n";
  603. //" AND FCLT_TYPE = 'AVI' \r\n";
  604. pADO->SQL->Clear();
  605. pADO->SQL->Text = sQry;
  606. pADO->Parameters->ParamByName("p01")->Value = AObj->AVI_CTLR_MNGM_NMBR;
  607. pADO->ExecSQL();
  608. return true;
  609. }
  610. catch(EDatabaseError &E)
  611. {
  612. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  613. DBERRORMSG("TItsAviManager::DeleteAvi", String(E.ClassName()), E.Message, sQry);
  614. throw Exception(String(E.ClassName()) + E.Message);
  615. }
  616. catch(Exception &exception)
  617. {
  618. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  619. DBERRORMSG("TItsAviManager::DeleteAvi", String(exception.ClassName()), exception.Message, sQry);
  620. throw Exception(String(exception.ClassName()) + exception.Message);
  621. }
  622. }
  623. __finally
  624. {
  625. if (pADO)
  626. {
  627. pADO->Close();
  628. delete pADO;
  629. }
  630. FLists.UnLock();
  631. }
  632. return true;
  633. }
  634. //---------------------------------------------------------------------------
  635. bool TItsAviManager::UpdateAvi(TItsAvi *AObj, TADOConnection *ADbConn/*=NULL*/)
  636. {
  637. String sQry;
  638. TADOQuery *pADO = NULL;
  639. sQry = "UPDATE TB_AVI_CTLR \r\n"
  640. " SET AVI_ID = :p02, \r\n"
  641. " LINK_ID = :p03, \r\n"
  642. " AVI_LCTN_NM = :p04, \r\n"
  643. " AVI_VALD_YN = :p05, \r\n"
  644. " AVI_CTLR_IP = :p06, \r\n"
  645. " AVI_CTLR_CMNC_PORT = :p07, \r\n"
  646. " AVI_MAIN_CTLR_YN = :p08, \r\n"
  647. " AVI_MNGM_LANE_NUM = :p09, \r\n"
  648. " AVI_CMRA_NUM = :p10, \r\n"
  649. " AVI_DTCT_NUM = :p11, \r\n"
  650. " AVI_DTCT_NM = :p12, \r\n"
  651. " AVI_CLCT_CYCL = :p13, \r\n"
  652. " AVI_LAMP_AUTO_YN = :p14, \r\n"
  653. " AVI_LAMP_ON_HMS = :p15, \r\n"
  654. " AVI_LAMP_OFF_HMS = :p16, \r\n"
  655. " AVI_LAMP_ON_YN = :p17, \r\n"
  656. " X_CRDN = :p18, \r\n"
  657. " Y_CRDN = :p19, \r\n"
  658. " RMRK = :p20, \r\n"
  659. " DEL_YN = :p21 \r\n"
  660. " WHERE AVI_CTLR_MNGM_NMBR = :p01 \r\n";
  661. try
  662. {
  663. FLists.Lock();
  664. try
  665. {
  666. pADO = new TADOQuery(NULL);
  667. pADO->Close();
  668. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  669. pADO->SQL->Clear();
  670. pADO->SQL->Text = sQry;
  671. pADO->Parameters->ParamByName("p01")->Value = AObj->AVI_CTLR_MNGM_NMBR;
  672. pADO->Parameters->ParamByName("p02")->Value = AObj->AVI_ID;
  673. pADO->Parameters->ParamByName("p03")->Value = AObj->LINK_ID;
  674. pADO->Parameters->ParamByName("p04")->Value = AObj->AVI_LCTN_NM;
  675. pADO->Parameters->ParamByName("p05")->Value = AObj->AVI_VALD_YN;
  676. pADO->Parameters->ParamByName("p06")->Value = AObj->AVI_CTLR_IP;
  677. pADO->Parameters->ParamByName("p07")->Value = AObj->AVI_CTLR_CMNC_PORT;
  678. pADO->Parameters->ParamByName("p08")->Value = AObj->AVI_MAIN_CTLR_YN;
  679. pADO->Parameters->ParamByName("p09")->Value = AObj->AVI_MNGM_LANE_NUM;
  680. pADO->Parameters->ParamByName("p10")->Value = AObj->AVI_CMRA_NUM;
  681. pADO->Parameters->ParamByName("p11")->Value = AObj->AVI_DTCT_NUM;
  682. pADO->Parameters->ParamByName("p12")->Value = AObj->AVI_DTCT_NM;
  683. pADO->Parameters->ParamByName("p13")->Value = AObj->AVI_CLCT_CYCL;
  684. pADO->Parameters->ParamByName("p14")->Value = AObj->AVI_LAMP_AUTO_YN;
  685. pADO->Parameters->ParamByName("p15")->Value = AObj->AVI_LAMP_ON_HMS;
  686. pADO->Parameters->ParamByName("p16")->Value = AObj->AVI_LAMP_OFF_HMS;
  687. pADO->Parameters->ParamByName("p17")->Value = AObj->AVI_LAMP_ON_YN;
  688. pADO->Parameters->ParamByName("p18")->Value = AObj->X_CRDN;
  689. pADO->Parameters->ParamByName("p19")->Value = AObj->Y_CRDN;
  690. pADO->Parameters->ParamByName("p20")->Value = AObj->RMRK;
  691. pADO->Parameters->ParamByName("p21")->Value = AObj->DEL_YN;
  692. pADO->ExecSQL();
  693. sQry = "UPDATE TB_FCLT_INFR \r\n"
  694. " SET FCLT_LCTN = :p02 \r\n"
  695. " WHERE FCLT_ID = :p01 \r\n";
  696. //" AND FCLT_TYPE = 'AVI' \r\n";
  697. pADO->SQL->Clear();
  698. pADO->SQL->Text = sQry;
  699. pADO->Parameters->ParamByName("p01")->Value = AObj->AVI_CTLR_MNGM_NMBR;
  700. pADO->Parameters->ParamByName("p02")->Value = AObj->AVI_LCTN_NM;
  701. pADO->ExecSQL();
  702. return true;
  703. }
  704. catch(EDatabaseError &E)
  705. {
  706. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  707. DBERRORMSG("TItsAviManager::UpdateAvi", String(E.ClassName()), E.Message, sQry);
  708. throw Exception(String(E.ClassName()) + E.Message);
  709. }
  710. catch(Exception &exception)
  711. {
  712. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  713. DBERRORMSG("TItsAviManager::UpdateAvi", String(exception.ClassName()), exception.Message, sQry);
  714. throw Exception(String(exception.ClassName()) + exception.Message);
  715. }
  716. }
  717. __finally
  718. {
  719. if (pADO)
  720. {
  721. pADO->Close();
  722. delete pADO;
  723. }
  724. FLists.UnLock();
  725. }
  726. return true;
  727. }
  728. //---------------------------------------------------------------------------
  729. bool TItsAviManager::InsertAvi(TItsAvi *AObj, TADOConnection *ADbConn/*=NULL*/)
  730. {
  731. String sQry;
  732. TADOQuery *pADO = NULL;
  733. sQry = "INSERT INTO TB_AVI_CTLR(AVI_CTLR_MNGM_NMBR, AVI_ID, LINK_ID, AVI_LCTN_NM, AVI_VALD_YN, AVI_CTLR_IP, \r\n"
  734. " AVI_CTLR_CMNC_PORT, AVI_MAIN_CTLR_YN, AVI_MNGM_LANE_NUM, AVI_CMRA_NUM, \r\n"
  735. " AVI_DTCT_NUM, AVI_DTCT_NM, AVI_CLCT_CYCL, AVI_LAMP_AUTO_YN, AVI_LAMP_ON_HMS, \r\n"
  736. " AVI_LAMP_OFF_HMS, AVI_LAMP_ON_YN, X_CRDN, Y_CRDN, RMRK, DEL_YN ) \r\n"
  737. " VALUES(:p01, :p02, :p03, :p04, :p05, :p06, \r\n"
  738. " :p07, :p08, :p09, :p10, \r\n"
  739. " :p11, :p12, :p13, :p14, :p15, \r\n"
  740. " :p16, :p17, :p18, :p19, :p20, :p21 ) \r\n";
  741. try
  742. {
  743. FLists.Lock();
  744. try
  745. {
  746. pADO = new TADOQuery(NULL);
  747. pADO->Close();
  748. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  749. pADO->SQL->Clear();
  750. pADO->SQL->Text = sQry;
  751. pADO->Parameters->ParamByName("p01")->Value = AObj->AVI_CTLR_MNGM_NMBR;
  752. pADO->Parameters->ParamByName("p01")->Value = AObj->AVI_CTLR_MNGM_NMBR;
  753. pADO->Parameters->ParamByName("p02")->Value = AObj->AVI_ID;
  754. pADO->Parameters->ParamByName("p03")->Value = AObj->LINK_ID;
  755. pADO->Parameters->ParamByName("p04")->Value = AObj->AVI_LCTN_NM;
  756. pADO->Parameters->ParamByName("p05")->Value = AObj->AVI_VALD_YN;
  757. pADO->Parameters->ParamByName("p06")->Value = AObj->AVI_CTLR_IP;
  758. pADO->Parameters->ParamByName("p07")->Value = AObj->AVI_CTLR_CMNC_PORT;
  759. pADO->Parameters->ParamByName("p08")->Value = AObj->AVI_MAIN_CTLR_YN;
  760. pADO->Parameters->ParamByName("p09")->Value = AObj->AVI_MNGM_LANE_NUM;
  761. pADO->Parameters->ParamByName("p10")->Value = AObj->AVI_CMRA_NUM;
  762. pADO->Parameters->ParamByName("p11")->Value = AObj->AVI_DTCT_NUM;
  763. pADO->Parameters->ParamByName("p12")->Value = AObj->AVI_DTCT_NM;
  764. pADO->Parameters->ParamByName("p13")->Value = AObj->AVI_CLCT_CYCL;
  765. pADO->Parameters->ParamByName("p14")->Value = AObj->AVI_LAMP_AUTO_YN;
  766. pADO->Parameters->ParamByName("p15")->Value = AObj->AVI_LAMP_ON_HMS;
  767. pADO->Parameters->ParamByName("p16")->Value = AObj->AVI_LAMP_OFF_HMS;
  768. pADO->Parameters->ParamByName("p17")->Value = AObj->AVI_LAMP_ON_YN;
  769. pADO->Parameters->ParamByName("p18")->Value = AObj->X_CRDN;
  770. pADO->Parameters->ParamByName("p19")->Value = AObj->Y_CRDN;
  771. pADO->Parameters->ParamByName("p20")->Value = AObj->RMRK;
  772. pADO->Parameters->ParamByName("p21")->Value = AObj->DEL_YN;
  773. pADO->ExecSQL();
  774. sQry = "INSERT INTO TB_FCLT_INFR(FCLT_ID, FCLT_TYPE, FCLT_LCTN, RSCE_YN, DEL_YN, USE_YEAR, AMT) \r\n"
  775. " VALUES(:p01, 'AVI', :p03, 'N', 'N', '0', '0') \r\n";
  776. pADO->SQL->Clear();
  777. pADO->SQL->Text = sQry;
  778. pADO->Parameters->ParamByName("p01")->Value = AObj->AVI_CTLR_MNGM_NMBR;
  779. pADO->Parameters->ParamByName("p03")->Value = AObj->AVI_LCTN_NM;
  780. pADO->ExecSQL();
  781. return true;
  782. }
  783. catch(EDatabaseError &E)
  784. {
  785. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  786. DBERRORMSG("TItsAviManager::InsertAvi", String(E.ClassName()), E.Message, sQry);
  787. throw Exception(String(E.ClassName()) + E.Message);
  788. }
  789. catch(Exception &exception)
  790. {
  791. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  792. DBERRORMSG("TItsAviManager::InsertAvi", String(exception.ClassName()), exception.Message, sQry);
  793. throw Exception(String(exception.ClassName()) + exception.Message);
  794. }
  795. }
  796. __finally
  797. {
  798. if (pADO)
  799. {
  800. pADO->Close();
  801. delete pADO;
  802. }
  803. FLists.UnLock();
  804. }
  805. return true;
  806. }
  807. //---------------------------------------------------------------------------
  808. bool TItsAviManager::DeleteAviSectSubTable(TItsAviSect *AObj, TADOConnection *ADbConn/*=NULL*/)
  809. {
  810. String sQry;
  811. TADOQuery *pADO = NULL;
  812. try
  813. {
  814. try
  815. {
  816. pADO = new TADOQuery(NULL);
  817. pADO->Close();
  818. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  819. sQry = "DELETE TB_AVI_SECT_LINK \r\n"
  820. " WHERE AVI_SECT_NMBR = :p01 \r\n";
  821. pADO->SQL->Clear();
  822. pADO->SQL->Text = sQry;
  823. pADO->Parameters->ParamByName("p01")->Value = AObj->AVI_SECT_NMBR;
  824. pADO->ExecSQL();
  825. return true;
  826. }
  827. catch(EDatabaseError &E)
  828. {
  829. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  830. DBERRORMSG("TItsAviManager::DeleteAviSectSubTable", String(E.ClassName()), E.Message, sQry);
  831. throw Exception(String(E.ClassName()) + E.Message);
  832. }
  833. catch(Exception &exception)
  834. {
  835. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  836. DBERRORMSG("TItsAviManager::DeleteAviSectSubTable", String(exception.ClassName()), exception.Message, sQry);
  837. throw Exception(String(exception.ClassName()) + exception.Message);
  838. }
  839. }
  840. __finally
  841. {
  842. if (pADO)
  843. {
  844. pADO->Close();
  845. delete pADO;
  846. }
  847. }
  848. return true;
  849. }
  850. //---------------------------------------------------------------------------
  851. bool TItsAviManager::DeleteAviSect(TItsAviSect *AObj, TADOConnection *ADbConn/*=NULL*/)
  852. {
  853. String sQry;
  854. TADOQuery *pADO = NULL;
  855. sQry = "UPDATE TB_AVI_SECT_MSTR \r\n"
  856. " SET DEL_YN = 'Y' \r\n"
  857. " WHERE AVI_SECT_NMBR = :p01 \r\n";
  858. try
  859. {
  860. DeleteAviSectSubTable(AObj, ADbConn);
  861. try
  862. {
  863. pADO = new TADOQuery(NULL);
  864. pADO->Close();
  865. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  866. pADO->SQL->Clear();
  867. pADO->SQL->Text = sQry;
  868. pADO->Parameters->ParamByName("p01")->Value = AObj->AVI_SECT_NMBR;
  869. pADO->ExecSQL();
  870. sQry = "DELETE TB_AVI_SECT_CNFG \r\n"
  871. " WHERE AVI_SECT_NMBR = :p01 \r\n"
  872. " AND AVI_CTLR_MNGM_NMBR = :p02 \r\n";
  873. pADO->SQL->Clear();
  874. pADO->SQL->Text = sQry;
  875. pADO->Parameters->ParamByName("p01")->Value = AObj->AVI_SECT_NMBR;
  876. pADO->Parameters->ParamByName("p02")->Value = AObj->AVI_CTLR_MNGM_NMBR;
  877. pADO->ExecSQL();
  878. return true;
  879. }
  880. catch(EDatabaseError &E)
  881. {
  882. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  883. DBERRORMSG("TItsAviManager::DeleteAviSect", String(E.ClassName()), E.Message, sQry);
  884. throw Exception(String(E.ClassName()) + E.Message);
  885. }
  886. catch(Exception &exception)
  887. {
  888. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  889. DBERRORMSG("TItsAviManager::DeleteAviSect", String(exception.ClassName()), exception.Message, sQry);
  890. throw Exception(String(exception.ClassName()) + exception.Message);
  891. }
  892. }
  893. __finally
  894. {
  895. if (pADO)
  896. {
  897. pADO->Close();
  898. delete pADO;
  899. }
  900. }
  901. return true;
  902. }
  903. //---------------------------------------------------------------------------
  904. bool TItsAviManager::SaveAviSect(TItsAviSect *AObj, TADOConnection *ADbConn/*=NULL*/)
  905. {
  906. String sQry;
  907. TADOQuery *pADO = NULL;
  908. sQry = "MERGE INTO TB_AVI_SECT_MSTR L \r\n"
  909. "USING (SELECT :p01 AS AVI_SECT_NMBR, \r\n"
  910. " :p02 AS STRT_SPOT_NM, \r\n"
  911. " :p03 AS END_SPOT_NM, \r\n"
  912. " :p04 AS AVI_SECT_NM, \r\n"
  913. " :p05 AS AVI_SECT_DSTC, \r\n"
  914. " :p06 AS SHRT_PASS_HH, \r\n"
  915. " :p07 AS LNST_PASS_HH, \r\n"
  916. " :p08 AS SPOT_NUM, \r\n"
  917. " :p09 AS STND_DRFT_VAL, \r\n"
  918. " :p10 AS MIN_SPED, \r\n"
  919. " :p11 AS MAX_SPED, \r\n"
  920. " :p12 AS SMTH_FCTR, \r\n"
  921. " :p13 AS DEL_YN \r\n"
  922. " FROM DUAL) M \r\n"
  923. " ON (L.AVI_SECT_NMBR = M.AVI_SECT_NMBR) \r\n"
  924. "WHEN MATCHED THEN \r\n"
  925. "UPDATE SET STRT_SPOT_NM = M.STRT_SPOT_NM, \r\n"
  926. " END_SPOT_NM = M.END_SPOT_NM, \r\n"
  927. " AVI_SECT_NM = M.AVI_SECT_NM, \r\n"
  928. " AVI_SECT_DSTC = M.AVI_SECT_DSTC, \r\n"
  929. " SHRT_PASS_HH = M.SHRT_PASS_HH, \r\n"
  930. " LNST_PASS_HH = M.LNST_PASS_HH, \r\n"
  931. " SPOT_NUM = M.SPOT_NUM, \r\n"
  932. " STND_DRFT_VAL = M.STND_DRFT_VAL, \r\n"
  933. " MIN_SPED = M.MIN_SPED, \r\n"
  934. " MAX_SPED = M.MAX_SPED, \r\n"
  935. " SMTH_FCTR = M.SMTH_FCTR, \r\n"
  936. " DEL_YN = M.DEL_YN \r\n"
  937. "WHEN NOT MATCHED THEN \r\n"
  938. "INSERT (AVI_SECT_NMBR, STRT_SPOT_NM, END_SPOT_NM, \r\n"
  939. " AVI_SECT_NM, AVI_SECT_DSTC, SHRT_PASS_HH, \r\n"
  940. " LNST_PASS_HH, SPOT_NUM, STND_DRFT_VAL, \r\n"
  941. " MIN_SPED, MAX_SPED, SMTH_FCTR, DEL_YN) \r\n"
  942. "VALUES (M.AVI_SECT_NMBR, M.STRT_SPOT_NM, M.END_SPOT_NM, \r\n"
  943. " M.AVI_SECT_NM, M.AVI_SECT_DSTC, M.SHRT_PASS_HH, \r\n"
  944. " M.LNST_PASS_HH, M.SPOT_NUM, M.STND_DRFT_VAL, \r\n"
  945. " M.MIN_SPED, M.MAX_SPED, M.SMTH_FCTR, M.DEL_YN) \r\n";
  946. try
  947. {
  948. //관련정보를 모두 삭제
  949. DeleteAviSectSubTable(AObj, ADbConn);
  950. try
  951. {
  952. pADO = new TADOQuery(NULL);
  953. pADO->Close();
  954. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  955. pADO->SQL->Clear();
  956. pADO->SQL->Text = sQry;
  957. pADO->Parameters->ParamByName("p01")->Value = AObj->AVI_SECT_NMBR;
  958. pADO->Parameters->ParamByName("p02")->Value = AObj->STRT_SPOT_NM;
  959. pADO->Parameters->ParamByName("p03")->Value = AObj->END_SPOT_NM;
  960. pADO->Parameters->ParamByName("p04")->Value = AObj->AVI_SECT_NM;
  961. pADO->Parameters->ParamByName("p05")->Value = AObj->AVI_SECT_DSTC;
  962. pADO->Parameters->ParamByName("p06")->Value = AObj->SHRT_PASS_HH;
  963. pADO->Parameters->ParamByName("p07")->Value = AObj->LNST_PASS_HH;
  964. pADO->Parameters->ParamByName("p08")->Value = AObj->SPOT_NUM;
  965. pADO->Parameters->ParamByName("p09")->Value = AObj->STND_DRFT_VAL;
  966. pADO->Parameters->ParamByName("p10")->Value = AObj->MIN_SPED;
  967. pADO->Parameters->ParamByName("p11")->Value = AObj->MAX_SPED;
  968. pADO->Parameters->ParamByName("p12")->Value = AObj->SMTH_FCTR;
  969. pADO->Parameters->ParamByName("p13")->Value = AObj->DEL_YN;
  970. pADO->ExecSQL();
  971. sQry = "MERGE INTO TB_AVI_SECT_CNFG L \r\n"
  972. "USING (SELECT :p01 AS AVI_CTLR_MNGM_NMBR, \r\n"
  973. " :p02 AS AVI_SECT_NMBR, \r\n"
  974. " :p03 AS ORD \r\n"
  975. " FROM DUAL) M \r\n"
  976. " ON (L.AVI_CTLR_MNGM_NMBR = M.AVI_CTLR_MNGM_NMBR \r\n"
  977. " AND L.AVI_SECT_NMBR = M.AVI_SECT_NMBR) \r\n"
  978. "WHEN MATCHED THEN \r\n"
  979. "UPDATE SET ORD = M.ORD \r\n"
  980. "WHEN NOT MATCHED THEN \r\n"
  981. "INSERT ( AVI_CTLR_MNGM_NMBR, AVI_SECT_NMBR, ORD) \r\n"
  982. "VALUES (M.AVI_CTLR_MNGM_NMBR, M.AVI_SECT_NMBR, M.ORD) \r\n";
  983. pADO->SQL->Clear();
  984. pADO->SQL->Text = sQry;
  985. pADO->Parameters->ParamByName("p01")->Value = AObj->AVI_CTLR_MNGM_NMBR;
  986. pADO->Parameters->ParamByName("p02")->Value = AObj->AVI_SECT_NMBR;
  987. pADO->Parameters->ParamByName("p03")->Value = AObj->ORD;
  988. pADO->ExecSQL();
  989. //링크구성정보 입력
  990. sQry = "INSERT INTO TB_AVI_SECT_LINK (AVI_SECT_NMBR, LINK_ID, ORD) \r\n"
  991. " VALUES (:p01, :p02, :p03 ) \r\n";
  992. pADO->SQL->Clear();
  993. pADO->SQL->Text = sQry;
  994. FOR_STL(TItsAviLink *, pObj, AObj->FLinkLists)
  995. {
  996. pADO->Parameters->ParamByName("p01")->Value = AObj->AVI_SECT_NMBR;
  997. pADO->Parameters->ParamByName("p02")->Value = pObj->LINK_ID;
  998. pADO->Parameters->ParamByName("p03")->Value = pObj->ORD;
  999. pADO->ExecSQL();
  1000. }
  1001. return true;
  1002. }
  1003. catch(EDatabaseError &E)
  1004. {
  1005. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  1006. DBERRORMSG("TItsAviManager::SaveAviSect", String(E.ClassName()), E.Message, sQry);
  1007. throw Exception(String(E.ClassName()) + E.Message);
  1008. }
  1009. catch(Exception &exception)
  1010. {
  1011. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  1012. DBERRORMSG("TItsAviManager::SaveAviSect", String(exception.ClassName()), exception.Message, sQry);
  1013. throw Exception(String(exception.ClassName()) + exception.Message);
  1014. }
  1015. }
  1016. __finally
  1017. {
  1018. if (pADO)
  1019. {
  1020. pADO->Close();
  1021. delete pADO;
  1022. }
  1023. }
  1024. return true;
  1025. }
  1026. //---------------------------------------------------------------------------