IDB0050MF.cpp 47 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "ITSDbF.h"
  6. #include "AppGlobalF.h"
  7. #include "WindowMsgF.h"
  8. #include "ITSLangTransF.h"
  9. #pragma hdrstop
  10. #include "IDB0050MF.h"
  11. //---------------------------------------------------------------------------
  12. #pragma package(smart_init)
  13. #pragma link "FRAME_LinkListF"
  14. #pragma link "FRAME_IfscListF"
  15. #pragma link "FRAME_RoadListF"
  16. #pragma link "cxButtons"
  17. #pragma link "cxCalc"
  18. #pragma link "cxCheckBox"
  19. #pragma link "cxClasses"
  20. #pragma link "cxContainer"
  21. #pragma link "cxControls"
  22. #pragma link "cxCustomData"
  23. #pragma link "cxData"
  24. #pragma link "cxDataStorage"
  25. #pragma link "cxDropDownEdit"
  26. #pragma link "cxEdit"
  27. #pragma link "cxFilter"
  28. #pragma link "cxGraphics"
  29. #pragma link "cxGrid"
  30. #pragma link "cxGridCustomTableView"
  31. #pragma link "cxGridCustomView"
  32. #pragma link "cxGridLevel"
  33. #pragma link "cxGridTableView"
  34. #pragma link "cxGroupBox"
  35. #pragma link "cxLabel"
  36. #pragma link "cxLookAndFeelPainters"
  37. #pragma link "cxLookAndFeels"
  38. #pragma link "cxMaskEdit"
  39. #pragma link "cxPC"
  40. #pragma link "cxPCdxBarPopupMenu"
  41. #pragma link "cxSpinEdit"
  42. #pragma link "cxSplitter"
  43. #pragma link "cxStyles"
  44. #pragma link "cxTextEdit"
  45. #pragma link "dxSkinBlue"
  46. #pragma link "dxSkinsCore"
  47. #pragma link "dxSkinscxPCPainter"
  48. #pragma resource "*.dfm"
  49. TIDB0050M *IDB0050M = NULL;
  50. //---------------------------------------------------------------------------
  51. __fastcall TIDB0050M::TIDB0050M(TComponent* Owner)
  52. : TForm(Owner)
  53. {
  54. LangTrans->Translate(this, ITSDb_GetConnection());
  55. int nWidth = PnlRight->Width;
  56. int nClientW = ClientWidth;
  57. ITSSkin_Load(this);
  58. CMM_LoadForm(g_sFormsDir, this);
  59. if (ClientWidth < nClientW)
  60. ClientWidth = nClientW;
  61. PnlRight->Width = nWidth;
  62. FTitle = Caption;//"가공파라미터 관리";
  63. cxTabSheet2->TabVisible = false;
  64. cxTabSheet4->TabVisible = false;
  65. PgLink->ActivePage = cxTabSheet1;
  66. TvList0->OptionsView->NoDataToDisplayInfoText = "";
  67. TvList1->OptionsView->NoDataToDisplayInfoText = "";
  68. TvList2->OptionsView->NoDataToDisplayInfoText = "";
  69. TvList3->OptionsView->NoDataToDisplayInfoText = "";
  70. FRAMELinkList1->PnlBottom->Visible = false;
  71. FRAMEIfscList1->PnlBottom->Visible = false;
  72. FRAMERoadList1->PnlBottom->Visible = false;
  73. FRAMELinkList1->TvList->OptionsData->Editing = true;
  74. FRAMEIfscList1->TvList->OptionsData->Editing = true;
  75. FRAMERoadList1->TvList->OptionsData->Editing = true;
  76. FRAMELinkList1->ColumnSel->Visible = true;
  77. FRAMEIfscList1->ColumnSel->Visible = true;
  78. FRAMERoadList1->ColumnSel->Visible = true;
  79. #if 0
  80. if (!MyItsColSysManager)
  81. {
  82. MyItsColSysManager = new TItsColSysManager();
  83. }
  84. #endif
  85. FInit = false;
  86. }
  87. //---------------------------------------------------------------------------
  88. void __fastcall TIDB0050M::CommClose()
  89. {
  90. try
  91. {
  92. #if 0
  93. if (MyItsColSysManager)
  94. {
  95. delete MyItsColSysManager;
  96. MyItsColSysManager = NULL;
  97. }
  98. #endif
  99. CMM_SaveForm(g_sFormsDir, this);
  100. }
  101. catch(...)
  102. {
  103. }
  104. }
  105. //---------------------------------------------------------------------------
  106. void __fastcall TIDB0050M::FormInit()
  107. {
  108. PgLink->Properties->ActivePage = cxTabSheet1;
  109. ADOQry->Connection = ITSDb_GetConnection();
  110. //MyItsColSysManager->LoadFromDb();
  111. LoadCollectSysInfo();
  112. }
  113. //---------------------------------------------------------------------------
  114. void __fastcall TIDB0050M::LoadCollectSysInfo()
  115. {
  116. CMM_ClearGridTableView(TvList0);
  117. CMM_ClearGridTableView(TvList1);
  118. CMM_ClearGridTableView(TvList2);
  119. CMM_ClearGridTableView(TvList3);
  120. TcxDataController *pGDC0 = TvList0->DataController;
  121. TcxDataController *pGDC2 = TvList2->DataController;
  122. TcxDataController *pGDC3 = TvList3->DataController;
  123. int nRow0 = 0;
  124. int nRow2 = 0;
  125. int nRow3 = 0;
  126. FColSysCnt = 0;
  127. try
  128. {
  129. TvList0->BeginUpdate();
  130. TvList1->BeginUpdate();
  131. TvList2->BeginUpdate();
  132. TvList3->BeginUpdate();
  133. //FOR_STL(TItsColSys*, pObj, MyItsColSysManager->FLists)
  134. FOR_STL(TItsColSys*, pObj, ItsColSysManager->FLists)
  135. {
  136. if (pObj->USE_YN == "N") continue;
  137. nRow2 = pGDC2->AppendRecord();
  138. pGDC2->Values[nRow2][ColumnA01->Index] = pObj->CLCT_SYST_NM;
  139. pGDC2->Values[nRow2][ColumnA02->Index] = pObj->CLCT_SYST_CD;
  140. nRow3 = pGDC3->AppendRecord();
  141. pGDC3->Values[nRow3][ColumnC01->Index] = pObj->CLCT_SYST_NM;
  142. pGDC3->Values[nRow3][ColumnC02->Index] = pObj->CLCT_SYST_CD;
  143. pGDC3->Values[nRow3][ColumnC03->Index] = 10;
  144. nRow0 = pGDC0->AppendRecord();
  145. pGDC0->Values[nRow0][ColumnD01->Index] = pObj->CLCT_SYST_NM;
  146. pGDC0->Values[nRow0][ColumnD02->Index] = pObj->CLCT_SYST_CD;
  147. pGDC0->Values[nRow0][ColumnD03->Index] = (nRow0+1);
  148. pGDC0->Values[nRow0][ColumnD04->Index] = nRow3;
  149. FColSysCnt++;
  150. }
  151. }
  152. __finally
  153. {
  154. TvList0->EndUpdate();
  155. TvList1->EndUpdate();
  156. TvList2->EndUpdate();
  157. TvList3->EndUpdate();
  158. }
  159. TcxComboBoxProperties *pcxCboProperties10 = (TcxComboBoxProperties*)ColumnD03->Properties;
  160. pcxCboProperties10->Items->Clear();
  161. for (int ii = 0; ii < FColSysCnt; ii++)
  162. {
  163. pcxCboProperties10->Items->Add(String(ii+1));
  164. }
  165. pcxCboProperties10->Items->Add("사용안함");
  166. }
  167. //---------------------------------------------------------------------------
  168. void __fastcall TIDB0050M::FormShow(TObject *Sender)
  169. {
  170. Refresh();
  171. FormInit();
  172. TmrShow->Enabled = true;
  173. }
  174. //---------------------------------------------------------------------------
  175. void __fastcall TIDB0050M::TmrShowTimer(TObject *Sender)
  176. {
  177. TmrShow->Enabled = false;
  178. BtnSearchClick((TObject*)BtnSearch);
  179. }
  180. //---------------------------------------------------------------------------
  181. void __fastcall TIDB0050M::BtnSearchClick(TObject *Sender)
  182. {
  183. RefreshData();
  184. }
  185. //---------------------------------------------------------------------------
  186. void __fastcall TIDB0050M::RefreshData()
  187. {
  188. FRAMELinkList1->UpdateList();
  189. FRAMEIfscList1->UpdateList();
  190. FRAMERoadList1->UpdateList();
  191. FInit = true;
  192. DisplayLink();
  193. }
  194. //---------------------------------------------------------------------------
  195. void __fastcall TIDB0050M::BtnCloseClick(TObject *Sender)
  196. {
  197. Close();
  198. }
  199. //---------------------------------------------------------------------------
  200. void __fastcall TIDB0050M::FormClose(TObject *Sender, TCloseAction &Action)
  201. {
  202. CommClose();
  203. IDB0050M = NULL;
  204. Action = caFree;
  205. }
  206. //---------------------------------------------------------------------------
  207. void __fastcall TIDB0050M::ChkFMT0Click(TObject *Sender)
  208. {
  209. ChkFMT1->Checked = !ChkFMT0->Checked;
  210. ChangeFMT(ChkFMT1->Checked);
  211. }
  212. //---------------------------------------------------------------------------
  213. void __fastcall TIDB0050M::ChkFMT1Click(TObject *Sender)
  214. {
  215. ChkFMT0->Checked = !ChkFMT1->Checked;
  216. ChangeFMT(ChkFMT1->Checked);
  217. }
  218. //---------------------------------------------------------------------------
  219. void __fastcall TIDB0050M::ChangeFMT(bool AUse)
  220. {
  221. if (AUse)
  222. {
  223. GrpFMT1->Color = clSkyBlue;
  224. GrpFMT1->Enabled = true;
  225. }
  226. else
  227. {
  228. GrpFMT1->Color = clSilver;
  229. GrpFMT1->Enabled = false;
  230. }
  231. }
  232. //---------------------------------------------------------------------------
  233. void __fastcall TIDB0050M::ChkFST1Click(TObject *Sender)
  234. {
  235. ChkFST2->Checked = !ChkFST1->Checked;
  236. ChangeFST(ChkFST1->Checked);
  237. }
  238. //---------------------------------------------------------------------------
  239. void __fastcall TIDB0050M::ChkFST2Click(TObject *Sender)
  240. {
  241. ChkFST1->Checked = !ChkFST2->Checked;
  242. ChangeFST(ChkFST1->Checked);
  243. }
  244. //---------------------------------------------------------------------------
  245. void __fastcall TIDB0050M::ChangeFST(bool AUse)
  246. {
  247. if (AUse)
  248. {
  249. GrpFST1->Color = clSkyBlue;
  250. GrpFST1->Enabled = true;
  251. GrpFST2->Color = clSilver;
  252. GrpFST2->Enabled = false;
  253. }
  254. else
  255. {
  256. GrpFST1->Color = clSilver;
  257. GrpFST1->Enabled = false;
  258. GrpFST2->Color = clSkyBlue;
  259. GrpFST2->Enabled = true;
  260. }
  261. }
  262. //---------------------------------------------------------------------------
  263. void __fastcall TIDB0050M::ChkMCA0Click(TObject *Sender)
  264. {
  265. //사용안함
  266. if (ChkMCA0->Checked == false)
  267. ChkMCA0->Checked = true;
  268. else
  269. ChangeMCA(0);
  270. }
  271. //---------------------------------------------------------------------------
  272. void __fastcall TIDB0050M::ChkMCA2Click(TObject *Sender)
  273. {
  274. //패턴적용
  275. if (ChkMCA2->Checked == false)
  276. ChkMCA2->Checked = true;
  277. else
  278. ChangeMCA(2);
  279. }
  280. //---------------------------------------------------------------------------
  281. void __fastcall TIDB0050M::ChkMCA1Click(TObject *Sender)
  282. {
  283. //단기(15분이동평균)/장기(패턴)
  284. if (ChkMCA1->Checked == false)
  285. ChkMCA1->Checked = true;
  286. else
  287. ChangeMCA(1);
  288. }
  289. //---------------------------------------------------------------------------
  290. void __fastcall TIDB0050M::ChangeMCA(int AType)
  291. {
  292. TNotifyEvent OnChkMCA0 = ChkMCA0->OnClick;
  293. TNotifyEvent OnChkMCA1 = ChkMCA1->OnClick;
  294. TNotifyEvent OnChkMCA2 = ChkMCA2->OnClick;
  295. ChkMCA0->OnClick = NULL;
  296. ChkMCA1->OnClick = NULL;
  297. ChkMCA2->OnClick = NULL;
  298. if (AType == 1)
  299. {
  300. GrpMCA1->Color = clSkyBlue;
  301. GrpMCA1->Enabled = true;
  302. ChkMCA0->Checked = false;
  303. ChkMCA2->Checked = false;
  304. }
  305. else
  306. {
  307. GrpMCA1->Color = clSilver;
  308. GrpMCA1->Enabled = false;
  309. if (AType == 0)
  310. {
  311. ChkMCA1->Checked = false;
  312. ChkMCA2->Checked = false;
  313. }
  314. else
  315. {
  316. ChkMCA0->Checked = false;
  317. ChkMCA1->Checked = false;
  318. }
  319. }
  320. ChkMCA0->OnClick = OnChkMCA0;
  321. ChkMCA1->OnClick = OnChkMCA1;
  322. ChkMCA2->OnClick = OnChkMCA2;
  323. }
  324. //---------------------------------------------------------------------------
  325. void __fastcall TIDB0050M::ChkSMT0Click(TObject *Sender)
  326. {
  327. //사용안함
  328. if (ChkSMT0->Checked == false)
  329. ChkSMT0->Checked = true;
  330. else
  331. ChangeSMT(0);
  332. }
  333. //---------------------------------------------------------------------------
  334. void __fastcall TIDB0050M::ChkSMT1Click(TObject *Sender)
  335. {
  336. //범위값 사용
  337. if (ChkSMT1->Checked == false)
  338. ChkSMT1->Checked = true;
  339. else
  340. ChangeSMT(1);
  341. }
  342. //---------------------------------------------------------------------------
  343. void __fastcall TIDB0050M::ChkSMT2Click(TObject *Sender)
  344. {
  345. //15분 이동평균
  346. if (ChkSMT2->Checked == false)
  347. ChkSMT2->Checked = true;
  348. else
  349. ChangeSMT(2);
  350. }
  351. //---------------------------------------------------------------------------
  352. void __fastcall TIDB0050M::ChangeSMT(int AType)
  353. {
  354. TNotifyEvent OnChkSMT0 = ChkSMT0->OnClick;
  355. TNotifyEvent OnChkSMT1 = ChkSMT1->OnClick;
  356. TNotifyEvent OnChkSMT2 = ChkSMT2->OnClick;
  357. ChkSMT0->OnClick = NULL;
  358. ChkSMT1->OnClick = NULL;
  359. ChkSMT2->OnClick = NULL;
  360. if (AType == 0)
  361. {
  362. GrpSMT1->Color = clSilver;
  363. GrpSMT1->Enabled = false;
  364. GrpSMT2->Color = clSilver;
  365. GrpSMT2->Enabled = false;
  366. ChkSMT1->Checked = false;
  367. ChkSMT2->Checked = false;
  368. }
  369. else
  370. if (AType == 1)
  371. {
  372. GrpSMT1->Color = clSkyBlue;
  373. GrpSMT1->Enabled = true;
  374. GrpSMT2->Color = clSilver;
  375. GrpSMT2->Enabled = false;
  376. ChkSMT0->Checked = false;
  377. ChkSMT2->Checked = false;
  378. }
  379. else
  380. {
  381. GrpSMT1->Color = clSilver;
  382. GrpSMT1->Enabled = false;
  383. GrpSMT2->Color = clSkyBlue;
  384. GrpSMT2->Enabled = true;
  385. ChkSMT0->Checked = false;
  386. ChkSMT1->Checked = false;
  387. }
  388. ChkSMT0->OnClick = OnChkSMT0;
  389. ChkSMT1->OnClick = OnChkSMT1;
  390. ChkSMT2->OnClick = OnChkSMT2;
  391. }
  392. //---------------------------------------------------------------------------
  393. void __fastcall TIDB0050M::BtnListAddClick(TObject *Sender)
  394. {
  395. int nSelRows = TvList1->Controller->SelectedRowCount;
  396. if (nSelRows <= 0)
  397. {
  398. return;
  399. }
  400. try
  401. {
  402. TcxGridDataController *pGDC = (TcxGridDataController *)TvList2->DataController;
  403. TvList1->BeginUpdate();
  404. TvList2->BeginUpdate();
  405. try
  406. {
  407. for (int ii = 0; ii < nSelRows; ii++)
  408. {
  409. int nSelIdx = TvList1->Controller->SelectedRows[ii]->RecordIndex;
  410. int nRow = pGDC->AppendRecord();
  411. pGDC->Values[nRow][ColumnB01->Index] = TvList1->DataController->Values[nSelIdx][ColumnA01->Index];
  412. pGDC->Values[nRow][ColumnB02->Index] = TvList1->DataController->Values[nSelIdx][ColumnA02->Index];
  413. }
  414. TvList1->Controller->DeleteSelection();
  415. }
  416. catch(...)
  417. {
  418. }
  419. }
  420. __finally
  421. {
  422. TvList1->EndUpdate();
  423. TvList2->EndUpdate();
  424. }
  425. }
  426. //---------------------------------------------------------------------------
  427. void __fastcall TIDB0050M::BtnListDeleteClick(TObject *Sender)
  428. {
  429. int nSelRows = TvList2->Controller->SelectedRowCount;
  430. if (nSelRows <= 0)
  431. {
  432. return;
  433. }
  434. try
  435. {
  436. TcxGridDataController *pGDC = (TcxGridDataController *)TvList1->DataController;
  437. TvList1->BeginUpdate();
  438. TvList2->BeginUpdate();
  439. try
  440. {
  441. for (int ii = 0; ii < nSelRows; ii++)
  442. {
  443. int nSelIdx = TvList2->Controller->SelectedRows[ii]->RecordIndex;
  444. int nRow = pGDC->AppendRecord();
  445. pGDC->Values[nRow][ColumnA01->Index] = TvList2->DataController->Values[nSelIdx][ColumnB01->Index];
  446. pGDC->Values[nRow][ColumnA02->Index] = TvList2->DataController->Values[nSelIdx][ColumnB02->Index];
  447. }
  448. TvList2->Controller->DeleteSelection();
  449. }
  450. catch(...)
  451. {
  452. }
  453. }
  454. __finally
  455. {
  456. TvList1->EndUpdate();
  457. TvList2->EndUpdate();
  458. }
  459. }
  460. //---------------------------------------------------------------------------
  461. bool __fastcall TIDB0050M::CheckParameterValue()
  462. {
  463. //필터링 파라미터
  464. FFMTVolMin = FFMTVolMax = FFMTSpdMin = FFMTSpdMax = 0;
  465. if (ChkFMT0->Checked)
  466. {
  467. FFMT = "FMT0"; //사용안함
  468. }
  469. else
  470. if (ChkFMT1->Checked)
  471. {
  472. FFMT = "FMT1"; //범위값사용
  473. FFMTVolMin = SeVolMin->Value;
  474. FFMTVolMax = SeVolMax->Value;
  475. FFMTSpdMin = SeSpdMin->Value;
  476. FFMTSpdMax = SeSpdMax->Value;
  477. if (FFMTVolMin >= FFMTVolMax)
  478. {
  479. Application->MessageBox(L"필터링 파라미터 - 범위값 사용.\r\n교통량 최저값은 교통량 최대값 미만이어야 합니다.",
  480. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  481. return false;
  482. }
  483. if (FFMTSpdMin >= FFMTSpdMax)
  484. {
  485. Application->MessageBox(L"필터링 파라미터 - 범위값 사용.\r\속도 최저값은 속도 최대값 미만이어야 합니다.",
  486. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  487. return false;
  488. }
  489. } else return false;
  490. //퓨전 파라미터
  491. if (ChkFST1->Checked)
  492. {
  493. FFST = "FST1"; //우선순위
  494. #if 0
  495. if (TvList2->DataController->RecordCount == 0)
  496. {
  497. Application->MessageBox(L"퓨전 파라미터 - 우선순위.\r\우선순위 항목을 선택하셔야 합니다.",
  498. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  499. return false;
  500. }
  501. #else
  502. int nSeq = 0;
  503. int nTot = 0;
  504. int nItem= 0;
  505. try
  506. {
  507. TcxGridDataController *pGDC = TvList0->DataController;
  508. TvList0->BeginUpdate();
  509. for(int ii = 0; ii < pGDC->RecordCount; ii++)
  510. {
  511. String sPri = VarToStr(pGDC->Values[ii][ColumnD03->Index]);
  512. if (sPri == "사용안함") continue;
  513. int nTmp = StrToIntDef(sPri, 1);
  514. nSeq += nTmp;
  515. nTot += (nItem+1);
  516. nItem++;
  517. #if 0
  518. int nTmp = pGDC->Values[ii][ColumnD03->Index];
  519. nSeq += nTmp;
  520. nTot += (ii+1);
  521. #endif
  522. }
  523. }
  524. __finally
  525. {
  526. TvList0->EndUpdate();
  527. }
  528. if (nSeq != nTot)
  529. {
  530. Application->MessageBox(L"퓨전 파라미터 - 우선순위.\r\우선순위는 순서에 맞게 각자 다른값을 가져야 합니다.",
  531. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  532. return false;
  533. }
  534. #endif
  535. }
  536. else
  537. if (ChkFST2->Checked)
  538. {
  539. FFST = "FST2"; //가중치
  540. int dFST = 0;
  541. try
  542. {
  543. TcxGridDataController *pGDC = TvList3->DataController;
  544. TvList3->BeginUpdate();
  545. for(int ii = 0; ii < pGDC->RecordCount; ii++)
  546. {
  547. int fTmp = pGDC->Values[ii][ColumnC03->Index];
  548. dFST += fTmp;
  549. }
  550. }
  551. __finally
  552. {
  553. TvList3->EndUpdate();
  554. }
  555. if (dFST != 100)
  556. {
  557. Application->MessageBox(L"퓨전 파라미터 - 가중치.\r\가중치의 전체합은 100 이어야 합니다.",
  558. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  559. return false;
  560. }
  561. } else return false;
  562. //보정 파라미터
  563. FMCAVal3 = FMCAVal2 = FMCAVal1 = 0;
  564. if (ChkMCA0->Checked)
  565. {
  566. FMCA = "MCA0"; //사용안함
  567. }
  568. else
  569. if (ChkMCA1->Checked)
  570. {
  571. FMCA = "MCA1"; //단기(15분이동평균)/장기(패턴)
  572. FMCAVal3 = SeMCAVal3->Value;
  573. FMCAVal2 = SeMCAVal2->Value;
  574. FMCAVal1 = SeMCAVal1->Value;
  575. int nTotVal = (FMCAVal3+FMCAVal2+FMCAVal1);
  576. if (nTotVal != 100)
  577. {
  578. Application->MessageBox(L"보정 파라미터 - 단기(15분이동평균)/장기(패턴).\r\평균 가중치의 전체합은 100 이어야 합니다.",
  579. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  580. return false;
  581. }
  582. }
  583. else
  584. if (ChkMCA2->Checked)
  585. {
  586. FMCA = "MCA2"; //패턴적용
  587. } else return false;
  588. //평활화 파라미터
  589. FSMTSpdMin = FSMTSpdMax = FSMTVal2 = FSMTVal1 = FSMTValC = 0;
  590. if (ChkSMT0->Checked)
  591. {
  592. FSMT = "SMT0"; //사용안함
  593. }
  594. else
  595. if (ChkSMT1->Checked)
  596. {
  597. FSMT = "SMT1"; //패턴적용
  598. FSMTSpdMin = SeSMTValMin->Value;
  599. FSMTSpdMax = SeSMTValMax->Value;
  600. if (FSMTSpdMin >= FSMTSpdMax)
  601. {
  602. Application->MessageBox(L"평활화 파라미터 - 편차제한.\r\최저속도계수값은 최대속도계수값 미만이어야 합니다.",
  603. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  604. return false;
  605. }
  606. }
  607. else
  608. if (ChkSMT2->Checked)
  609. {
  610. FSMT = "SMT2"; //15분 이동평균
  611. FSMTVal2 = SeSMTVal2->Value;
  612. FSMTVal1 = SeSMTVal1->Value;
  613. FSMTValC = SeSMTValC->Value;
  614. int nTotVal = (FSMTVal2+FSMTVal1+FSMTValC);
  615. if (nTotVal != 100)
  616. {
  617. Application->MessageBox(L"평활화 파라미터 - 15분 이동평균.\r\15분 이동평균값 가중치의 전체합은 100 이어야 합니다.",
  618. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  619. return false;
  620. }
  621. } else return false;
  622. return true;
  623. }
  624. //---------------------------------------------------------------------------
  625. void __fastcall TIDB0050M::BtnApplyAllClick(TObject *Sender)
  626. {
  627. //전체구간적용
  628. if (!CheckParameterValue())
  629. {
  630. return;
  631. }
  632. String sMsg;
  633. sMsg = "전체구간에 대하여 파라미터 정보를 설정합니다. \r\n"
  634. "선택한 구간에 대하여 작업을 원하시는 경우 [선택구간 적용]을 하십시요.\r\n"
  635. "전체구간에 대하여 파라미터 정보를 적용하시겠습니까?";
  636. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  637. if (PgLink->ActivePageIndex == 0)
  638. {
  639. ModifyLinkParam(1, NULL);
  640. }
  641. else
  642. if (PgLink->ActivePageIndex == 1)
  643. {
  644. ModifyLinkParam(2, NULL);
  645. }
  646. else
  647. {
  648. ModifyLinkParam(3, NULL);
  649. }
  650. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_07, 0);
  651. }
  652. //---------------------------------------------------------------------------
  653. void __fastcall TIDB0050M::BtnApplySelClick(TObject *Sender)
  654. {
  655. //선택구간적용
  656. if (!CheckParameterValue())
  657. {
  658. return;
  659. }
  660. String sMsg;
  661. sMsg = "선택한 구간에 대하여 파라미터 정보를 설정합니다. \r\n"
  662. "전체 구간에 대하여 작업을 원하시는 경우 [전체구간 적용]을 하십시요.\r\n"
  663. "선택한 구간에 대하여 파라미터 정보를 적용하시겠습니까?";
  664. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  665. int nSelCnt = 0;
  666. TStringList *pStringList = NULL;
  667. try
  668. {
  669. pStringList = new TStringList();
  670. if (PgLink->ActivePageIndex == 0)
  671. {
  672. //레벨1 링크
  673. nSelCnt = FRAMELinkList1->GetSelLinkIds(pStringList);
  674. if (nSelCnt <= 0)
  675. {
  676. Application->MessageBox(L"목록에서 구간을 선택하셔야 합니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  677. return ;
  678. }
  679. #if 0
  680. if (nSelCnt > 500)
  681. {
  682. Application->MessageBox(L"선택한 구간이 너무 많아 작업을 수행할 수 없습니다[최대 500개].", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  683. return ;
  684. }
  685. #endif
  686. ModifyLinkParam(1, pStringList);
  687. }
  688. else
  689. if (PgLink->ActivePageIndex == 1)
  690. {
  691. //서비스 링크(레벨2)
  692. nSelCnt = FRAMEIfscList1->GetSelLinkIds(pStringList);
  693. if (nSelCnt <= 0)
  694. {
  695. Application->MessageBox(L"목록에서 구간을 선택하셔야 합니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  696. return ;
  697. }
  698. #if 0
  699. if (nSelCnt > 500)
  700. {
  701. Application->MessageBox(L"선택한 구간이 너무 많아 작업을 수행할 수 없습니다[최대 500개].", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  702. return ;
  703. }
  704. #endif
  705. ModifyLinkParam(2, pStringList);
  706. }
  707. else
  708. {
  709. //도로(레벨3)
  710. nSelCnt = FRAMERoadList1->GetSelLinkIds(pStringList);
  711. if (nSelCnt <= 0)
  712. {
  713. Application->MessageBox(L"목록에서 구간을 선택하셔야 합니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  714. return ;
  715. }
  716. #if 0
  717. if (nSelCnt > 500)
  718. {
  719. Application->MessageBox(L"선택한 구간이 너무 많아 작업을 수행할 수 없습니다[최대 500개].", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  720. return ;
  721. }
  722. #endif
  723. ModifyLinkParam(3, pStringList);
  724. }
  725. }
  726. __finally
  727. {
  728. if (pStringList) delete pStringList;
  729. }
  730. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_07, 0);
  731. }
  732. //---------------------------------------------------------------------------
  733. bool __fastcall TIDB0050M::ModifyLinkParam(int ALevel, TStringList *AStringList)
  734. {
  735. #if 0
  736. String sQry;
  737. String sWhere = "";
  738. String sIdList = "";
  739. if (AStringList)
  740. {
  741. if (AStringList->Count > 0)
  742. {
  743. for (int ii = 0; ii < AStringList->Count; ii++)
  744. {
  745. sIdList += "'" + AStringList->Strings[ii] +"',";
  746. }
  747. }
  748. if (AStringList->Count > 0)
  749. sIdList.Delete(sIdList.Length(), 1);
  750. }
  751. if (!sIdList.IsEmpty())
  752. {
  753. switch(ALevel)
  754. {
  755. case 1:
  756. sWhere = "LINK_ID IN(" + sIdList + ") \r\n";
  757. break;
  758. case 2:
  759. sWhere = "LINK_ID IN((SELECT LINK_ID FROM TB_IFSC_LINK_RLTN WHERE IFSC_ID IN( " + sIdList + "))) \r\n";
  760. break;
  761. case 3:
  762. sWhere = "LINK_ID IN (SELECT LINK_ID \r\n"
  763. " FROM TB_IFSC_LINK_RLTN \r\n"
  764. " WHERE IFSC_ID IN((SELECT IFSC_ID \r\n"
  765. " FROM TB_ROAD_IFSC_RLTN \r\n"
  766. " WHERE ROAD_ID IN( " + sIdList + " )))) \r\n";
  767. break;
  768. default: return false;
  769. }
  770. }
  771. String s15MinPtrn = Chk15MinPtrn->Checked ? "Y" : "N";
  772. int nMissCycle = SeMissCycle->Value;
  773. TADOQuery *pADO = NULL;
  774. try
  775. {
  776. try
  777. {
  778. pADO = new TADOQuery(NULL);
  779. pADO->Close();
  780. pADO->Connection = ITSDb_GetConnection();
  781. ITSDb_GetConnection()->BeginTrans();
  782. // TB_LINK_PARA_STUP
  783. sQry = "UPDATE TB_LINK_PARA_STUP \r\n"
  784. " SET FLTR_MTHD_CD = :p01, \r\n"
  785. " FUSN_MTHD_CD = :p02, \r\n"
  786. " ADJS_MTHD_CD = :p03, \r\n"
  787. " SMTH_MTHD_CD = :p04 \r\n";
  788. if (!sWhere.IsEmpty())
  789. {
  790. sQry += " WHERE " + sWhere;
  791. }
  792. ITSDb_SQLText(pADO, sQry);
  793. ITSDb_SQLBind(pADO, "p01", FFMT);
  794. ITSDb_SQLBind(pADO, "p02", FFST);
  795. ITSDb_SQLBind(pADO, "p03", FMCA);
  796. ITSDb_SQLBind(pADO, "p04", FSMT);
  797. ITSDb_SQLExec(pADO);
  798. sQry = "UPDATE TB_LINK_PARA_DETL \r\n"
  799. " SET FLTR_MIN_TFVL = :p01, \r\n"
  800. " FLTR_MAX_TFVL = :p02, \r\n"
  801. " FLTR_LWST_SPED = :p03, \r\n"
  802. " FLTR_HGHS_SPED = :p04, \r\n"
  803. " ADJS_WGHT_AVRG_PRE_1CYCL = :p05, \r\n"
  804. " ADJS_WGHT_AVRG_PRE_2CYCL = :p06, \r\n"
  805. " ADJS_WGHT_AVRG_PRE_3CYCL = :p07, \r\n"
  806. " ADJS_15M_PTRN_APLY_YN = :p08, \r\n"
  807. " ADJS_SHTR_MISS_DECS_CYCL = :p09, \r\n"
  808. " SMTH_LWST_SPED_FCTR = :p10, \r\n"
  809. " SMTH_HGHS_SPED_FCTR = :p11, \r\n"
  810. " SMTH_WGHT_AVRG_PRST = :p12, \r\n"
  811. " SMTH_WGHT_AVRG_PRE_1CYCL = :p13, \r\n"
  812. " SMTH_WGHT_AVRG_PRE_2CYCL = :p14 \r\n";
  813. if (!sWhere.IsEmpty())
  814. {
  815. sQry += " WHERE " + sWhere;
  816. }
  817. ITSDb_SQLText(pADO, sQry);
  818. ITSDb_SQLBind(pADO, "p01", FFMTVolMin);
  819. ITSDb_SQLBind(pADO, "p02", FFMTVolMax);
  820. ITSDb_SQLBind(pADO, "p03", FFMTSpdMin);
  821. ITSDb_SQLBind(pADO, "p04", FFMTSpdMax);
  822. ITSDb_SQLBind(pADO, "p05", FMCAVal1/100);
  823. ITSDb_SQLBind(pADO, "p06", FMCAVal2/100);
  824. ITSDb_SQLBind(pADO, "p07", FMCAVal3/100);
  825. ITSDb_SQLBind(pADO, "p08", s15MinPtrn);
  826. ITSDb_SQLBind(pADO, "p09", nMissCycle);
  827. ITSDb_SQLBind(pADO, "p10", FSMTSpdMin);
  828. ITSDb_SQLBind(pADO, "p11", FSMTSpdMax);
  829. ITSDb_SQLBind(pADO, "p12", FSMTValC/100);
  830. ITSDb_SQLBind(pADO, "p13", FSMTVal1/100);
  831. ITSDb_SQLBind(pADO, "p14", FSMTVal2/100);
  832. ITSDb_SQLExec(pADO);
  833. sQry = "UPDATE TB_LINK_PARA_CLCT_SYST \r\n"
  834. " SET FUSN_PRRT = :p02, \r\n"
  835. " FUSN_WGHT = :p03 \r\n"
  836. " WHERE CLCT_SYST_CD = :p01 \r\n";
  837. if (!sWhere.IsEmpty())
  838. {
  839. sQry += " AND " + sWhere;
  840. }
  841. ITSDb_SQLText(pADO, sQry);
  842. try
  843. {
  844. TcxGridDataController *pGDC = TvList0->DataController;
  845. TvList0->BeginUpdate();
  846. for(int ii = 0; ii < pGDC->RecordCount; ii++)
  847. {
  848. String sPri = VarToStr(pGDC->Values[ii][ColumnD03->Index]);
  849. if (sPri == "사용안함") continue;
  850. String sCode = pGDC->Values[ii][ColumnD02->Index];
  851. int nOrdr = pGDC->Values[ii][ColumnD03->Index];
  852. int nIndx = pGDC->Values[ii][ColumnD04->Index];
  853. int nWigt = TvList3->DataController->Values[nIndx][ColumnC03->Index];
  854. double dWeight = nWigt/100.;
  855. ITSDb_SQLBind(pADO, "p01", sCode);
  856. ITSDb_SQLBind(pADO, "p02", nOrdr);
  857. ITSDb_SQLBind(pADO, "p03", dWeight);
  858. ITSDb_SQLExec(pADO);
  859. }
  860. }
  861. __finally
  862. {
  863. TvList0->EndUpdate();
  864. }
  865. ITSDb_GetConnection()->CommitTrans();
  866. Application->MessageBox(L"파라미터 정보를 설정 하였습니다.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  867. }
  868. catch(EDatabaseError &E)
  869. {
  870. ITSDb_GetConnection()->RollbackTrans();
  871. ShowMessage(String(E.ClassName()) + E.Message);
  872. }
  873. catch(Exception &exception)
  874. {
  875. ITSDb_GetConnection()->RollbackTrans();
  876. ShowMessage(String(exception.ClassName()) + exception.Message);
  877. }
  878. catch(...)
  879. {
  880. ITSDb_GetConnection()->RollbackTrans();
  881. ShowMessage("데이터 작업 중에 알수없는 DB 오류가 발생하였습니다.");
  882. }
  883. }
  884. __finally
  885. {
  886. if (pADO)
  887. {
  888. pADO->Close();
  889. delete pADO;
  890. }
  891. }
  892. return true;
  893. #endif
  894. String sQry;
  895. String sWhere = "";
  896. String sIdList = "";
  897. TSqlCursor sqlCursor;
  898. if (AStringList)
  899. {
  900. if (AStringList->Count > 0)
  901. {
  902. for (int ii = 0; ii < AStringList->Count; ii++)
  903. {
  904. sIdList += "'" + AStringList->Strings[ii] +"',";
  905. }
  906. }
  907. if (AStringList->Count > 0)
  908. sIdList.Delete(sIdList.Length(), 1);
  909. }
  910. if (!sIdList.IsEmpty())
  911. {
  912. switch(ALevel)
  913. {
  914. case 1:
  915. sWhere = "LINK_ID IN(" + sIdList + ") \r\n";
  916. break;
  917. case 2:
  918. sWhere = "LINK_ID IN((SELECT LINK_ID FROM TB_IFSC_LINK_RLTN WHERE IFSC_ID IN( " + sIdList + "))) \r\n";
  919. break;
  920. case 3:
  921. sWhere = "LINK_ID IN (SELECT LINK_ID \r\n"
  922. " FROM TB_IFSC_LINK_RLTN \r\n"
  923. " WHERE IFSC_ID IN((SELECT IFSC_ID \r\n"
  924. " FROM TB_ROAD_IFSC_RLTN \r\n"
  925. " WHERE ROAD_ID IN( " + sIdList + " )))) \r\n";
  926. break;
  927. default: return false;
  928. }
  929. }
  930. String s15MinPtrn = Chk15MinPtrn->Checked ? "Y" : "N";
  931. int nMissCycle = SeMissCycle->Value;
  932. TADOQuery *pADO = NULL;
  933. try
  934. {
  935. try
  936. {
  937. pADO = new TADOQuery(NULL);
  938. pADO->Close();
  939. pADO->Connection = ITSDb_GetConnection();
  940. Application->ProcessMessages();
  941. ITSDb_GetConnection()->BeginTrans();
  942. // TB_LINK_PARA_STUP
  943. sQry = "DELETE TB_LINK_PARA_STUP \r\n";
  944. if (!sWhere.IsEmpty())
  945. {
  946. sQry += " WHERE " + sWhere;
  947. }
  948. ITSDb_SQLText(pADO, sQry);
  949. ITSDb_SQLExec(pADO);
  950. Application->ProcessMessages();
  951. sQry = "INSERT INTO TB_LINK_PARA_STUP(LINK_ID, FLTR_MTHD_CD, FUSN_MTHD_CD, ADJS_MTHD_CD, SMTH_MTHD_CD) \r\n"
  952. "SELECT LINK_ID, :p01, :p02, :p03, :p04 \r\n"
  953. " FROM TB_LINK \r\n";
  954. if (!sWhere.IsEmpty())
  955. {
  956. sQry += " WHERE " + sWhere;
  957. }
  958. ITSDb_SQLText(pADO, sQry);
  959. ITSDb_SQLBind(pADO, "p01", FFMT);
  960. ITSDb_SQLBind(pADO, "p02", FFST);
  961. ITSDb_SQLBind(pADO, "p03", FMCA);
  962. ITSDb_SQLBind(pADO, "p04", FSMT);
  963. ITSDb_SQLExec(pADO);
  964. // TB_LINK_PARA_DETL
  965. Application->ProcessMessages();
  966. sQry = "DELETE TB_LINK_PARA_DETL \r\n";
  967. if (!sWhere.IsEmpty())
  968. {
  969. sQry += " WHERE " + sWhere;
  970. }
  971. ITSDb_SQLText(pADO, sQry);
  972. ITSDb_SQLExec(pADO);
  973. Application->ProcessMessages();
  974. sQry = "INSERT INTO TB_LINK_PARA_DETL( \r\n"
  975. " LINK_ID, \r\n"
  976. " FLTR_MIN_TFVL, \r\n"
  977. " FLTR_MAX_TFVL, \r\n"
  978. " FLTR_LWST_SPED, \r\n"
  979. " FLTR_HGHS_SPED, \r\n"
  980. " ADJS_WGHT_AVRG_PRE_1CYCL, \r\n"
  981. " ADJS_WGHT_AVRG_PRE_2CYCL, \r\n"
  982. " ADJS_WGHT_AVRG_PRE_3CYCL, \r\n"
  983. " ADJS_15M_PTRN_APLY_YN, \r\n"
  984. " ADJS_SHTR_MISS_DECS_CYCL, \r\n"
  985. " SMTH_LWST_SPED_FCTR, \r\n"
  986. " SMTH_HGHS_SPED_FCTR, \r\n"
  987. " SMTH_WGHT_AVRG_PRST, \r\n"
  988. " SMTH_WGHT_AVRG_PRE_1CYCL, \r\n"
  989. " SMTH_WGHT_AVRG_PRE_2CYCL) \r\n"
  990. "SELECT LINK_ID, :p01, :p02, :p03, :p04, \r\n"
  991. " :p05, :p06, :p07, :p08, \r\n"
  992. " :p09, :p10, :p11, :p12, \r\n"
  993. " :p13, :p14 \r\n"
  994. " FROM TB_LINK \r\n";
  995. if (!sWhere.IsEmpty())
  996. {
  997. sQry += " WHERE " + sWhere;
  998. }
  999. float ff = FMCAVal1/100;
  1000. float dd = FMCAVal1/100.;
  1001. ITSDb_SQLText(pADO, sQry);
  1002. ITSDb_SQLBind(pADO, "p01", FFMTVolMin);
  1003. ITSDb_SQLBind(pADO, "p02", FFMTVolMax);
  1004. ITSDb_SQLBind(pADO, "p03", FFMTSpdMin);
  1005. ITSDb_SQLBind(pADO, "p04", FFMTSpdMax);
  1006. ITSDb_SQLBind(pADO, "p05", FMCAVal1/100);
  1007. ITSDb_SQLBind(pADO, "p06", FMCAVal2/100);
  1008. ITSDb_SQLBind(pADO, "p07", FMCAVal3/100);
  1009. ITSDb_SQLBind(pADO, "p08", s15MinPtrn);
  1010. ITSDb_SQLBind(pADO, "p09", nMissCycle);
  1011. ITSDb_SQLBind(pADO, "p10", FSMTSpdMin);
  1012. ITSDb_SQLBind(pADO, "p11", FSMTSpdMax);
  1013. ITSDb_SQLBind(pADO, "p12", FSMTValC/100);
  1014. ITSDb_SQLBind(pADO, "p13", FSMTVal1/100);
  1015. ITSDb_SQLBind(pADO, "p14", FSMTVal2/100);
  1016. ITSDb_SQLExec(pADO);
  1017. //TB_LINK_PARA_CLCT_SYST
  1018. Application->ProcessMessages();
  1019. sQry = "DELETE TB_LINK_PARA_CLCT_SYST \r\n";
  1020. if (!sWhere.IsEmpty())
  1021. {
  1022. sQry += " WHERE " + sWhere;
  1023. }
  1024. ITSDb_SQLText(pADO, sQry);
  1025. ITSDb_SQLExec(pADO);
  1026. sQry = "INSERT INTO TB_LINK_PARA_CLCT_SYST(LINK_ID, CLCT_SYST_CD, FUSN_PRRT, FUSN_WGHT) \r\n"
  1027. "SELECT LINK_ID, :p01, :p02, :p03 \r\n"
  1028. " FROM TB_LINK \r\n";
  1029. if (!sWhere.IsEmpty())
  1030. {
  1031. sQry += " WHERE " + sWhere;
  1032. }
  1033. ITSDb_SQLText(pADO, sQry);
  1034. try
  1035. {
  1036. TcxGridDataController *pGDC = TvList0->DataController;
  1037. TvList0->BeginUpdate();
  1038. for(int ii = 0; ii < pGDC->RecordCount; ii++)
  1039. {
  1040. String sPri = VarToStr(pGDC->Values[ii][ColumnD03->Index]);
  1041. if (sPri == "사용안함") continue;
  1042. String sCode = pGDC->Values[ii][ColumnD02->Index];
  1043. int nOrdr = pGDC->Values[ii][ColumnD03->Index];
  1044. int nIndx = pGDC->Values[ii][ColumnD04->Index];
  1045. int nWigt = TvList3->DataController->Values[nIndx][ColumnC03->Index];
  1046. double dWeight = nWigt/100.;
  1047. ITSDb_SQLBind(pADO, "p01", sCode);
  1048. ITSDb_SQLBind(pADO, "p02", nOrdr);
  1049. ITSDb_SQLBind(pADO, "p03", dWeight);
  1050. Application->ProcessMessages();
  1051. ITSDb_SQLExec(pADO);
  1052. }
  1053. }
  1054. __finally
  1055. {
  1056. TvList0->EndUpdate();
  1057. }
  1058. ITSDb_GetConnection()->CommitTrans();
  1059. Application->MessageBox(L"파라미터 정보를 설정 하였습니다.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  1060. }
  1061. catch(EDatabaseError &E)
  1062. {
  1063. ITSDb_GetConnection()->RollbackTrans();
  1064. ShowMessage(String(E.ClassName()) + E.Message);
  1065. }
  1066. catch(Exception &exception)
  1067. {
  1068. ITSDb_GetConnection()->RollbackTrans();
  1069. ShowMessage(String(exception.ClassName()) + exception.Message);
  1070. }
  1071. catch(...)
  1072. {
  1073. ITSDb_GetConnection()->RollbackTrans();
  1074. ShowMessage("데이터 작업 중에 알수없는 DB 오류가 발생하였습니다.");
  1075. }
  1076. }
  1077. __finally
  1078. {
  1079. if (pADO)
  1080. {
  1081. pADO->Close();
  1082. delete pADO;
  1083. }
  1084. }
  1085. return true;
  1086. }
  1087. //---------------------------------------------------------------------------
  1088. void __fastcall TIDB0050M::FRAMELinkList1TvListFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  1089. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  1090. {
  1091. if (!FInit) return;
  1092. if (!AFocusedRecord) return;
  1093. if (FRAMELinkList1->TvList->ViewData->RecordCount <= 0) return;
  1094. int nIndex = FRAMELinkList1->TvList->DataController->FocusedRecordIndex;
  1095. if (nIndex < 0) return;
  1096. String sLinkId = VarToStr(FRAMELinkList1->TvList->DataController->Values[nIndex][FRAMELinkList1->Column01->Index]);
  1097. DisplayLinkParam(1, sLinkId);
  1098. }
  1099. //---------------------------------------------------------------------------
  1100. void __fastcall TIDB0050M::FRAMEIfscList1TvListFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  1101. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  1102. {
  1103. if (!FInit) return;
  1104. if (!AFocusedRecord) return;
  1105. if (FRAMEIfscList1->TvList->ViewData->RecordCount <= 0) return;
  1106. int nIndex = FRAMEIfscList1->TvList->DataController->FocusedRecordIndex;
  1107. if (nIndex < 0) return;
  1108. String sLinkId = VarToStr(FRAMEIfscList1->TvList->DataController->Values[nIndex][FRAMEIfscList1->Column01->Index]);
  1109. DisplayLinkParam(2, sLinkId);
  1110. }
  1111. //---------------------------------------------------------------------------
  1112. void __fastcall TIDB0050M::FRAMERoadList1TvListFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  1113. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  1114. {
  1115. if (!FInit) return;
  1116. if (!AFocusedRecord) return;
  1117. if (FRAMERoadList1->TvList->ViewData->RecordCount <= 0) return;
  1118. int nIndex = FRAMERoadList1->TvList->DataController->FocusedRecordIndex;
  1119. if (nIndex < 0) return;
  1120. String sLinkId = VarToStr(FRAMERoadList1->TvList->DataController->Values[nIndex][FRAMERoadList1->Column01->Index]);
  1121. DisplayLinkParam(3, sLinkId);
  1122. }
  1123. //---------------------------------------------------------------------------
  1124. void __fastcall TIDB0050M::DisplayLink()
  1125. {
  1126. if (PgLink->Properties->ActivePage != cxTabSheet1) return;
  1127. if (FRAMELinkList1->TvList->ViewData->RecordCount <= 0) return;
  1128. int nIndex = FRAMELinkList1->TvList->DataController->FocusedRecordIndex;
  1129. if (nIndex < 0) return;
  1130. String sLinkId = VarToStr(FRAMELinkList1->TvList->DataController->Values[nIndex][FRAMELinkList1->Column01->Index]);
  1131. DisplayLinkParam(1, sLinkId);
  1132. }
  1133. //---------------------------------------------------------------------------
  1134. void __fastcall TIDB0050M::DisplayLinkParam(int ALevel, String ALinkId)
  1135. {
  1136. if (ALevel != 1) return;
  1137. TSqlCursor sqlCursor;
  1138. String sQry;
  1139. TADOQuery *pADO = ADOQry;
  1140. try
  1141. {
  1142. try
  1143. {
  1144. sQry = "SELECT FLTR_MTHD_CD, \r\n"
  1145. " FUSN_MTHD_CD, \r\n"
  1146. " ADJS_MTHD_CD, \r\n"
  1147. " SMTH_MTHD_CD \r\n"
  1148. " FROM TB_LINK_PARA_STUP \r\n"
  1149. " WHERE LINK_ID = :p01 \r\n";
  1150. ITSDb_SQLText(pADO, sQry);
  1151. ITSDb_SQLBind(pADO, "p01", ALinkId);
  1152. ITSDb_SQLOpen(pADO);
  1153. for( ; !pADO->Eof; pADO->Next())
  1154. {
  1155. String sFMT = pADO->FieldByName("FLTR_MTHD_CD")->AsString;
  1156. String sFST = pADO->FieldByName("FUSN_MTHD_CD")->AsString;
  1157. String sMCA = pADO->FieldByName("ADJS_MTHD_CD")->AsString;
  1158. String sSMT = pADO->FieldByName("SMTH_MTHD_CD")->AsString;
  1159. if (sFMT == "FMT0")
  1160. {
  1161. if (!ChkFMT0->Checked) ChkFMT0->Checked = true;
  1162. }
  1163. else
  1164. {
  1165. if (!ChkFMT1->Checked) ChkFMT1->Checked = true;
  1166. }
  1167. if (sFST == "FST1")
  1168. {
  1169. if (!ChkFST1->Checked) ChkFST1->Checked = true;
  1170. }
  1171. else
  1172. {
  1173. if (!ChkFST2->Checked) ChkFST2->Checked = true;
  1174. }
  1175. if (sMCA == "MCA0")
  1176. {
  1177. if (!ChkMCA0->Checked) ChkMCA0->Checked = true;
  1178. }
  1179. else
  1180. if (sMCA == "MCA1")
  1181. {
  1182. if (!ChkMCA1->Checked) ChkMCA1->Checked = true;
  1183. }
  1184. else
  1185. {
  1186. if (!ChkMCA2->Checked) ChkMCA2->Checked = true;
  1187. }
  1188. if (sSMT == "SMT0")
  1189. {
  1190. if (!ChkSMT0->Checked) ChkSMT0->Checked = true;
  1191. }
  1192. else
  1193. if (sSMT == "SMT1")
  1194. {
  1195. if (!ChkSMT1->Checked) ChkSMT1->Checked = true;
  1196. }
  1197. else
  1198. {
  1199. if (!ChkSMT2->Checked) ChkSMT2->Checked = true;
  1200. }
  1201. }
  1202. sQry = "SELECT FLTR_MIN_TFVL, \r\n"
  1203. " FLTR_MAX_TFVL, \r\n"
  1204. " FLTR_LWST_SPED, \r\n"
  1205. " FLTR_HGHS_SPED, \r\n"
  1206. " ADJS_WGHT_AVRG_PRE_1CYCL, \r\n"
  1207. " ADJS_WGHT_AVRG_PRE_2CYCL, \r\n"
  1208. " ADJS_WGHT_AVRG_PRE_3CYCL, \r\n"
  1209. " ADJS_15M_PTRN_APLY_YN, \r\n"
  1210. " ADJS_SHTR_MISS_DECS_CYCL, \r\n"
  1211. " SMTH_LWST_SPED_FCTR, \r\n"
  1212. " SMTH_HGHS_SPED_FCTR, \r\n"
  1213. " SMTH_WGHT_AVRG_PRST, \r\n"
  1214. " SMTH_WGHT_AVRG_PRE_1CYCL, \r\n"
  1215. " SMTH_WGHT_AVRG_PRE_2CYCL \r\n"
  1216. " FROM TB_LINK_PARA_DETL \r\n"
  1217. " WHERE LINK_ID = :p01 \r\n";
  1218. ITSDb_SQLText(pADO, sQry);
  1219. ITSDb_SQLBind(pADO, "p01", ALinkId);
  1220. ITSDb_SQLOpen(pADO);
  1221. for( ; !pADO->Eof; pADO->Next())
  1222. {
  1223. SeVolMin->Value = pADO->FieldByName("FLTR_MIN_TFVL")->AsInteger;
  1224. SeVolMax->Value = pADO->FieldByName("FLTR_MAX_TFVL")->AsInteger;
  1225. SeSpdMin->Value = pADO->FieldByName("FLTR_LWST_SPED")->AsInteger;
  1226. SeSpdMax->Value = pADO->FieldByName("FLTR_HGHS_SPED")->AsInteger;
  1227. SeMCAVal1->Value = pADO->FieldByName("ADJS_WGHT_AVRG_PRE_1CYCL")->AsFloat * 100;
  1228. SeMCAVal2->Value = pADO->FieldByName("ADJS_WGHT_AVRG_PRE_2CYCL")->AsFloat * 100;
  1229. SeMCAVal3->Value = pADO->FieldByName("ADJS_WGHT_AVRG_PRE_3CYCL")->AsFloat * 100;
  1230. String sPtrnYn = pADO->FieldByName("ADJS_15M_PTRN_APLY_YN")->AsString;
  1231. Chk15MinPtrn->Checked = sPtrnYn == "N" ? false : true;
  1232. SeMissCycle->Value = pADO->FieldByName("ADJS_SHTR_MISS_DECS_CYCL")->AsInteger;
  1233. SeSMTValMin->Value = pADO->FieldByName("SMTH_LWST_SPED_FCTR")->AsFloat;// * 100;
  1234. SeSMTValMax->Value = pADO->FieldByName("SMTH_HGHS_SPED_FCTR")->AsFloat;// * 100;
  1235. SeSMTValC->Value = pADO->FieldByName("SMTH_WGHT_AVRG_PRST")->AsFloat * 100;
  1236. SeSMTVal1->Value = pADO->FieldByName("SMTH_WGHT_AVRG_PRE_1CYCL")->AsFloat * 100;
  1237. SeSMTVal2->Value = pADO->FieldByName("SMTH_WGHT_AVRG_PRE_2CYCL")->AsFloat * 100;
  1238. }
  1239. sQry = "SELECT FUSN_PRRT, \r\n"
  1240. " FUSN_WGHT, \r\n"
  1241. " CLCT_SYST_CD \r\n"
  1242. " FROM TB_LINK_PARA_CLCT_SYST \r\n"
  1243. " WHERE LINK_ID = :p01 \r\n";
  1244. ITSDb_SQLText(pADO, sQry);
  1245. ITSDb_SQLBind(pADO, "p01", ALinkId);
  1246. ITSDb_SQLOpen(pADO);
  1247. try
  1248. {
  1249. int ii, nIndx;
  1250. TcxGridDataController *pGDC = TvList0->DataController;
  1251. TvList0->BeginUpdate();
  1252. TvList3->BeginUpdate();
  1253. for(ii = 0; ii < pGDC->RecordCount; ii++)
  1254. {
  1255. pGDC->Values[ii][ColumnD03->Index] = "사용안함";
  1256. }
  1257. for( ; !pADO->Eof; pADO->Next())
  1258. {
  1259. String sCLCT_SYST_CD = pADO->FieldByName("CLCT_SYST_CD")->AsString;
  1260. int nFUSN_PRRT = pADO->FieldByName("FUSN_PRRT")->AsInteger;
  1261. double dFUSN_WGHT = pADO->FieldByName("FUSN_WGHT")->AsFloat * 100;
  1262. for(ii = 0; ii < pGDC->RecordCount; ii++)
  1263. {
  1264. String sCode = pGDC->Values[ii][ColumnD02->Index];
  1265. if (sCode == sCLCT_SYST_CD)
  1266. {
  1267. pGDC->Values[ii][ColumnD03->Index] = String(nFUSN_PRRT);
  1268. nIndx = pGDC->Values[ii][ColumnD04->Index];
  1269. TvList3->DataController->Values[nIndx][ColumnC03->Index] = dFUSN_WGHT;
  1270. break;
  1271. }
  1272. }
  1273. }
  1274. }
  1275. __finally
  1276. {
  1277. TvList0->EndUpdate();
  1278. TvList3->EndUpdate();
  1279. }
  1280. }
  1281. catch(EDatabaseError &E)
  1282. {
  1283. ITSDb_GetConnection()->RollbackTrans();
  1284. ShowMessage(String(E.ClassName()) + E.Message);
  1285. }
  1286. catch(Exception &exception)
  1287. {
  1288. ITSDb_GetConnection()->RollbackTrans();
  1289. ShowMessage(String(exception.ClassName()) + exception.Message);
  1290. }
  1291. catch(...)
  1292. {
  1293. ITSDb_GetConnection()->RollbackTrans();
  1294. ShowMessage("데이터 작업 중에 알수없는 DB 오류가 발생하였습니다.");
  1295. }
  1296. }
  1297. __finally
  1298. {
  1299. pADO->Close();
  1300. }
  1301. }
  1302. //---------------------------------------------------------------------------