IFM0010MF.cpp 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "ITSDbF.h"
  6. #include "WindowMsgF.h"
  7. #include "AppGlobalF.h"
  8. #include "CDSFacilityF.h"
  9. #include "CDSCompanyF.h"
  10. #include "ITSLangTransF.h"
  11. #include "ITS_OPLibF.h"
  12. #pragma hdrstop
  13. #include "IFM0010MF.h"
  14. //---------------------------------------------------------------------------
  15. #pragma package(smart_init)
  16. #pragma link "FRAME_UnRegFacilityListF"
  17. #pragma link "cxButtons"
  18. #pragma link "cxContainer"
  19. #pragma link "cxControls"
  20. #pragma link "cxEdit"
  21. #pragma link "cxGraphics"
  22. #pragma link "cxGroupBox"
  23. #pragma link "cxLookAndFeelPainters"
  24. #pragma link "cxLookAndFeels"
  25. #pragma link "cxSplitter"
  26. #pragma link "dxSkinBlack"
  27. #pragma link "dxSkinBlue"
  28. #pragma link "dxSkinsCore"
  29. #pragma link "FRAME_FacilityListF"
  30. #pragma link "cxLabel"
  31. #pragma link "dxSkinMcSkin"
  32. #pragma resource "*.dfm"
  33. TIFM0010M *IFM0010M = NULL;
  34. extern LOGININFO *g_pLOGIN;
  35. //---------------------------------------------------------------------------
  36. __fastcall TIFM0010M::TIFM0010M(TComponent* Owner)
  37. : TForm(Owner)
  38. {
  39. LangTrans->Translate(this, ITSDb_GetConnection());
  40. ITSSkin_Load(this);
  41. CMM_LoadForm(g_sFormsDir, this);
  42. FTitle = Caption;//"시설물정보 관리";
  43. FRAMEFacilityList1->PnlBottom->Visible = false;
  44. FRAMEFacilityList1->PnlTop->Visible = false;
  45. FRAMEFacilityList1->TvList->OptionsData->Editing = true;
  46. FRAMEUnRegFacilityList1->PnlBottom->Visible = false;
  47. cxGroupBox2->Width = 390;
  48. cxSplitter1->CloseSplitter();
  49. cxSplitter1->Visible = false;
  50. FDbUpdate = false;
  51. }
  52. //---------------------------------------------------------------------------
  53. void __fastcall TIFM0010M::CommClose()
  54. {
  55. try
  56. {
  57. CMM_SaveForm(g_sFormsDir, this);
  58. }
  59. catch(...)
  60. {
  61. }
  62. }
  63. //---------------------------------------------------------------------------
  64. void __fastcall TIFM0010M::FormInit()
  65. {
  66. m_pGDC1 = FRAMEFacilityList1->TvList->DataController;
  67. m_pGDC2 = FRAMEUnRegFacilityList1->TvList->DataController;
  68. }
  69. //---------------------------------------------------------------------------
  70. void __fastcall TIFM0010M::FormShow(TObject *Sender)
  71. {
  72. Refresh();
  73. FormInit();
  74. TmrShow->Enabled = true;
  75. }
  76. //---------------------------------------------------------------------------
  77. void __fastcall TIFM0010M::TmrShowTimer(TObject *Sender)
  78. {
  79. TmrShow->Enabled = false;
  80. BtnSearchClick((TObject*)BtnSearch);
  81. }
  82. //---------------------------------------------------------------------------
  83. void __fastcall TIFM0010M::BtnSearchClick(TObject *Sender)
  84. {
  85. Application->ProcessMessages();
  86. TSqlCursor sqlCrs((TControl*)BtnSearch);
  87. RefreshData();
  88. }
  89. //---------------------------------------------------------------------------
  90. void __fastcall TIFM0010M::RefreshData()
  91. {
  92. FUpdate = false;
  93. FRAMEFacilityList1->UpdateList();
  94. FRAMEUnRegFacilityList1->UpdateList();
  95. if (m_pGDC2->RecordCount == 0)
  96. {
  97. cxSplitter1->CloseSplitter();
  98. cxSplitter1->Visible = false;
  99. }
  100. else
  101. {
  102. cxSplitter1->Visible = true;
  103. cxSplitter1->OpenSplitter();
  104. }
  105. }
  106. //---------------------------------------------------------------------------
  107. void __fastcall TIFM0010M::BtnCloseClick(TObject *Sender)
  108. {
  109. Close();
  110. }
  111. //---------------------------------------------------------------------------
  112. void __fastcall TIFM0010M::FormClose(TObject *Sender, TCloseAction &Action)
  113. {
  114. CommClose();
  115. IFM0010M = NULL;
  116. Action = caFree;
  117. }
  118. //---------------------------------------------------------------------------
  119. void __fastcall TIFM0010M::BtnEditClick(TObject *Sender)
  120. {
  121. TListFocus tvFocus(FRAMEFacilityList1->TvList);
  122. if (BtnEdit->Caption == FrmLang->lblCancel->Caption)//"취소")
  123. {
  124. FRAMEFacilityList1->CxList->SetFocus();
  125. Application->ProcessMessages();
  126. SaveData();
  127. }
  128. FrmLang->ITSSkin_ButtonClick(BtnSearch, BtnEdit, BtnInsert, BtnDelete, BtnApply);
  129. ChangeEditMode(BtnEdit->Down);
  130. BtnInsert->Enabled = !BtnEdit->Down;
  131. RefreshData();
  132. }
  133. //---------------------------------------------------------------------------
  134. void __fastcall TIFM0010M::ChangeEditMode(bool AEdit)
  135. {
  136. bool bEditing = AEdit;
  137. //int nFocusRow = FRAMEFacilityList1->TvList->Controller->FocusedRowIndex;
  138. try
  139. {
  140. FRAMEFacilityList1->TvList->BeginUpdate();
  141. FRAMEFacilityList1->Column01->Visible = bEditing;
  142. FRAMEFacilityList1->Column03->Options->Editing = bEditing;
  143. FRAMEFacilityList1->Column05->Options->Editing = bEditing;
  144. FRAMEFacilityList1->Column06->Options->Editing = bEditing;
  145. FRAMEFacilityList1->Column07->Options->Editing = bEditing;
  146. FRAMEFacilityList1->Column08->Options->Editing = bEditing;
  147. FRAMEFacilityList1->Column09->Options->Editing = bEditing;
  148. FRAMEFacilityList1->Column10->Options->Editing = bEditing;
  149. FRAMEFacilityList1->Column11->Options->Editing = bEditing;
  150. FRAMEFacilityList1->Column12->Options->Editing = bEditing;
  151. FRAMEFacilityList1->Column13->Options->Editing = bEditing;
  152. FRAMEFacilityList1->Column14->Options->Editing = bEditing;
  153. FRAMEFacilityList1->Column15->Options->Editing = bEditing;
  154. //FRAMEFacilityList1->Column16->Options->Editing = bEditing;
  155. //FRAMEFacilityList1->Column17->Options->Editing = bEditing;
  156. //FRAMEFacilityList1->Column18->Options->Editing = bEditing;
  157. //FRAMEFacilityList1->Column19->Options->Editing = bEditing;
  158. FRAMEFacilityList1->Column20->Options->Editing = bEditing;
  159. //FRAMEFacilityList1->Column21->Options->Editing = bEditing;
  160. FRAMEFacilityList1->Column22->Options->Editing = bEditing;
  161. FRAMEFacilityList1->Column23->Options->Editing = bEditing;
  162. FRAMEFacilityList1->Column24->Options->Editing = bEditing;
  163. }
  164. __finally
  165. {
  166. FRAMEFacilityList1->TvList->EndUpdate();
  167. if (bEditing)
  168. {
  169. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  170. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  171. }
  172. else
  173. {
  174. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  175. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  176. }
  177. //FRAMEFacilityList1->TvList->Controller->FocusedRowIndex = nFocusRow;
  178. }
  179. }
  180. //---------------------------------------------------------------------------
  181. void __fastcall TIFM0010M::BtnDeleteClick(TObject *Sender)
  182. {
  183. int nIdx = m_pGDC1->FocusedRecordIndex;
  184. if (nIdx < 0) return;
  185. //m_pGDC1->Values[nIdx][FRAMEFacilityList1->Column01->Index] = FrmLang->lblDelete->Caption;//"삭제";
  186. m_pGDC1->Values[nIdx][FRAMEFacilityList1->Column01->Index] = FrmLang->lblDelete->Caption;
  187. int nMemPtr = m_pGDC1->Values[nIdx][FRAMEFacilityList1->Column99->Index];
  188. TItsFacility *pObj = (TItsFacility*)nMemPtr;
  189. pObj->EditMode = DB_DELETE;
  190. }
  191. //---------------------------------------------------------------------------
  192. void __fastcall TIFM0010M::BtnApplyClick(TObject *Sender)
  193. {
  194. FUpdate = true;
  195. BtnEdit->Down = false;
  196. BtnEdit->Click();
  197. }
  198. //---------------------------------------------------------------------------
  199. void __fastcall TIFM0010M::BtnInsertClick(TObject *Sender)
  200. {
  201. int nSelCount = CMM_GetCheckCount(FRAMEUnRegFacilityList1->TvList, FRAMEUnRegFacilityList1->ColumnSel->Index);
  202. if (nSelCount == 0)
  203. {
  204. Application->MessageBox(cxLabel1->Caption.c_str(), //L"미등록 시설물이 선택되지 않았습니다.\r\n추가 등록할 미등록 시설물을 체크하여 선택하십시요.",
  205. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  206. return;
  207. }
  208. if (Application->MessageBox(cxLabel2->Caption.c_str(), //L"선택하신 미등록 시설물을 시설물 정보에 추가하여 저장 하시겠습니까?",
  209. FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  210. TADOQuery *pADO = NULL;
  211. String sQry;
  212. try
  213. {
  214. sQry = "MERGE INTO TB_FCLT_INFR L \r\n"
  215. "USING (SELECT :p01 AS FCLT_ID, \r\n"
  216. " :p02 AS FCLT_TYPE, \r\n"
  217. " :p03 AS FCLT_LCTN, \r\n"
  218. " 'N' AS DEL_YN, \r\n"
  219. " 0 AS USE_YEAR, \r\n"
  220. " 0 AS AMT, \r\n"
  221. " :p04 AS ADTN_NM, \r\n"
  222. " TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') AS ADTN_DT \r\n"
  223. " FROM DUAL ) M \r\n"
  224. "ON (L.FCLT_ID = M.FCLT_ID) \r\n"
  225. "WHEN MATCHED THEN \r\n"
  226. " UPDATE SET L.DEL_YN = M.DEL_YN, \r\n"
  227. " L.ADTN_NM = M.ADTN_NM, \r\n"
  228. " L.ADTN_DT = M.ADTN_DT \r\n"
  229. "WHEN NOT MATCHED THEN \r\n"
  230. " INSERT (L.FCLT_ID, L.FCLT_TYPE, L.FCLT_LCTN, L.DEL_YN, \r\n"
  231. " L.USE_YEAR,L.AMT, L.ADTN_NM, L.ADTN_DT) \r\n"
  232. " VALUES (M.FCLT_ID, M.FCLT_TYPE, M.FCLT_LCTN, M.DEL_YN, \r\n"
  233. " M.USE_YEAR,M.AMT, M.ADTN_NM, M.ADTN_DT) \r\n";
  234. FRAMEUnRegFacilityList1->TvList->BeginUpdate();
  235. try
  236. {
  237. pADO = new TADOQuery(NULL);
  238. pADO->Close();
  239. pADO->Connection = ITSDb_GetConnection();
  240. ITSDb_SQLText(pADO, sQry);
  241. ITSDb_GetConnection()->BeginTrans();
  242. int nMemPtr;
  243. TItsRegFacility *pObj;
  244. int nRowCnt = FRAMEUnRegFacilityList1->TvList->ViewData->RecordCount;
  245. for (int ii = 0; ii < nRowCnt; ii++)
  246. {
  247. TcxCustomGridRow* ARow = FRAMEUnRegFacilityList1->TvList->ViewData->Rows[ii];
  248. if (((bool)ARow->Values[FRAMEUnRegFacilityList1->ColumnSel->Index]))
  249. {
  250. nMemPtr = ARow->Values[FRAMEUnRegFacilityList1->Column99->Index];
  251. pObj = (TItsRegFacility*)nMemPtr;
  252. ITSDb_SQLBind(pADO, "p01", pObj->Id);
  253. ITSDb_SQLBind(pADO, "p02", pObj->Type);
  254. ITSDb_SQLBind(pADO, "p03", pObj->Name);
  255. ITSDb_SQLBind(pADO, "p04", g_pLOGIN->sUserId);
  256. ITSDb_SQLExec(pADO);
  257. }
  258. }
  259. ITSDb_GetConnection()->CommitTrans();
  260. Application->MessageBox(cxLabel3->Caption.c_str(), //L"선택하신 미등록 시설물을 시설물 정보에 정상적으로 저장하였습니다.",
  261. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  262. FDbUpdate = true;
  263. }
  264. catch(EDatabaseError &E)
  265. {
  266. ITSDb_GetConnection()->RollbackTrans();
  267. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  268. DBERRORMSG(Caption, String(E.ClassName()), E.Message, sQry);
  269. throw Exception(String(E.ClassName()) + E.Message);
  270. }
  271. catch(Exception &e)
  272. {
  273. ITSDb_GetConnection()->RollbackTrans();
  274. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  275. DBERRORMSG(Caption, String(e.ClassName()), e.Message, sQry);
  276. throw Exception(String(e.ClassName()) + e.Message);
  277. }
  278. }
  279. __finally
  280. {
  281. if (pADO)
  282. {
  283. pADO->Close();
  284. delete pADO;
  285. }
  286. FRAMEUnRegFacilityList1->TvList->EndUpdate();
  287. }
  288. ItsFacilityManager->LoadFromDb();
  289. HWND MainWinHandle = (HWND)g_AppCfg.lMainWinHandle;
  290. RefreshData();
  291. }
  292. //---------------------------------------------------------------------------
  293. void __fastcall TIFM0010M::FRAMEFacilityList1TvListCustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  294. bool &ADone)
  295. {
  296. if (AViewInfo)
  297. {
  298. String sType = AViewInfo->GridRecord->DisplayTexts[FRAMEFacilityList1->Column01->Index];
  299. if (sType == FrmLang->lblModify->Caption)//"수정")
  300. {
  301. ACanvas->Brush->Color = clOlive;
  302. }
  303. else if (sType == FrmLang->lblDelete->Caption)//"삭제")
  304. {
  305. ACanvas->Brush->Color = clRed;
  306. }
  307. else if (sType == FrmLang->lblNew->Caption)//"신규")
  308. {
  309. ACanvas->Brush->Color = clLime;
  310. if (AViewInfo->Focused) ACanvas->Font->Color = clBlack;
  311. }
  312. sType = AViewInfo->GridRecord->DisplayTexts[FRAMEFacilityList1->Column00->Index]; //삭제됨
  313. if (sType == "Y")
  314. ACanvas->Brush->Color = clSilver;
  315. }
  316. }
  317. //---------------------------------------------------------------------------
  318. bool __fastcall TIFM0010M::IsUpdate()
  319. {
  320. try
  321. {
  322. ItsFacilityManager->FLists.Lock();
  323. FOR_STL(TItsFacility*, pObj, ItsFacilityManager->FLists)
  324. {
  325. if (pObj->Completed && pObj->EditMode != DB_INIT)
  326. return true;
  327. if (!pObj->Completed && pObj->EditMode == DB_NEW)
  328. return true;
  329. }
  330. }
  331. __finally
  332. {
  333. ItsFacilityManager->FLists.UnLock();
  334. }
  335. return false;
  336. }
  337. //---------------------------------------------------------------------------
  338. void __fastcall TIFM0010M::SaveData()
  339. {
  340. if (!IsUpdate()) return;
  341. if (!FUpdate)
  342. {
  343. if (Application->MessageBox(FrmLang->lblEidtConfirm->Caption.c_str(),//L"변경된 정보가 있습니다.\r\n변경된 정보를 저장 하시겠습니까?",
  344. FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  345. }
  346. TADOQuery *pADOU = NULL;
  347. TADOQuery *pADOD = NULL;
  348. String sQryU;
  349. String sQryD;
  350. int nEditMode;
  351. try
  352. {
  353. sQryU = "UPDATE TB_FCLT_INFR \r\n"
  354. " SET RFID_ID = :p02, \r\n"
  355. // " FCLT_TYPE = :p03, \r\n"
  356. " FCLT_LCTN = :p04, \r\n"
  357. " RSCE_YN = :p05, \r\n"
  358. " MDL_NM = :p06, \r\n"
  359. " USE_YEAR = :p07, \r\n"
  360. " INWR_DT = :p08, \r\n"
  361. " OTWR_DT = :p09, \r\n"
  362. " ISTL_DT = :p10, \r\n"
  363. " TAKT_DT = :p11, \r\n"
  364. " TAKT_RESN = :p12, \r\n"
  365. " TAKN_DT = :p13, \r\n"
  366. " ABDN_DT = :p14, \r\n"
  367. // " ADTN_NM = :p15, \r\n"
  368. // " ADTN_DT = :p16, \r\n"
  369. " CHNG_NM = :p17, \r\n"
  370. " CHNG_DT = TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS'), \r\n"
  371. " AMT = :p18, \r\n"
  372. // " DEL_YN = :p19, \r\n"
  373. " ISTL_CMPY_ID = :p20, \r\n"
  374. " MNFC_CMPY_ID = :p21, \r\n"
  375. " ISTL_LCTN_ADDR = :p22 \r\n"
  376. " WHERE FCLT_ID = :p01 \r\n";
  377. sQryD = "UPDATE TB_FCLT_INFR \r\n"
  378. " SET DEL_YN = 'Y', \r\n"
  379. " CHNG_NM = :p02, \r\n"
  380. " CHNG_DT = TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') \r\n"
  381. " WHERE FCLT_ID = :p01 \r\n";
  382. int nRow;
  383. FRAMEFacilityList1->TvList->BeginUpdate();
  384. try
  385. {
  386. pADOU = new TADOQuery(NULL);
  387. pADOU->Close();
  388. pADOU->Connection = ITSDb_GetConnection();
  389. pADOD = new TADOQuery(NULL);
  390. pADOD->Close();
  391. pADOD->Connection = ITSDb_GetConnection();
  392. ITSDb_SQLText(pADOU, sQryU);
  393. ITSDb_SQLText(pADOD, sQryD);
  394. ITSDb_GetConnection()->BeginTrans();
  395. try
  396. {
  397. ItsFacilityManager->FLists.Lock();
  398. FOR_STL(TItsFacility*, pObj, ItsFacilityManager->FLists)
  399. {
  400. if (pObj->GridIndex < 0) continue;
  401. if (pObj->Completed && pObj->EditMode == DB_INIT)
  402. continue;
  403. if (!pObj->Completed && pObj->EditMode != DB_NEW)
  404. continue;
  405. nRow = pObj->GridIndex;
  406. String FCLT_LCTN = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column05->Index]);
  407. String sRfId = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column03->Index]); // RFID_ID VARCHAR(50 BYTE) NOT NULL, '시설물 ID';
  408. String sRsceYn = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column06->Index]); // RSCE_YN CHAR(1 BYTE) DEFAULT 'N', '현장자산유무';
  409. String sModelNm = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column07->Index]); // MDL_NM VARCHAR(30 BYTE) '모델명';
  410. String sUseYear = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column08->Index]); // USE_YEAR NUMBER(3) '사용년수';
  411. String sTaktResn = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column13->Index]); // TAKT_RESN VARCHAR(100 BYTE) '반출사유';
  412. String sISTL_LCTN_ADDR = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column24->Index]);
  413. String sInwr = ""; // INWR_DT VARCHAR(14 BYTE) '입고일시';
  414. String sOtwr = ""; // OTWR_DT VARCHAR(14 BYTE) '출고일시';
  415. String sIstl = ""; // ISTL_DT VARCHAR(14 BYTE) '설치일시';
  416. String sTakt = ""; // TAKT_DT VARCHAR(14 BYTE) '반출일시';
  417. String sTakn = ""; // TAKN_DT VARCHAR(14 BYTE) '반입일시';
  418. String sAbdn = ""; // ABDN_DT VARCHAR(14 BYTE) '폐기일시';
  419. if (!VarIsNull(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column09->Index])) // INWR_DT VARCHAR(14 BYTE) '입고일시';
  420. {
  421. TDateTime dtTmp = m_pGDC1->Values[nRow][FRAMEFacilityList1->Column09->Index];
  422. sInwr = dtTmp.FormatString("YYYYMMDDHHNNSS");
  423. }
  424. if (!VarIsNull(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column10->Index])) // OTWR_DT VARCHAR(14 BYTE) '출고일시';
  425. {
  426. TDateTime dtTmp = m_pGDC1->Values[nRow][FRAMEFacilityList1->Column10->Index];
  427. sOtwr = dtTmp.FormatString("YYYYMMDDHHNNSS");
  428. }
  429. if (!VarIsNull(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column11->Index])) // ISTL_DT VARCHAR(14 BYTE) '설치일시';
  430. {
  431. TDateTime dtTmp = m_pGDC1->Values[nRow][FRAMEFacilityList1->Column11->Index];
  432. sIstl = dtTmp.FormatString("YYYYMMDDHHNNSS");
  433. }
  434. if (!VarIsNull(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column12->Index])) // TAKT_DT VARCHAR(14 BYTE) '반출일시';
  435. {
  436. TDateTime dtTmp = m_pGDC1->Values[nRow][FRAMEFacilityList1->Column12->Index];
  437. sTakt = dtTmp.FormatString("YYYYMMDDHHNNSS");
  438. }
  439. if (!VarIsNull(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column14->Index])) // TAKN_DT VARCHAR(14 BYTE) '반입일시';
  440. {
  441. TDateTime dtTmp = m_pGDC1->Values[nRow][FRAMEFacilityList1->Column14->Index];
  442. sTakn = dtTmp.FormatString("YYYYMMDDHHNNSS");
  443. }
  444. if (!VarIsNull(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column15->Index])) // ABDN_DT VARCHAR(14 BYTE) '폐기일시';
  445. {
  446. TDateTime dtTmp = m_pGDC1->Values[nRow][FRAMEFacilityList1->Column15->Index];
  447. sAbdn = dtTmp.FormatString("YYYYMMDDHHNNSS");
  448. }
  449. String sAmt = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column20->Index]); // AMT NUMBER(15), '금액';
  450. String sInsCmpId = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column22->Index]); // ISTL_CMPY_ID VARCHAR(30 BYTE) '설치업체ID';
  451. String sPrcCmpId = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column23->Index]); // PRDC_CMPY_ID VARCHAR(30 BYTE) '제조업체ID';
  452. sInsCmpId = ITSUtil_GetCode(sInsCmpId);
  453. sPrcCmpId = ITSUtil_GetCode(sPrcCmpId);
  454. //pObj->FFCLT_ID = pADO->FieldByName("FCLT_ID")->AsString;
  455. pObj->RFID_ID = sRfId;
  456. //pObj->FFCLT_TYPE = pADO->FieldByName("FCLT_TYPE")->AsString;
  457. pObj->FCLT_LCTN = FCLT_LCTN;
  458. pObj->RSCE_YN = sRsceYn;
  459. pObj->MDL_NM = sModelNm;
  460. pObj->USE_YEAR = sUseYear;
  461. pObj->INWR_DT = sInwr;
  462. pObj->OTWR_DT = sOtwr;
  463. pObj->ISTL_DT = sIstl;
  464. pObj->TAKT_DT = sTakt;
  465. pObj->TAKT_RESN = sTaktResn;
  466. pObj->TAKN_DT = sTakn;
  467. pObj->ABDN_DT = sAbdn;
  468. //pObj->ADTN_NM = pADO->FieldByName("ADTN_NM")->AsString;
  469. //pObj->ADTN_DT = pADO->FieldByName("ADTN_DT")->AsString;
  470. pObj->CHNG_NM = g_pLOGIN->sUserId;
  471. pObj->CHNG_DT = Now().FormatString("YYYYMMDDHHNNSS");
  472. pObj->AMT = sAmt;
  473. //pObj->FDEL_YN = pADO->FieldByName("DEL_YN")->AsString;
  474. pObj->ISTL_CMPY_ID = sInsCmpId;
  475. pObj->MNFC_CMPY_ID = sPrcCmpId;
  476. pObj->ISTL_LCTN_ADDR = sISTL_LCTN_ADDR;
  477. nEditMode = pObj->EditMode;
  478. if (pObj->Completed)
  479. {
  480. if (pObj->EditMode == DB_DELETE)
  481. {
  482. //delete
  483. ITSDb_SQLBind(pADOD, "p01", pObj->FCLT_ID);
  484. ITSDb_SQLBind(pADOD, "p02", g_pLOGIN->sUserId);
  485. ITSDb_SQLExec(pADOD);
  486. pObj->DEL_YN = "Y";
  487. }
  488. else
  489. if (pObj->EditMode == DB_UPDATE)
  490. {
  491. //update
  492. ITSDb_SQLBind(pADOU, "p01", pObj->FCLT_ID);
  493. ITSDb_SQLBind(pADOU, "p02", pObj->RFID_ID);
  494. //ITSDb_SQLBind(pADOU, "p03", pObj->FCLT_TYPE);
  495. ITSDb_SQLBind(pADOU, "p04", pObj->FCLT_LCTN);
  496. ITSDb_SQLBind(pADOU, "p05", pObj->RSCE_YN);
  497. ITSDb_SQLBind(pADOU, "p06", pObj->MDL_NM);
  498. ITSDb_SQLBind(pADOU, "p07", pObj->USE_YEAR);
  499. ITSDb_SQLBind(pADOU, "p08", pObj->INWR_DT);
  500. ITSDb_SQLBind(pADOU, "p09", pObj->OTWR_DT);
  501. ITSDb_SQLBind(pADOU, "p10", pObj->ISTL_DT);
  502. ITSDb_SQLBind(pADOU, "p11", pObj->TAKT_DT);
  503. ITSDb_SQLBind(pADOU, "p12", pObj->TAKT_RESN);
  504. ITSDb_SQLBind(pADOU, "p13", pObj->TAKN_DT);
  505. ITSDb_SQLBind(pADOU, "p14", pObj->ABDN_DT);
  506. //ITSDb_SQLBind(pADOU, "p15", pObj->ADTN_NM);
  507. //ITSDb_SQLBind(pADOU, "p16", pObj->ADTN_DT);
  508. ITSDb_SQLBind(pADOU, "p17", g_pLOGIN->sUserId);
  509. ITSDb_SQLBind(pADOU, "p18", pObj->AMT);
  510. //ITSDb_SQLBind(pADOU, "p19", pObj->DEL_YN);
  511. ITSDb_SQLBind(pADOU, "p20", pObj->ISTL_CMPY_ID);
  512. ITSDb_SQLBind(pADOU, "p21", pObj->MNFC_CMPY_ID);
  513. ITSDb_SQLBind(pADOU, "p22", pObj->ISTL_LCTN_ADDR);
  514. ITSDb_SQLExec(pADOU);
  515. pObj->DEL_YN = "N";
  516. }
  517. }
  518. pObj->Completed = true;
  519. }
  520. }
  521. __finally
  522. {
  523. ItsFacilityManager->FLists.UnLock();
  524. }
  525. ITSDb_GetConnection()->CommitTrans();
  526. FDbUpdate = true;
  527. Application->MessageBox(cxLabel4->Caption.c_str(), //L"변경된 시설물 정보를 저장 하였습니다.",
  528. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  529. }
  530. catch(EDatabaseError &E)
  531. {
  532. ITSDb_GetConnection()->RollbackTrans();
  533. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  534. if (nEditMode == DB_DELETE)
  535. DBERRORMSG(Caption, String(E.ClassName()), E.Message, sQryD);
  536. else
  537. if (nEditMode == DB_UPDATE)
  538. DBERRORMSG(Caption, String(E.ClassName()), E.Message, sQryU);
  539. throw Exception(String(E.ClassName()) + E.Message);
  540. }
  541. catch(Exception &e)
  542. {
  543. ITSDb_GetConnection()->RollbackTrans();
  544. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  545. if (nEditMode == DB_DELETE)
  546. DBERRORMSG(Caption, String(e.ClassName()), e.Message, sQryD);
  547. else
  548. if (nEditMode == DB_UPDATE)
  549. DBERRORMSG(Caption, String(e.ClassName()), e.Message, sQryU);
  550. throw Exception(String(e.ClassName()) + e.Message);
  551. }
  552. }
  553. __finally
  554. {
  555. if (pADOU)
  556. {
  557. pADOU->Close();
  558. delete pADOU;
  559. }
  560. if (pADOD)
  561. {
  562. pADOD->Close();
  563. delete pADOD;
  564. }
  565. FRAMEFacilityList1->TvList->EndUpdate();
  566. }
  567. ItsFacilityManager->LoadFromDb();
  568. }
  569. //---------------------------------------------------------------------------
  570. void __fastcall TIFM0010M::FormCloseQuery(TObject *Sender, bool &CanClose)
  571. {
  572. SaveData();
  573. if (FDbUpdate)
  574. {
  575. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_03, 0);
  576. }
  577. if (ItsCompanyManager)
  578. {
  579. ItsCompanyManager->FLists.RemoveAll();
  580. //delete ItsCompanyManager;
  581. //ItsCompanyManager = NULL;
  582. }
  583. }
  584. //---------------------------------------------------------------------------
  585. void __fastcall TIFM0010M::FRAMEFacilityList1ColumnPropertiesValidate(TObject *Sender, Variant &DisplayValue, TCaption &ErrorText,
  586. bool &Error)
  587. {
  588. if (FRAMEFacilityList1->TvList->Controller->FocusedRow->IsFilterRow) return;
  589. int nIndex = m_pGDC1->FocusedRecordIndex;
  590. if (nIndex < 0) return;
  591. int nMemPtr = FRAMEFacilityList1->TvList->DataController->Values[nIndex][FRAMEFacilityList1->Column99->Index];
  592. TItsFacility *pObj = (TItsFacility*)nMemPtr;
  593. if (pObj->Completed == false)
  594. {
  595. //신규이거나 삭제인 경우 편집 내용에 따른 변화가 필요없다.
  596. return;
  597. }
  598. String FCLT_LCTN = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column05->Index]); // RFID_ID VARCHAR(50 BYTE) NOT NULL, '시설물 ID';
  599. String sRfId = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column03->Index]); // RFID_ID VARCHAR(50 BYTE) NOT NULL, '시설물 ID';
  600. String sRsceYn = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column06->Index]); // RSCE_YN CHAR(1 BYTE) DEFAULT 'N', '현장자산유무';
  601. String sModelNm = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column07->Index]); // MDL_NM VARCHAR(30 BYTE) '모델명';
  602. String sUseYear = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column08->Index]); // USE_YEAR NUMBER(3) '사용년수';
  603. String sTaktResn = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column13->Index]); // TAKT_RESN VARCHAR(100 BYTE) '반출사유';
  604. String sISTL_LCTN_ADDR = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column24->Index]);
  605. String sInwr = ""; // INWR_DT VARCHAR(14 BYTE) '입고일시';
  606. String sOtwr = ""; // OTWR_DT VARCHAR(14 BYTE) '출고일시';
  607. String sIstl = ""; // ISTL_DT VARCHAR(14 BYTE) '설치일시';
  608. String sTakt = ""; // TAKT_DT VARCHAR(14 BYTE) '반출일시';
  609. String sTakn = ""; // TAKN_DT VARCHAR(14 BYTE) '반입일시';
  610. String sAbdn = ""; // ABDN_DT VARCHAR(14 BYTE) '폐기일시';
  611. if (!VarIsNull(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column09->Index])) // INWR_DT VARCHAR(14 BYTE) '입고일시';
  612. {
  613. TDateTime dtTmp = m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column09->Index];
  614. sInwr = dtTmp.FormatString("YYYYMMDDHHNNSS");
  615. }
  616. if (!VarIsNull(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column10->Index])) // OTWR_DT VARCHAR(14 BYTE) '출고일시';
  617. {
  618. TDateTime dtTmp = m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column10->Index];
  619. sOtwr = dtTmp.FormatString("YYYYMMDDHHNNSS");
  620. }
  621. if (!VarIsNull(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column11->Index])) // ISTL_DT VARCHAR(14 BYTE) '설치일시';
  622. {
  623. TDateTime dtTmp = m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column11->Index];
  624. sIstl = dtTmp.FormatString("YYYYMMDDHHNNSS");
  625. }
  626. if (!VarIsNull(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column12->Index])) // TAKT_DT VARCHAR(14 BYTE) '반출일시';
  627. {
  628. TDateTime dtTmp = m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column12->Index];
  629. sTakt = dtTmp.FormatString("YYYYMMDDHHNNSS");
  630. }
  631. if (!VarIsNull(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column14->Index])) // TAKN_DT VARCHAR(14 BYTE) '반입일시';
  632. {
  633. TDateTime dtTmp = m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column14->Index];
  634. sTakn = dtTmp.FormatString("YYYYMMDDHHNNSS");
  635. }
  636. if (!VarIsNull(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column15->Index])) // ABDN_DT VARCHAR(14 BYTE) '폐기일시';
  637. {
  638. TDateTime dtTmp = m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column15->Index];
  639. sAbdn = dtTmp.FormatString("YYYYMMDDHHNNSS");
  640. }
  641. String sAmt = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column20->Index]); // AMT NUMBER(15), '금액';
  642. String sInsCmpId = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column22->Index]); // ISTL_CMPY_ID VARCHAR(30 BYTE) '설치업체ID';
  643. String sPrcCmpId = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column23->Index]); // PRDC_CMPY_ID VARCHAR(30 BYTE) '제조업체ID';
  644. TcxGridColumn *pColumn = FRAMEFacilityList1->TvList->Controller->FocusedColumn;
  645. if (pColumn == FRAMEFacilityList1->Column05)
  646. FCLT_LCTN = DisplayValue;
  647. else
  648. if (pColumn == FRAMEFacilityList1->Column03)
  649. sRfId = DisplayValue;
  650. else
  651. if (pColumn == FRAMEFacilityList1->Column06)
  652. sRsceYn = DisplayValue;
  653. else
  654. if (pColumn == FRAMEFacilityList1->Column07)
  655. sModelNm = DisplayValue;
  656. else
  657. if (pColumn == FRAMEFacilityList1->Column08)
  658. sUseYear= DisplayValue;
  659. else
  660. if (pColumn == FRAMEFacilityList1->Column09)
  661. {
  662. TDateTime dtTmp = DisplayValue;
  663. sInwr = dtTmp.FormatString("YYYYMMDDHHNNSS");
  664. }
  665. else
  666. if (pColumn == FRAMEFacilityList1->Column10)
  667. {
  668. TDateTime dtTmp = DisplayValue;
  669. sOtwr = dtTmp.FormatString("YYYYMMDDHHNNSS");
  670. }
  671. else
  672. if (pColumn == FRAMEFacilityList1->Column11)
  673. {
  674. TDateTime dtTmp = DisplayValue;
  675. sIstl = dtTmp.FormatString("YYYYMMDDHHNNSS");
  676. }
  677. else
  678. if (pColumn == FRAMEFacilityList1->Column12)
  679. {
  680. TDateTime dtTmp = DisplayValue;
  681. sTakt = dtTmp.FormatString("YYYYMMDDHHNNSS");
  682. }
  683. else
  684. if (pColumn == FRAMEFacilityList1->Column13)
  685. {
  686. sTaktResn = DisplayValue;
  687. }
  688. else
  689. if (pColumn == FRAMEFacilityList1->Column14)
  690. {
  691. TDateTime dtTmp = DisplayValue;
  692. sTakn = dtTmp.FormatString("YYYYMMDDHHNNSS");
  693. }
  694. else
  695. if (pColumn == FRAMEFacilityList1->Column15)
  696. {
  697. TDateTime dtTmp = DisplayValue;
  698. sAbdn = dtTmp.FormatString("YYYYMMDDHHNNSS");
  699. }
  700. else
  701. if (pColumn == FRAMEFacilityList1->Column20)
  702. sAmt = DisplayValue;
  703. else
  704. if (pColumn == FRAMEFacilityList1->Column22)
  705. {
  706. sInsCmpId = DisplayValue;
  707. }
  708. else
  709. if (pColumn == FRAMEFacilityList1->Column23)
  710. {
  711. sPrcCmpId = DisplayValue;
  712. }
  713. else
  714. if (pColumn == FRAMEFacilityList1->Column24)
  715. {
  716. sISTL_LCTN_ADDR = DisplayValue;
  717. }
  718. sInsCmpId = ITSUtil_GetCode(sInsCmpId); //마지막에 해준다.
  719. sPrcCmpId = ITSUtil_GetCode(sPrcCmpId); //마지막에 해준다.
  720. if (pObj->FCLT_LCTN != FCLT_LCTN ||
  721. pObj->RFID_ID != sRfId ||
  722. pObj->RSCE_YN != sRsceYn ||
  723. pObj->MDL_NM != sModelNm ||
  724. pObj->USE_YEAR != sUseYear ||
  725. pObj->INWR_DT != sInwr ||
  726. pObj->OTWR_DT != sOtwr ||
  727. pObj->ISTL_DT != sIstl ||
  728. pObj->TAKT_DT != sTakt ||
  729. pObj->TAKT_RESN != sTaktResn ||
  730. pObj->TAKN_DT != sTakn ||
  731. pObj->ABDN_DT != sAbdn ||
  732. pObj->AMT != sAmt ||
  733. pObj->ISTL_CMPY_ID != sInsCmpId ||
  734. pObj->ISTL_LCTN_ADDR != sISTL_LCTN_ADDR ||
  735. pObj->MNFC_CMPY_ID != sPrcCmpId )
  736. {
  737. m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column01->Index] = FrmLang->lblModify->Caption;//"수정";
  738. pObj->EditMode = DB_UPDATE;
  739. }
  740. else
  741. {
  742. m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column01->Index] = "-";
  743. pObj->EditMode = DB_INIT;
  744. }
  745. }
  746. //---------------------------------------------------------------------------