IDB0050MF.cpp 47 KB

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