VMSEDT0MF.cpp 33 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022
  1. /****************************************************************************
  2. * @source :
  3. * @description :
  4. ****************************************************************************
  5. * DATE AUTHOR DESCRIPTION
  6. * --------------------------------------------------------------------------
  7. * 2016/07/10 shjung 최초작성
  8. *
  9. ****************************************************************************/
  10. //---------------------------------------------------------------------------
  11. #include <vcl.h>
  12. #include "ITSSkinF.h"
  13. #include "ITSUtilF.h"
  14. #include "AppGlobalF.h"
  15. #include "ITSLangTransF.h"
  16. #pragma hdrstop
  17. #include "VMSEDT0MF.h"
  18. #include "VMSSEL0MF.h"
  19. //---------------------------------------------------------------------------
  20. #pragma package(smart_init)
  21. #pragma link "cxButtons"
  22. #pragma link "cxCalendar"
  23. #pragma link "cxContainer"
  24. #pragma link "cxControls"
  25. #pragma link "cxDropDownEdit"
  26. #pragma link "cxEdit"
  27. #pragma link "cxGraphics"
  28. #pragma link "cxGroupBox"
  29. #pragma link "cxLabel"
  30. #pragma link "cxLookAndFeelPainters"
  31. #pragma link "cxLookAndFeels"
  32. #pragma link "cxMaskEdit"
  33. #pragma link "cxPC"
  34. #pragma link "cxPCdxBarPopupMenu"
  35. #pragma link "cxSpinEdit"
  36. #pragma link "cxSplitter"
  37. #pragma link "cxTextEdit"
  38. #pragma link "cxTimeEdit"
  39. #pragma link "dxSkinBlack"
  40. #pragma link "dxSkinBlue"
  41. #pragma link "dxSkinCaramel"
  42. #pragma link "dxSkinCoffee"
  43. #pragma link "dxSkinDarkRoom"
  44. #pragma link "dxSkinDarkSide"
  45. #pragma link "dxSkinFoggy"
  46. #pragma link "dxSkinGlassOceans"
  47. #pragma link "dxSkiniMaginary"
  48. #pragma link "dxSkinLilian"
  49. #pragma link "dxSkinLiquidSky"
  50. #pragma link "dxSkinLondonLiquidSky"
  51. #pragma link "dxSkinMcSkin"
  52. #pragma link "dxSkinMoneyTwins"
  53. #pragma link "dxSkinOffice2007Black"
  54. #pragma link "dxSkinOffice2007Blue"
  55. #pragma link "dxSkinOffice2007Green"
  56. #pragma link "dxSkinOffice2007Pink"
  57. #pragma link "dxSkinOffice2007Silver"
  58. #pragma link "dxSkinOffice2010Black"
  59. #pragma link "dxSkinOffice2010Blue"
  60. #pragma link "dxSkinOffice2010Silver"
  61. #pragma link "dxSkinsCore"
  62. #pragma link "dxSkinscxPCPainter"
  63. #pragma link "dxSkinSeven"
  64. #pragma link "dxSkinSharp"
  65. #pragma link "dxSkinSilver"
  66. #pragma link "dxSkinStardust"
  67. #pragma link "cxRadioGroup"
  68. #pragma link "cxClasses"
  69. #pragma link "cxCustomData"
  70. #pragma link "cxData"
  71. #pragma link "cxDataStorage"
  72. #pragma link "cxDBData"
  73. #pragma link "cxFilter"
  74. #pragma link "cxGrid"
  75. #pragma link "cxGridCustomTableView"
  76. #pragma link "cxGridCustomView"
  77. #pragma link "cxGridDBTableView"
  78. #pragma link "cxGridLevel"
  79. #pragma link "cxGridTableView"
  80. #pragma link "cxStyles"
  81. #pragma link "cxCheckBox"
  82. #pragma link "cxImage"
  83. #pragma link "cxButtonEdit"
  84. #pragma link "cxBlobEdit"
  85. #pragma link "cxColorComboBox"
  86. #pragma link "cxCalc"
  87. #pragma resource "*.dfm"
  88. TVMSEDT0M *VMSEDT0M = NULL;
  89. //---------------------------------------------------------------------------
  90. __fastcall TVMSEDT0M::TVMSEDT0M(TComponent* Owner)
  91. : TForm(Owner)
  92. {
  93. LangTrans->Translate(this, ITSDb_GetConnection());
  94. ITSSkin_Load(this);
  95. //CMM_LoadForm(g_sFormsDir, this);
  96. FUpdate= false;
  97. FTitle = Caption;//"VMS 폼 스케줄 일괄 관리";
  98. TvForm->OptionsView->DataRowHeight = 0;
  99. TvForm->OptionsView->CellAutoHeight = true;
  100. TvForm->OptionsView->Indicator = false;
  101. TvForm->OptionsCustomize->ColumnMoving = false;
  102. TvForm->OptionsCustomize->ColumnSorting = false;
  103. //TvForm->Columns[0]->Width = 40;
  104. //TvForm->Columns[0]->Options->HorzSizing = false;
  105. FStrTime = "";
  106. FEndTime = "";
  107. FSelected = false;
  108. }
  109. //---------------------------------------------------------------------------
  110. /*
  111. * 닫기버튼 이나 x버튼 클릭시 공통으로 처리하는 로직이들어간다..
  112. * Form과 DataModule class를 delete시킨다.
  113. * arguments
  114. *
  115. * return
  116. * void
  117. */
  118. void __fastcall TVMSEDT0M::CommClose()
  119. {
  120. try
  121. {
  122. //CMM_SaveForm(g_sFormsDir, this);
  123. }
  124. catch(...)
  125. {
  126. }
  127. }
  128. //---------------------------------------------------------------------------
  129. void __fastcall TVMSEDT0M::FormCreate(TObject *Sender)
  130. {
  131. //
  132. }
  133. //---------------------------------------------------------------------------
  134. /*
  135. * Form을 보여줄때 호출되는 event 메서드이다.
  136. * arguments
  137. * Sender : event handler 객체
  138. * return
  139. * void
  140. */
  141. void __fastcall TVMSEDT0M::FormShow(TObject *Sender)
  142. {
  143. #if 1
  144. if (FMode == "A")
  145. {
  146. FTitle = lblText1->Caption;//"VMS 폼 스케줄 일괄 등록";
  147. GrpObj->Caption = lblText2->Caption;//"▶ VMS 목록";
  148. BtnAllDel->Visible = false;
  149. }
  150. else
  151. {
  152. FTitle = lblText3->Caption;//"VMS 폼 스케줄 일괄 편집";
  153. GrpObj->Caption = lblText4->Caption;//"▶ 선택폼을 스케줄에 사용중인 VMS 목록";
  154. }
  155. #else
  156. if (FMode == "A")
  157. {
  158. FTitle = "Batch add of VMS form schedule";
  159. GrpObj->Caption = "▶ VMS List";
  160. BtnAllDel->Visible = false;
  161. }
  162. else
  163. {
  164. FTitle = "Batch edit VMS form schedule";
  165. GrpObj->Caption = "▶ List the VMS using to schedule the selection form";
  166. }
  167. #endif
  168. Caption = FTitle;
  169. Refresh();
  170. FormInit();
  171. ChangeEditMode(1);
  172. TmrShow->Enabled = true;
  173. }
  174. //---------------------------------------------------------------------------
  175. /*
  176. * form 초기화
  177. *
  178. * arguments
  179. *
  180. * return
  181. * void
  182. */
  183. void __fastcall TVMSEDT0M::FormInit()
  184. {
  185. FormObjectInit();
  186. FNewDb = false;
  187. }
  188. //---------------------------------------------------------------------------
  189. void __fastcall TVMSEDT0M::FormObjectInit()
  190. {
  191. //TvList->OptionsView->NoDataToDisplayInfoText = "<관련 VMS 정보가 없습니다>";
  192. }
  193. //---------------------------------------------------------------------------
  194. void __fastcall TVMSEDT0M::TmrShowTimer(TObject *Sender)
  195. {
  196. TmrShow->Enabled = false;
  197. BtnSearchClick(NULL);
  198. }
  199. //---------------------------------------------------------------------------
  200. /*
  201. * Close 버튼 클릭 이벤트 핸들러
  202. * arguments
  203. * Sender : event handler 객체
  204. * return
  205. * void
  206. */
  207. void __fastcall TVMSEDT0M::BtnCloseClick(TObject *Sender)
  208. {
  209. Close();
  210. }
  211. //---------------------------------------------------------------------------
  212. void __fastcall TVMSEDT0M::FormClose(TObject *Sender, TCloseAction &Action)
  213. {
  214. CommClose();
  215. VMSEDT0M = NULL;
  216. //Action = caFree;
  217. }
  218. //---------------------------------------------------------------------------
  219. void __fastcall TVMSEDT0M::ChangeEditMode(int AEdit)
  220. {
  221. }
  222. //---------------------------------------------------------------------------
  223. void __fastcall TVMSEDT0M::BtnSearchClick(TObject *Sender)
  224. {
  225. RefreshData();
  226. EdFocus->SetFocus();
  227. ChangeEditMode(1);
  228. if (FStrTime == "")
  229. {
  230. DtStrDate->Date = Now();
  231. }
  232. else
  233. {
  234. TDateTime dtStrDate = APP_StrToDateTime(FStrTime);
  235. DtStrDate->Date = dtStrDate;
  236. DtStrTime->Date = dtStrDate;
  237. DtStrTime->Time = dtStrDate;
  238. }
  239. if (FEndTime == "")
  240. {
  241. TDateTime dtEndDate = EncodeDate(2099, 12, 31);
  242. TDateTime dtEndTime = EncodeTime(23, 59, 59, 0);
  243. DtEndDate->Date = dtEndDate;
  244. DtEndTime->Date = dtEndDate;
  245. DtEndTime->Time = dtEndTime;
  246. }
  247. else
  248. {
  249. TDateTime dtEndDate = APP_StrToDateTime(FEndTime);
  250. DtEndDate->Date = dtEndDate;
  251. DtEndTime->Date = dtEndDate;
  252. DtEndTime->Time = dtEndDate;
  253. }
  254. }
  255. //---------------------------------------------------------------------------
  256. void __fastcall TVMSEDT0M::RefreshData()
  257. {
  258. // 검색조건에 의한 링크 데이터 조회
  259. FormClear();
  260. DisplayFormInfo(0);
  261. DisplayVmsInfo(0);
  262. }
  263. //---------------------------------------------------------------------------
  264. void __fastcall TVMSEDT0M::FormClear()
  265. {
  266. EdFormId->Clear();
  267. EdObjId->Clear();
  268. FNewDb = false;
  269. }
  270. //---------------------------------------------------------------------------
  271. void __fastcall TVMSEDT0M::DisplayInfo()
  272. {
  273. FormClear();
  274. ChangeEditMode(3);
  275. }
  276. //---------------------------------------------------------------------------
  277. void __fastcall TVMSEDT0M::DisplayFormInfo(int AIdx)
  278. {
  279. CMM_ClearGridTableView(TvForm);
  280. String sQry;
  281. TADOQuery *pADO = NULL;
  282. sQry = "SELECT A.* \r\n"
  283. " FROM TB_VMS_FORM A \r\n"
  284. " WHERE A.VMS_FORM_ID = :p01 \r\n"
  285. " ORDER BY A.VMS_FORM_ID \r\n";
  286. try
  287. {
  288. TvForm->BeginUpdate();
  289. TcxDataController *pGDC = TvForm->DataController;
  290. int nRow;
  291. try
  292. {
  293. pADO = new TADOQuery(NULL);
  294. pADO->Close();
  295. pADO->Connection = ITSDb_GetConnection();
  296. ITSDb_SQLText(pADO, sQry);
  297. ITSDb_SQLBind(pADO, "p01", FFormId);
  298. ITSDb_SQLOpen(pADO);
  299. for( ; !pADO->Eof; pADO->Next())
  300. {
  301. nRow = pGDC->AppendRecord();
  302. pGDC->Values[nRow][0] = pADO->FieldByName("VMS_FORM_ID")->AsString;
  303. pGDC->Values[nRow][1] = pADO->FieldByName("VMS_FORM_IMAG")->AsVariant;
  304. }
  305. }
  306. catch(EDatabaseError &E)
  307. {
  308. DBERRORMSG("VMS Form Query", String(E.ClassName()), E.Message, sQry);
  309. throw Exception(String(E.ClassName()) + E.Message);
  310. }
  311. catch(Exception &e)
  312. {
  313. DBERRORMSG("VMS Form Query", String(e.ClassName()), e.Message, sQry);
  314. throw Exception(String(e.ClassName()) + e.Message);
  315. }
  316. }
  317. __finally
  318. {
  319. if (pADO)
  320. {
  321. pADO->Close();
  322. delete pADO;
  323. }
  324. TvForm->EndUpdate();
  325. }
  326. }
  327. //---------------------------------------------------------------------------
  328. void __fastcall TVMSEDT0M::DisplayVmsInfo(int AIdx)
  329. {
  330. CMM_ClearGridTableView(TvList);
  331. String sQry;
  332. TADOQuery *pADO = NULL;
  333. String sWhere;
  334. if (FMode == "A")
  335. {
  336. sWhere = " AND A.VMS_CTLR_NMBR = B.VMS_CTLR_NMBR(+) \r\n";
  337. }
  338. else
  339. {
  340. sWhere = " AND A.VMS_CTLR_NMBR = B.VMS_CTLR_NMBR \r\n";
  341. }
  342. sQry = "SELECT A.VMS_CTLR_NMBR, A.VMS_ID, A.VMS_CTLR_ID, A.VMS_NM, \r\n"
  343. " B.PHASE, B.DSPL_HH, B.DSPL_STRT_HH, B.DSPL_END_HH, \r\n"
  344. " B.USE_YN, B.VMS_FORM_ID, \r\n"
  345. " DECODE(B.VMS_CTLR_NMBR, NULL, 0, 1) AS FG \r\n"
  346. " FROM TB_VMS_CTLR A, \r\n"
  347. " (SELECT X.VMS_CTLR_NMBR, \r\n"
  348. " X.TRFC_SITU_TYPE_CD, \r\n"
  349. " X.PHASE, \r\n"
  350. " X.VMS_FORM_ID, \r\n"
  351. " X.FRST_VMS_IFSC_ID, \r\n"
  352. " X.SECD_VMS_IFSC_ID, \r\n"
  353. " X.THIR_VMS_IFSC_ID, \r\n"
  354. " X.FOUR_VMS_IFSC_ID, \r\n"
  355. " X.VMS_FORM_PRRT_CD, \r\n"
  356. " X.DSPL_HH, \r\n"
  357. " X.DSPL_STRT_HH, \r\n"
  358. " X.DSPL_END_HH, \r\n"
  359. " X.USE_YN, \r\n"
  360. " Y.VMS_TYPE_CD, \r\n"
  361. " Y.VMS_FORM_TYPE_CD, \r\n"
  362. " Y.VMS_FORM_NM \r\n"
  363. " FROM TB_VMS_TRFC_INFR_DSPL_SCH X, \r\n"
  364. " TB_VMS_FORM Y \r\n"
  365. " WHERE X.VMS_FORM_ID = Y.VMS_FORM_ID \r\n"
  366. " AND X.TRFC_SITU_TYPE_CD = :p02 \r\n"
  367. " AND X.VMS_FORM_ID = :p03) B \r\n"
  368. " WHERE A.VMS_TYPE_CD = :p01 \r\n";
  369. sQry+= sWhere;
  370. try
  371. {
  372. TvList->BeginUpdate();
  373. TcxDataController *pGDC = TvList->DataController;
  374. int nRow;
  375. try
  376. {
  377. pADO = new TADOQuery(NULL);
  378. pADO->Close();
  379. pADO->Connection = ITSDb_GetConnection();
  380. ITSDb_SQLText(pADO, sQry);
  381. ITSDb_SQLBind(pADO, "p01", FVmsTypeCd);
  382. ITSDb_SQLBind(pADO, "p02", FScheType);
  383. ITSDb_SQLBind(pADO, "p03", FFormId);
  384. ITSDb_SQLOpen(pADO);
  385. for( ; !pADO->Eof; pADO->Next())
  386. {
  387. String sFormId = pADO->FieldByName("VMS_FORM_ID")->AsString;
  388. if (FMode == "A")
  389. {
  390. if (sFormId == FFormId)
  391. {
  392. //전체추가인데 기존에 등록되어 있으면 추가하지 않는다.
  393. //continue;
  394. }
  395. }
  396. nRow = pGDC->AppendRecord();
  397. pGDC->Values[nRow][Col00->Index] = pADO->FieldByName("VMS_CTLR_NMBR")->AsString;
  398. pGDC->Values[nRow][Col01->Index] = pADO->FieldByName("VMS_CTLR_ID")->AsString;
  399. pGDC->Values[nRow][Col02->Index] = pADO->FieldByName("VMS_NM")->AsString;
  400. String sFlag = pADO->FieldByName("FG")->AsString;
  401. if (sFlag == "0")
  402. {
  403. pGDC->Values[nRow][ColumnSel->Index] = true;
  404. pGDC->Values[nRow][Col03->Index] = "4";
  405. pGDC->Values[nRow][Col04->Index] = Now().FormatString(STR_HHNN);
  406. pGDC->Values[nRow][Col05->Index] = "2099-12-31 23:59";
  407. pGDC->Values[nRow][Col06->Index] = "Y";
  408. pGDC->Values[nRow][Col07->Index] = "1";
  409. pGDC->Values[nRow][Col08->Index] = Now().FormatString("YYYYMMDDHHNN") + "00";
  410. pGDC->Values[nRow][Col09->Index] = "20991231235959";
  411. continue;
  412. }
  413. if (FMode == "A")
  414. {
  415. pGDC->Values[nRow][ColumnSel->Index] = false;
  416. }
  417. else
  418. {
  419. pGDC->Values[nRow][ColumnSel->Index] = true;
  420. }
  421. String sStrDate = pADO->FieldByName("DSPL_STRT_HH")->AsString;
  422. String sEndDate = pADO->FieldByName("DSPL_END_HH")->AsString;
  423. pGDC->Values[nRow][Col03->Index] = pADO->FieldByName("DSPL_HH")->AsString;
  424. pGDC->Values[nRow][Col04->Index] = ITSUtil_FormatStr(sStrDate, STR_HHNN);
  425. pGDC->Values[nRow][Col05->Index] = ITSUtil_FormatStr(sEndDate, STR_HHNN);
  426. pGDC->Values[nRow][Col06->Index] = pADO->FieldByName("USE_YN")->AsString;
  427. pGDC->Values[nRow][Col07->Index] = pADO->FieldByName("PHASE")->AsString;
  428. pGDC->Values[nRow][Col08->Index] = sStrDate;
  429. pGDC->Values[nRow][Col09->Index] = sEndDate;
  430. FStrTime = sStrDate;
  431. FEndTime = sEndDate;
  432. }
  433. }
  434. catch(EDatabaseError &E)
  435. {
  436. DBERRORMSG("VMS Query", String(E.ClassName()), E.Message, sQry);
  437. throw Exception(String(E.ClassName()) + E.Message);
  438. }
  439. catch(Exception &e)
  440. {
  441. DBERRORMSG("VMS Query", String(e.ClassName()), e.Message, sQry);
  442. throw Exception(String(e.ClassName()) + e.Message);
  443. }
  444. }
  445. __finally
  446. {
  447. if (pADO)
  448. {
  449. pADO->Close();
  450. delete pADO;
  451. }
  452. TvList->EndUpdate();
  453. }
  454. }
  455. //---------------------------------------------------------------------------
  456. void __fastcall TVMSEDT0M::BtnAllSelectClick(TObject *Sender)
  457. {
  458. TcxButton *pBtn = (TcxButton*)Sender;
  459. CMM_CheckAllListItem(TvList, ColumnSel->Index, pBtn->Tag);
  460. }
  461. //---------------------------------------------------------------------------
  462. void __fastcall TVMSEDT0M::TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  463. TMouseButton AButton, TShiftState AShift,
  464. bool &AHandled)
  465. {
  466. if (!ACellViewInfo) return;
  467. int nRow = Sender->DataController->FocusedRecordIndex;
  468. if( nRow <= -1 )
  469. return;
  470. TcxGridDataController *pDc = (TcxGridDataController*)Sender->DataController;
  471. int nColIdx = ACellViewInfo->Item->Index;
  472. String sStrDate = VarToStr(pDc->Values[nRow][Col08->Index]);
  473. String sEndDate = VarToStr(pDc->Values[nRow][Col09->Index]);
  474. {
  475. //표출기간설정
  476. TVMSSEL0M *pSelDate = new TVMSSEL0M(this);
  477. pSelDate->FStrTime = sStrDate;
  478. pSelDate->FEndTime = sEndDate;
  479. pSelDate->ShowModal();
  480. bool bSelected = pSelDate->FSelected;
  481. sStrDate = pSelDate->FStrTime;
  482. sEndDate = pSelDate->FEndTime;
  483. delete pSelDate;
  484. pSelDate = NULL;
  485. if (bSelected)
  486. {
  487. pDc->Values[nRow][Col04->Index] = ITSUtil_FormatStr(sStrDate, STR_HHNN);;
  488. pDc->Values[nRow][Col05->Index] = ITSUtil_FormatStr(sEndDate, STR_HHNN);;
  489. pDc->Values[nRow][Col08->Index] = sStrDate;
  490. pDc->Values[nRow][Col09->Index] = sEndDate;
  491. }
  492. return;
  493. }
  494. }
  495. //---------------------------------------------------------------------------
  496. bool __fastcall TVMSEDT0M::CheckData(bool ACheckData)
  497. {
  498. int nSelCnt = CMM_GetCheckCount(TvList, ColumnSel->Index);
  499. if (nSelCnt <= 0)
  500. {
  501. //Application->MessageBox(L"VMS Schedule Batch Management\r\nSelect the VMS you want to work on from the VMS list.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  502. Application->MessageBox(lblText5->Caption.c_str(),//L"VMS 스케줄 일괄 관리\r\nVMS 목록에서 작업대상 VMS를 먼저 선택하세요.",
  503. FTitle.c_str(),
  504. MB_OK|MB_ICONERROR|MB_APPLMODAL);
  505. return false;
  506. }
  507. if (!ACheckData) return true;
  508. String sStrDate = DtStrDate->Date.FormatString("yyyymmdd");
  509. String sStrTime = DtStrTime->DateTime.FormatString("HHnn");
  510. String sEndDate = DtEndDate->Date.FormatString("yyyymmdd");
  511. String sEndTime = DtEndTime->DateTime.FormatString("HHnn");
  512. FStrTime = sStrDate + sStrTime;
  513. FEndTime = sEndDate + sEndTime;
  514. if (FStrTime > FEndTime)
  515. {
  516. //Application->MessageBox(L"The display start time is larger than the display end time.", L"Set VMS form expiration period", MB_OK|MB_ICONWARNING|MB_APPLMODAL);
  517. Application->MessageBox(lblText6->Caption.c_str(),//L"표출 시작시각이 표출 종료시각 보다 큽니다.",
  518. lblText7->Caption.c_str(),//L"VMS 폼 표출기간 설정",
  519. MB_OK|MB_ICONWARNING|MB_APPLMODAL);
  520. ActiveControl = DtStrDate;
  521. return false;
  522. }
  523. FStrTime = FStrTime + "00";
  524. FEndTime = FEndTime + "59";
  525. return true;
  526. }
  527. //---------------------------------------------------------------------------
  528. void __fastcall TVMSEDT0M::UpdateEditData()
  529. {
  530. try
  531. {
  532. TvList->BeginUpdate();
  533. int nRowCnt = TvList->ViewData->RecordCount;
  534. for (int ii = 0; ii < nRowCnt; ii++)
  535. {
  536. TcxCustomGridRow* ARow = TvList->ViewData->Rows[ii];
  537. if (!ARow->IsData) continue;
  538. if (!((bool)ARow->Values[ColumnSel->Index]))
  539. {
  540. continue;
  541. }
  542. ARow->Values[Col03->Index] = CbCycle->Text.Trim();
  543. ARow->Values[Col04->Index] = ITSUtil_FormatStr(FStrTime, STR_HHNN);
  544. ARow->Values[Col05->Index] = ITSUtil_FormatStr(FEndTime, STR_HHNN);
  545. ARow->Values[Col06->Index] = CbUse->Text.Trim();
  546. //ARow->Values[Col07->Index] = ""; //phase
  547. ARow->Values[Col08->Index] = FStrTime;
  548. ARow->Values[Col09->Index] = FEndTime;
  549. }
  550. }
  551. __finally
  552. {
  553. TvList->EndUpdate();
  554. }
  555. }
  556. //---------------------------------------------------------------------------
  557. void __fastcall TVMSEDT0M::BtnAllAddClick(TObject *Sender)
  558. {
  559. //등록 - 등록 또는 수정 INSERT or UPDATE
  560. if (!CheckData(true)) return;
  561. #if 1
  562. if (Application->MessageBox(lblText8->Caption.c_str(),//L"VMS 스케줄 일괄 관리\r\n선택한 VMS에 대하여 스케줄 정보를 [[[동일내용으로]]] 저장 하시겠습니까?",
  563. FTitle.c_str(),
  564. MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  565. #else
  566. if (Application->MessageBox(L"VMS schedule management\r\nDo you want to save schedule information for selected VMS [[[Same as above]]]?",
  567. FTitle.c_str(),
  568. MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  569. #endif
  570. UpdateEditData(); //동일 편집내용을 VMS목록에 적용
  571. bool bResult;
  572. if (FMode == "A")
  573. {
  574. //INSERT
  575. bResult = InsertVmsSchedule();
  576. }
  577. else
  578. {
  579. //UPDATE
  580. bResult = UpdateVmsSchedule();
  581. }
  582. }
  583. //---------------------------------------------------------------------------
  584. void __fastcall TVMSEDT0M::BtnAllEdtClick(TObject *Sender)
  585. {
  586. //수정 - 등록 또는 수정 INSERT or UPDATE
  587. if (!CheckData(true)) return;
  588. #if 1
  589. if (Application->MessageBox(lblText9->Caption.c_str(),//L"VMS 스케줄 일괄 관리\r\n선택한 VMS에 대하여 스케줄 정보를 저장 하시겠습니까?",
  590. FTitle.c_str(),
  591. MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  592. #else
  593. if (Application->MessageBox(L"VMS schedule management\r\nDo you want to save schedule information for selected VMS?",
  594. FTitle.c_str(),
  595. MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  596. #endif
  597. bool bResult;
  598. if (FMode == "A")
  599. {
  600. //INSERT
  601. bResult = InsertVmsSchedule();
  602. }
  603. else
  604. {
  605. //UPDATE
  606. bResult = UpdateVmsSchedule();
  607. }
  608. }
  609. //---------------------------------------------------------------------------
  610. void __fastcall TVMSEDT0M::BtnAllDelClick(TObject *Sender)
  611. {
  612. //삭제 - 무조건 DELETE
  613. if (!CheckData(false)) return;
  614. #if 1
  615. if (Application->MessageBox(lblText10->Caption.c_str(),//L"VMS 스케줄 일괄 관리\r\n선택한 VMS에 대하여 스케줄 정보를 삭제하시겠습니까?",
  616. FTitle.c_str(),
  617. MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  618. #else
  619. if (Application->MessageBox(L"VMS schedule management\r\nDo you want to delete the schedule information for the selected VMS?",
  620. FTitle.c_str(),
  621. MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  622. #endif
  623. bool bResult = true;
  624. if (bResult)
  625. {
  626. bResult = DeleteVmsSchedule();
  627. }
  628. }
  629. //---------------------------------------------------------------------------
  630. bool __fastcall TVMSEDT0M::DeleteVmsSchedule()
  631. {
  632. bool bResult = false;
  633. String sQry;
  634. TADOQuery *pADO = NULL;
  635. sQry = "DELETE TB_VMS_TRFC_INFR_DSPL_SCH \r\n"
  636. " WHERE VMS_CTLR_NMBR = :p01 \r\n"
  637. " AND TRFC_SITU_TYPE_CD = :p02 \r\n"
  638. " AND PHASE = :p03 \r\n"
  639. " AND VMS_FORM_ID = :p04 \r\n";
  640. try
  641. {
  642. try
  643. {
  644. pADO = new TADOQuery(NULL);
  645. pADO->Close();
  646. pADO->Connection = ITSDb_GetConnection();
  647. ITSDb_SQLText(pADO, sQry);
  648. //ITSDb_GetConnection()->BeginTrans();
  649. int nRowCnt = TvList->ViewData->RecordCount;
  650. for (int ii = 0; ii < nRowCnt; ii++)
  651. {
  652. TcxCustomGridRow* ARow = TvList->ViewData->Rows[ii];
  653. if (!ARow->IsData) continue;
  654. if (!((bool)ARow->Values[ColumnSel->Index]))
  655. {
  656. continue;
  657. }
  658. String sVmsNmbr = VarToStr(ARow->Values[Col00->Index]);
  659. String sScheType = FScheType;
  660. String sPhase = VarToStr(ARow->Values[Col07->Index]);
  661. String sFormId = FFormId;
  662. ITSDb_SQLBind(pADO, "p01", sVmsNmbr);
  663. ITSDb_SQLBind(pADO, "p02", sScheType);
  664. ITSDb_SQLBind(pADO, "p03", sPhase);
  665. ITSDb_SQLBind(pADO, "p04", sFormId);
  666. ITSDb_SQLExec(pADO);
  667. }
  668. //ITSDb_GetConnection()->CommitTrans();
  669. bResult = true;
  670. }
  671. catch(EDatabaseError &E)
  672. {
  673. ITSDb_GetConnection()->RollbackTrans();
  674. DBERRORMSG("VMS Schedule delete", String(E.ClassName()), E.Message, sQry);
  675. throw Exception(String(E.ClassName()) + E.Message);
  676. }
  677. catch(Exception &e)
  678. {
  679. ITSDb_GetConnection()->RollbackTrans();
  680. DBERRORMSG("VMS Schedule delete", String(e.ClassName()), e.Message, sQry);
  681. throw Exception(String(e.ClassName()) + e.Message);
  682. }
  683. }
  684. __finally
  685. {
  686. if (pADO)
  687. {
  688. pADO->Close();
  689. delete pADO;
  690. }
  691. }
  692. if (bResult)
  693. {
  694. #if 1
  695. Application->MessageBox(lblText11->Caption.c_str(),//L"VMS 스케줄 일괄 관리\r\nVMS 스케줄 정보를 삭제 하였습니다.",
  696. FTitle.c_str(),
  697. MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  698. #else
  699. Application->MessageBox(L"VMS schedule management\r\nDeleted the VMS schedule information.",
  700. FTitle.c_str(),
  701. MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  702. #endif
  703. FSelected = true;
  704. Close();
  705. }
  706. return bResult;
  707. }
  708. //---------------------------------------------------------------------------
  709. bool __fastcall TVMSEDT0M::UpdateVmsSchedule()
  710. {
  711. bool bResult = false;
  712. String sQry;
  713. TADOQuery *pADO = NULL;
  714. sQry = "UPDATE TB_VMS_TRFC_INFR_DSPL_SCH SET \r\n"
  715. " DSPL_HH = :p05, \r\n"
  716. " DSPL_STRT_HH = :p06, \r\n"
  717. " DSPL_END_HH = :p07, \r\n"
  718. " USE_YN = :p08 \r\n"
  719. " WHERE VMS_CTLR_NMBR = :p01 \r\n"
  720. " AND TRFC_SITU_TYPE_CD = :p02 \r\n"
  721. " AND PHASE = :p03 \r\n"
  722. " AND VMS_FORM_ID = :p04 \r\n";
  723. try
  724. {
  725. try
  726. {
  727. pADO = new TADOQuery(NULL);
  728. pADO->Close();
  729. pADO->Connection = ITSDb_GetConnection();
  730. ITSDb_SQLText(pADO, sQry);
  731. //ITSDb_GetConnection()->BeginTrans();
  732. int nRowCnt = TvList->ViewData->RecordCount;
  733. for (int ii = 0; ii < nRowCnt; ii++)
  734. {
  735. TcxCustomGridRow* ARow = TvList->ViewData->Rows[ii];
  736. if (!ARow->IsData) continue;
  737. if (!((bool)ARow->Values[ColumnSel->Index]))
  738. {
  739. continue;
  740. }
  741. String sVmsNmbr = VarToStr(ARow->Values[Col00->Index]);
  742. String sScheType = FScheType;
  743. String sPhase = VarToStr(ARow->Values[Col07->Index]);
  744. String sFormId = FFormId;
  745. String sDispHH = VarToStr(ARow->Values[Col03->Index]);
  746. String sStrTime = VarToStr(ARow->Values[Col08->Index]);
  747. String sEndTime = VarToStr(ARow->Values[Col09->Index]);
  748. String sUseYn = VarToStr(ARow->Values[Col06->Index]);
  749. ITSDb_SQLBind(pADO, "p01", sVmsNmbr);
  750. ITSDb_SQLBind(pADO, "p02", sScheType);
  751. ITSDb_SQLBind(pADO, "p03", sPhase);
  752. ITSDb_SQLBind(pADO, "p04", sFormId);
  753. ITSDb_SQLBind(pADO, "p05", sDispHH);
  754. ITSDb_SQLBind(pADO, "p06", sStrTime);
  755. ITSDb_SQLBind(pADO, "p07", sEndTime);
  756. ITSDb_SQLBind(pADO, "p08", sUseYn);
  757. ITSDb_SQLExec(pADO);
  758. }
  759. //ITSDb_GetConnection()->CommitTrans();
  760. bResult = true;
  761. }
  762. catch(EDatabaseError &E)
  763. {
  764. ITSDb_GetConnection()->RollbackTrans();
  765. DBERRORMSG("VMS Schedule edit", String(E.ClassName()), E.Message, sQry);
  766. throw Exception(String(E.ClassName()) + E.Message);
  767. }
  768. catch(Exception &e)
  769. {
  770. ITSDb_GetConnection()->RollbackTrans();
  771. DBERRORMSG("VMS Schedule edit", String(e.ClassName()), e.Message, sQry);
  772. throw Exception(String(e.ClassName()) + e.Message);
  773. }
  774. }
  775. __finally
  776. {
  777. if (pADO)
  778. {
  779. pADO->Close();
  780. delete pADO;
  781. }
  782. }
  783. if (bResult)
  784. {
  785. #if 1
  786. Application->MessageBox(lblText12->Caption.c_str(),//L"VMS 스케줄 일괄 관리\r\nVMS 스케줄 정보를 수정 하였습니다.",
  787. FTitle.c_str(),
  788. MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  789. #else
  790. Application->MessageBox(L"VMS schedule management\r\Edited the VMS schedule information.",
  791. FTitle.c_str(),
  792. MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  793. #endif
  794. FSelected = true;
  795. Close();
  796. }
  797. return bResult;
  798. }
  799. //---------------------------------------------------------------------------
  800. bool __fastcall TVMSEDT0M::InsertVmsSchedule()
  801. {
  802. bool bResult = false;
  803. String sQry;
  804. TADOQuery *pADO = NULL;
  805. sQry = "INSERT INTO TB_VMS_TRFC_INFR_DSPL_SCH ( \r\n"
  806. " VMS_CTLR_NMBR, \r\n"
  807. " TRFC_SITU_TYPE_CD, \r\n"
  808. " PHASE, \r\n"
  809. " VMS_FORM_ID, \r\n"
  810. " DSPL_HH, \r\n"
  811. " DSPL_STRT_HH, \r\n"
  812. " DSPL_END_HH, \r\n"
  813. " USE_YN \r\n"
  814. " ) \r\n"
  815. " VALUES ( \r\n"
  816. " :p01, \r\n"
  817. " :p02, \r\n"
  818. " (SELECT NVL(MAX(PHASE), 0) + 1 \r\n"
  819. " FROM TB_VMS_TRFC_INFR_DSPL_SCH \r\n"
  820. " WHERE VMS_CTLR_NMBR = :p08 \r\n"
  821. " AND TRFC_SITU_TYPE_CD = :p09), \r\n"
  822. " :p03, \r\n"
  823. " :p04, \r\n"
  824. " :p05, \r\n"
  825. " :p06, \r\n"
  826. " :p07 \r\n"
  827. " ) \r\n";
  828. try
  829. {
  830. try
  831. {
  832. pADO = new TADOQuery(NULL);
  833. pADO->Close();
  834. pADO->Connection = ITSDb_GetConnection();
  835. ITSDb_SQLText(pADO, sQry);
  836. //ITSDb_GetConnection()->BeginTrans();
  837. int nRowCnt = TvList->ViewData->RecordCount;
  838. for (int ii = 0; ii < nRowCnt; ii++)
  839. {
  840. TcxCustomGridRow* ARow = TvList->ViewData->Rows[ii];
  841. if (!ARow->IsData) continue;
  842. if (!((bool)ARow->Values[ColumnSel->Index]))
  843. {
  844. continue;
  845. }
  846. String sVmsNmbr = VarToStr(ARow->Values[Col00->Index]);
  847. String sScheType = FScheType;
  848. String sFormId = FFormId;
  849. String sDispHH = VarToStr(ARow->Values[Col03->Index]);
  850. String sStrTime = VarToStr(ARow->Values[Col08->Index]);
  851. String sEndTime = VarToStr(ARow->Values[Col09->Index]);
  852. String sUseYn = VarToStr(ARow->Values[Col06->Index]);
  853. ITSDb_SQLBind(pADO, "p01", sVmsNmbr);
  854. ITSDb_SQLBind(pADO, "p02", sScheType);
  855. ITSDb_SQLBind(pADO, "p03", sFormId);
  856. ITSDb_SQLBind(pADO, "p04", sDispHH);
  857. ITSDb_SQLBind(pADO, "p05", sStrTime);
  858. ITSDb_SQLBind(pADO, "p06", sEndTime);
  859. ITSDb_SQLBind(pADO, "p07", sUseYn);
  860. ITSDb_SQLBind(pADO, "p08", sVmsNmbr);
  861. ITSDb_SQLBind(pADO, "p09", sScheType);
  862. ITSDb_SQLExec(pADO);
  863. }
  864. //ITSDb_GetConnection()->CommitTrans();
  865. bResult = true;
  866. }
  867. catch(EDatabaseError &E)
  868. {
  869. ITSDb_GetConnection()->RollbackTrans();
  870. DBERRORMSG("VMS Schedule save", String(E.ClassName()), E.Message, sQry);
  871. throw Exception(String(E.ClassName()) + E.Message);
  872. }
  873. catch(Exception &e)
  874. {
  875. ITSDb_GetConnection()->RollbackTrans();
  876. DBERRORMSG("VMS Schedule save", String(e.ClassName()), e.Message, sQry);
  877. throw Exception(String(e.ClassName()) + e.Message);
  878. }
  879. }
  880. __finally
  881. {
  882. if (pADO)
  883. {
  884. pADO->Close();
  885. delete pADO;
  886. }
  887. }
  888. if (bResult)
  889. {
  890. #if 1
  891. Application->MessageBox(lblText13->Caption.c_str(),//L"VMS 스케줄 일괄 관리\r\nVMS 스케줄 정보를 저장 하였습니다.",
  892. FTitle.c_str(),
  893. MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  894. #else
  895. Application->MessageBox(L"VMS schedule management\r\nVMS schedule information saved.",
  896. FTitle.c_str(),
  897. MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  898. #endif
  899. FSelected = true;
  900. Close();
  901. }
  902. return bResult;
  903. }
  904. //---------------------------------------------------------------------------