VMSEDT0MF.cpp 32 KB

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