IDB0100MF.cpp 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790
  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 "ITSLangTransF.h"
  9. #pragma hdrstop
  10. #include "IDB0100MF.h"
  11. //---------------------------------------------------------------------------
  12. #pragma package(smart_init)
  13. #pragma link "cxButtons"
  14. #pragma link "cxCalc"
  15. #pragma link "cxCheckBox"
  16. #pragma link "cxClasses"
  17. #pragma link "cxContainer"
  18. #pragma link "cxControls"
  19. #pragma link "cxCustomData"
  20. #pragma link "cxData"
  21. #pragma link "cxDataStorage"
  22. #pragma link "cxDropDownEdit"
  23. #pragma link "cxEdit"
  24. #pragma link "cxFilter"
  25. #pragma link "cxGraphics"
  26. #pragma link "cxGrid"
  27. #pragma link "cxGridCustomTableView"
  28. #pragma link "cxGridCustomView"
  29. #pragma link "cxGridLevel"
  30. #pragma link "cxGridTableView"
  31. #pragma link "cxLabel"
  32. #pragma link "cxLookAndFeelPainters"
  33. #pragma link "cxLookAndFeels"
  34. #pragma link "cxSpinEdit"
  35. #pragma link "cxStyles"
  36. #pragma link "cxTextEdit"
  37. #pragma link "dxSkinBlack"
  38. #pragma link "dxSkinBlue"
  39. #pragma link "dxSkinsCore"
  40. #pragma link "dxSkinscxPCPainter"
  41. #pragma resource "*.dfm"
  42. TIDB0100M *IDB0100M = NULL;
  43. //---------------------------------------------------------------------------
  44. __fastcall TIDB0100M::TIDB0100M(TComponent* Owner)
  45. : TForm(Owner)
  46. {
  47. LangTrans->Translate(this, ITSDb_GetConnection());
  48. ITSSkin_Load(this);
  49. CMM_LoadForm(g_sFormsDir, this);
  50. FTitle = Caption;//"프로세스정보관리";
  51. FDbUpdate = false;
  52. MyItsProcessManager = new TItsProcessManager();
  53. }
  54. //---------------------------------------------------------------------------
  55. /*
  56. * 닫기버튼 이나 x버튼 클릭시 공통으로 처리하는 로직이들어간다..
  57. * Form과 DataModule class를 delete시킨다.
  58. * arguments
  59. *
  60. * return
  61. * void
  62. */
  63. void __fastcall TIDB0100M::CommClose()
  64. {
  65. try
  66. {
  67. if (MyItsProcessManager)
  68. {
  69. delete MyItsProcessManager;
  70. MyItsProcessManager = NULL;
  71. }
  72. CMM_SaveForm(g_sFormsDir, this);
  73. }
  74. catch(...)
  75. {
  76. }
  77. }
  78. //---------------------------------------------------------------------------
  79. /*
  80. * Form을 보여줄때 호출되는 event 메서드이다.
  81. * arguments
  82. * Sender : event handler 객체
  83. * return
  84. * void
  85. */
  86. void __fastcall TIDB0100M::FormShow(TObject *Sender)
  87. {
  88. Refresh();
  89. FormInit();
  90. TmrShow->Enabled = true;
  91. }
  92. //---------------------------------------------------------------------------
  93. /*
  94. * form 초기화
  95. *
  96. * arguments
  97. *
  98. * return
  99. * void
  100. */
  101. void __fastcall TIDB0100M::FormInit()
  102. {
  103. m_pGDC = TvList->DataController;
  104. TvList->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoInfo->Caption;//"<현재 등록된 프로세스 정보가 없습니다>";
  105. //상태표출유무
  106. TcxComboBoxProperties *pcxCboProperties10 = (TcxComboBoxProperties*)Column10->Properties;
  107. pcxCboProperties10->Items->Clear();
  108. pcxCboProperties10->Items->Add("Y");
  109. pcxCboProperties10->Items->Add("N");
  110. }
  111. //---------------------------------------------------------------------------
  112. /*
  113. * Form이 Show되고 난 후 최초 1회 수행되는 타이머 이벤트
  114. * arguments
  115. * Sender : event handler 객체
  116. * return
  117. * void
  118. */
  119. void __fastcall TIDB0100M::TmrShowTimer(TObject *Sender)
  120. {
  121. TmrShow->Enabled = false;
  122. BtnSearchClick((TObject*)BtnSearch);
  123. }
  124. //---------------------------------------------------------------------------
  125. /*
  126. * Search 버튼 클릭 이벤트 핸들러
  127. * arguments
  128. * Sender : event handler 객체
  129. * return
  130. * void
  131. */
  132. void __fastcall TIDB0100M::BtnSearchClick(TObject *Sender)
  133. {
  134. Application->ProcessMessages();
  135. TSqlCursor sqlCrs((TControl*)BtnSearch);
  136. RefreshData();
  137. CxList->SetFocus();
  138. }
  139. //---------------------------------------------------------------------------
  140. /*
  141. * Refresh Data Event Function
  142. * arguments
  143. *
  144. * return
  145. * void
  146. */
  147. void __fastcall TIDB0100M::RefreshData()
  148. {
  149. MyItsProcessManager->LoadFromDb();
  150. SelListData();
  151. }
  152. //---------------------------------------------------------------------------
  153. void __fastcall TIDB0100M::SelListData()
  154. {
  155. FUpdate = false;
  156. CMM_ClearGridTableView(TvList);
  157. try
  158. {
  159. TvList->BeginUpdate();
  160. FOR_STL(TItsProcess*, pObj, MyItsProcessManager->FLists)
  161. {
  162. pObj->EditMode = DB_INIT; // 미리초기화해준다.(삭제된것)
  163. pObj->Completed = true;
  164. if (pObj->DEL_YN == "Y" || pObj->MEM_DEL == "Y") continue;
  165. AddObjectItem(pObj, "-");
  166. }
  167. }
  168. __finally
  169. {
  170. LblRecords->Caption = "("+FormatFloat("##,##0", m_pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", m_pGDC->RecordCount) + ")";
  171. TvList->EndUpdate();
  172. TvList->DataController->GotoFirst();
  173. TvList->DataController->FocusedRecordIndex = 0;
  174. //CxList->SetFocus();
  175. }
  176. }
  177. //---------------------------------------------------------------------------
  178. /*
  179. * Close 버튼 클릭 이벤트 핸들러
  180. * arguments
  181. * Sender : event handler 객체
  182. * return
  183. * void
  184. */
  185. void __fastcall TIDB0100M::BtnCloseClick(TObject *Sender)
  186. {
  187. Close();
  188. }
  189. //---------------------------------------------------------------------------
  190. /*
  191. * 저장 버튼 클릭 이벤트 핸들러
  192. * arguments
  193. * Sender : event handler 객체
  194. * return
  195. * void
  196. */
  197. void __fastcall TIDB0100M::BtnExlSaveClick(TObject *Sender)
  198. {
  199. TcxGrid *pGrid = CxList;
  200. TcxGridTableView *pView = TvList;
  201. String sTitle= Caption;//"프로세스정보";
  202. CMM_ExportToExcelFile(sTitle, pGrid, pView, this);
  203. }
  204. //---------------------------------------------------------------------------
  205. /*
  206. * 등록 버튼 클릭 이벤트 핸들러
  207. * arguments
  208. * Sender : event handler 객체
  209. * return
  210. * void
  211. */
  212. void __fastcall TIDB0100M::BtnInsertClick(TObject *Sender)
  213. {
  214. int nMsgType = MB_OK|MB_ICONERROR|MB_APPLMODAL;
  215. String sId = InputBox(lblInput->Caption,//"프로세스 ID",
  216. lblInQry->Caption,//"신규 프로세스 ID를 입력하세요.",
  217. lblInput->Caption);//"최대30자리" );
  218. sId = sId.Trim();
  219. if (sId == lblInput->Caption //"프로세스 ID"
  220. || sId == "")
  221. {
  222. return;
  223. }
  224. if (AnsiString(sId).Length() > 30)
  225. {
  226. Application->MessageBox(lblDigitErr->Caption.c_str(),//L"프로세스 ID는 20Byte를 초과할 수 없습니다.",
  227. FTitle.c_str(),
  228. nMsgType);
  229. return;
  230. }
  231. TItsProcess *pDb = (TItsProcess *)MyItsProcessManager->FLists.Find(sId);
  232. if (pDb)
  233. {
  234. String sErr = FrmLang->lbIdErr->Caption + "[" + sId + "]";
  235. Application->MessageBox(sErr.c_str(),//("[" + sId + "]는 사용할 수 없는 프로세스 ID 입니다.").c_str(),
  236. FTitle.c_str(), nMsgType);
  237. return;
  238. }
  239. try
  240. {
  241. TvList->BeginUpdate();
  242. TItsProcess *pObj = new TItsProcess();
  243. if (!pObj)
  244. {
  245. Application->MessageBox(FrmLang->lblMemErr->Caption.c_str(),//L"신규 프로세스 정보를 생성할 수 없습니다.[메모리오류]",
  246. FTitle.c_str(), nMsgType);
  247. return;
  248. }
  249. //pObj->Clear();
  250. pObj->SYST_ID = sId;
  251. pObj->SYST_TYPE = "";
  252. pObj->SYST_NMBR = "0";
  253. pObj->SYST_NM = "";
  254. pObj->SYST_IP_1 = "";
  255. pObj->SYST_IP_2 = "";
  256. pObj->PRGM_PORT = "";
  257. pObj->HOST_NM = "";
  258. pObj->OS_NM = "";
  259. pObj->DEL_YN = "N";
  260. pObj->STTS_DSPL_YN = "N";
  261. pObj->Completed = false;
  262. pObj->EditMode = DB_NEW;
  263. pObj->MEM_DEL = "N";
  264. MyItsProcessManager->FLists.Push(pObj->SYST_ID, pObj);
  265. AddObjectItem(pObj, FrmLang->lblNew->Caption);//"신규");
  266. }
  267. __finally
  268. {
  269. LblRecords->Caption = "("+FormatFloat("##,##0", m_pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", m_pGDC->RecordCount) + ")";
  270. TvList->EndUpdate();
  271. TvList->DataController->GotoFirst();
  272. TvList->DataController->FocusedRecordIndex = 0;
  273. }
  274. }
  275. //---------------------------------------------------------------------------
  276. /*
  277. * 삭제 버튼 클릭 이벤트 핸들러
  278. * arguments
  279. * Sender : event handler 객체
  280. * return
  281. * void
  282. */
  283. void __fastcall TIDB0100M::BtnDeleteClick(TObject *Sender)
  284. {
  285. int nIdx = m_pGDC->FocusedRecordIndex;
  286. if (nIdx < 0) return;
  287. int nMemPtr = m_pGDC->Values[nIdx][Column99->Index];
  288. TItsProcess *pObj = (TItsProcess*)nMemPtr;
  289. pObj->EditMode = DB_DELETE;
  290. m_pGDC->Values[nIdx][Column00->Index] = FrmLang->lblDelete->Caption;//"삭제";
  291. }
  292. //---------------------------------------------------------------------------
  293. void __fastcall TIDB0100M::FormClose(TObject *Sender, TCloseAction &Action)
  294. {
  295. CommClose();
  296. IDB0100M = NULL;
  297. Action = caFree;
  298. }
  299. //---------------------------------------------------------------------------
  300. void __fastcall TIDB0100M::BtnEditClick(TObject *Sender)
  301. {
  302. TListFocus tvFocus(TvList);
  303. if (BtnEdit->Caption == FrmLang->lblCancel->Caption)//"취소")
  304. {
  305. CxList->SetFocus();
  306. Application->ProcessMessages();
  307. SaveData();
  308. }
  309. FrmLang->ITSSkin_ButtonClick(BtnSearch, BtnEdit, BtnInsert, BtnDelete, BtnApply);
  310. ChangeEditMode(BtnEdit->Down);
  311. RefreshData();
  312. }
  313. //---------------------------------------------------------------------------
  314. void __fastcall TIDB0100M::ChangeEditMode(bool AEdit)
  315. {
  316. bool bEditing = AEdit;
  317. try
  318. {
  319. TvList->BeginUpdate();
  320. Column00->Visible = bEditing;
  321. Column02->Options->Editing = bEditing;
  322. Column03->Options->Editing = bEditing;
  323. Column04->Options->Editing = bEditing;
  324. Column05->Options->Editing = bEditing;
  325. Column06->Options->Editing = bEditing;
  326. Column07->Options->Editing = bEditing;
  327. Column08->Options->Editing = bEditing;
  328. Column09->Options->Editing = bEditing;
  329. Column10->Options->Editing = bEditing;
  330. }
  331. __finally
  332. {
  333. TvList->EndUpdate();
  334. if (bEditing)
  335. {
  336. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  337. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  338. }
  339. else
  340. {
  341. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  342. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  343. }
  344. }
  345. }
  346. //---------------------------------------------------------------------------
  347. void __fastcall TIDB0100M::TvListColumnPropertiesValidate(TObject *Sender, Variant &DisplayValue, TCaption &ErrorText, bool &Error)
  348. {
  349. if (TvList->Controller->FocusedRow->IsFilterRow) return;
  350. int nRow = m_pGDC->FocusedRecordIndex;
  351. if (nRow < 0) return;
  352. int nMemPtr = TvList->DataController->Values[nRow][Column99->Index];
  353. TItsProcess *pObj = (TItsProcess*)nMemPtr;
  354. if (pObj->Completed == false)
  355. {
  356. //신규이거나 삭제인 경우 편집 내용에 따른 변화가 필요없다.
  357. return;
  358. }
  359. String SYST_TYPE = VarToStr(m_pGDC->Values[nRow][Column02->Index]);
  360. String SYST_NMBR = VarToStr(m_pGDC->Values[nRow][Column03->Index]);
  361. String SYST_NM = VarToStr(m_pGDC->Values[nRow][Column04->Index]);
  362. String SYST_IP_1 = VarToStr(m_pGDC->Values[nRow][Column05->Index]);
  363. String SYST_IP_2 = VarToStr(m_pGDC->Values[nRow][Column06->Index]);
  364. String PRGM_PORT = VarToStr(m_pGDC->Values[nRow][Column07->Index]);
  365. String HOST_NM = VarToStr(m_pGDC->Values[nRow][Column08->Index]);
  366. String OS_NM = VarToStr(m_pGDC->Values[nRow][Column09->Index]);
  367. String STTS_DSPL_YN = VarToStr(m_pGDC->Values[nRow][Column10->Index]);
  368. TcxGridColumn *pColumn = TvList->Controller->FocusedColumn;
  369. if (pColumn == Column02) SYST_TYPE = DisplayValue;
  370. else if (pColumn == Column03) SYST_NMBR = DisplayValue;
  371. else if (pColumn == Column04) SYST_NM = DisplayValue;
  372. else if (pColumn == Column05) SYST_IP_1 = DisplayValue;
  373. else if (pColumn == Column06) SYST_IP_2 = DisplayValue;
  374. else if (pColumn == Column07) PRGM_PORT = DisplayValue;
  375. else if (pColumn == Column08) HOST_NM = DisplayValue;
  376. else if (pColumn == Column09) OS_NM = DisplayValue;
  377. else if (pColumn == Column10) STTS_DSPL_YN = DisplayValue;
  378. if (pObj->SYST_TYPE != SYST_TYPE ||
  379. pObj->SYST_NMBR != SYST_NMBR ||
  380. pObj->SYST_NM != SYST_NM ||
  381. pObj->SYST_IP_1 != SYST_IP_1 ||
  382. pObj->SYST_IP_2 != SYST_IP_2 ||
  383. pObj->PRGM_PORT != PRGM_PORT ||
  384. pObj->HOST_NM != HOST_NM ||
  385. pObj->STTS_DSPL_YN != STTS_DSPL_YN ||
  386. pObj->OS_NM != OS_NM )
  387. {
  388. m_pGDC->Values[nRow][Column00->Index] = FrmLang->lblModify->Caption;//"수정";
  389. pObj->EditMode = DB_UPDATE;
  390. }
  391. else
  392. {
  393. TvList->DataController->Values[nRow][Column00->Index] = "-";
  394. pObj->EditMode = DB_INIT;
  395. }
  396. }
  397. //---------------------------------------------------------------------------
  398. void __fastcall TIDB0100M::BtnBestFitClick(TObject *Sender)
  399. {
  400. try
  401. {
  402. TvList->BeginUpdate();
  403. TvList->ApplyBestFit(NULL, false, false);
  404. }
  405. __finally
  406. {
  407. TvList->EndUpdate();
  408. }
  409. }
  410. //---------------------------------------------------------------------------
  411. void __fastcall TIDB0100M::ChkAutoWidthPropertiesChange(TObject *Sender)
  412. {
  413. try
  414. {
  415. TvList->BeginUpdate();
  416. TvList->OptionsView->ColumnAutoWidth = ChkAutoWidth->Checked;
  417. BtnBestFit->Visible = !ChkAutoWidth->Checked;
  418. }
  419. __finally
  420. {
  421. TvList->EndUpdate();
  422. }
  423. }
  424. //---------------------------------------------------------------------------
  425. void __fastcall TIDB0100M::MnuDeleteCancelClick(TObject *Sender)
  426. {
  427. //
  428. }
  429. //---------------------------------------------------------------------------
  430. void __fastcall TIDB0100M::BtnApplyClick(TObject *Sender)
  431. {
  432. FUpdate = true;
  433. BtnEdit->Down = false;
  434. BtnEdit->Click();
  435. }
  436. //---------------------------------------------------------------------------
  437. bool __fastcall TIDB0100M::AddObjectItem(TItsProcess *pObj, String AMode)
  438. {
  439. int nRow;
  440. try
  441. {
  442. nRow = m_pGDC->AppendRecord();
  443. pObj->GridIndex = nRow;
  444. m_pGDC->Values[nRow][Column00->Index] = AMode;
  445. m_pGDC->Values[nRow][Column01->Index] = pObj->SYST_ID;
  446. m_pGDC->Values[nRow][Column02->Index] = pObj->SYST_TYPE;
  447. m_pGDC->Values[nRow][Column03->Index] = pObj->SYST_NMBR;
  448. m_pGDC->Values[nRow][Column04->Index] = pObj->SYST_NM;
  449. m_pGDC->Values[nRow][Column05->Index] = pObj->SYST_IP_1;
  450. m_pGDC->Values[nRow][Column06->Index] = pObj->SYST_IP_2;
  451. m_pGDC->Values[nRow][Column07->Index] = pObj->PRGM_PORT;
  452. m_pGDC->Values[nRow][Column08->Index] = pObj->HOST_NM;
  453. m_pGDC->Values[nRow][Column09->Index] = pObj->OS_NM;
  454. if(pObj->STTS_DSPL_YN.IsEmpty())
  455. m_pGDC->Values[nRow][Column10->Index] = "N";
  456. else
  457. m_pGDC->Values[nRow][Column10->Index] = pObj->STTS_DSPL_YN;
  458. m_pGDC->Values[nRow][Column88->Index] = pObj->DEL_YN;
  459. m_pGDC->Values[nRow][Column99->Index] = (int)pObj;
  460. return true;
  461. }
  462. catch(...)
  463. {
  464. }
  465. return false;
  466. }
  467. //---------------------------------------------------------------------------
  468. bool __fastcall TIDB0100M::IsUpdate()
  469. {
  470. FOR_STL(TItsProcess*, pObj, MyItsProcessManager->FLists)
  471. {
  472. if (pObj->Completed && pObj->EditMode != DB_INIT)
  473. return true;
  474. if (!pObj->Completed && pObj->EditMode == DB_NEW)
  475. return true;
  476. }
  477. return false;
  478. }
  479. //---------------------------------------------------------------------------
  480. void __fastcall TIDB0100M::SaveData()
  481. {
  482. if (!IsUpdate()) return;
  483. if (!FUpdate)
  484. {
  485. if (Application->MessageBox(FrmLang->lblEidtConfirm->Caption.c_str(),//L"변경된 정보가 있습니다.\r\n변경된 정보를 저장 하시겠습니까?",
  486. FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  487. }
  488. TADOQuery *pADOI = NULL;
  489. TADOQuery *pADOU = NULL;
  490. TADOQuery *pADOD = NULL;
  491. String sQryI;
  492. String sQryU;
  493. String sQryD;
  494. try
  495. {
  496. sQryI = "INSERT INTO TB_UNIT_SYST ( \r\n"
  497. " SYST_ID, SYST_TYPE, SYST_NMBR, \r\n"
  498. " SYST_NM, SYST_IP_1, SYST_IP_2, \r\n"
  499. " PRGM_PORT, HOST_NM, OS_NM, \r\n"
  500. " STTS_DSPL_YN, DEL_YN) \r\n"
  501. " VALUES ( \r\n"
  502. " :p01, :p02, :p03, \r\n"
  503. " :p04, :p05, :p06, \r\n"
  504. " :p07, :p08, :p09, \r\n"
  505. " :p10, 'N' ) \r\n";
  506. sQryU = "UPDATE TB_UNIT_SYST \r\n"
  507. " SET SYST_TYPE = :p02, \r\n"
  508. " SYST_NMBR = :p03, \r\n"
  509. " SYST_NM = :p04, \r\n"
  510. " SYST_IP_1 = :p05, \r\n"
  511. " SYST_IP_2 = :p06, \r\n"
  512. " PRGM_PORT = :p07, \r\n"
  513. " HOST_NM = :p08, \r\n"
  514. " OS_NM = :p09, \r\n"
  515. " STTS_DSPL_YN = :p10 \r\n"
  516. // " DEL_YN = :p10 \r\n"
  517. " WHERE SYST_ID = :p01 \r\n";
  518. sQryD = "UPDATE TB_UNIT_SYST \r\n"
  519. " SET DEL_YN = 'Y' \r\n"
  520. " WHERE SYST_ID = :p01 \r\n";
  521. int nRow;
  522. TvList->BeginUpdate();
  523. try
  524. {
  525. pADOI = new TADOQuery(NULL);
  526. pADOI->Close();
  527. pADOI->Connection = ITSDb_GetConnection();
  528. pADOU = new TADOQuery(NULL);
  529. pADOU->Close();
  530. pADOU->Connection = ITSDb_GetConnection();
  531. pADOD = new TADOQuery(NULL);
  532. pADOD->Close();
  533. pADOD->Connection = ITSDb_GetConnection();
  534. ITSDb_SQLText(pADOI, sQryI);
  535. ITSDb_SQLText(pADOU, sQryU);
  536. ITSDb_SQLText(pADOD, sQryD);
  537. ITSDb_GetConnection()->BeginTrans();
  538. FOR_STL(TItsProcess*, pObj, MyItsProcessManager->FLists)
  539. {
  540. if (pObj->GridIndex < 0) continue;
  541. if (pObj->Completed && pObj->EditMode == DB_INIT)
  542. continue;
  543. if (!pObj->Completed && pObj->EditMode != DB_NEW)
  544. continue;
  545. nRow = pObj->GridIndex;
  546. String SYST_TYPE = VarToStr(m_pGDC->Values[nRow][Column02->Index]);
  547. String SYST_NMBR = VarToStr(m_pGDC->Values[nRow][Column03->Index]);
  548. String SYST_NM = VarToStr(m_pGDC->Values[nRow][Column04->Index]);
  549. String SYST_IP_1 = VarToStr(m_pGDC->Values[nRow][Column05->Index]);
  550. String SYST_IP_2 = VarToStr(m_pGDC->Values[nRow][Column06->Index]);
  551. String PRGM_PORT = VarToStr(m_pGDC->Values[nRow][Column07->Index]);
  552. String HOST_NM = VarToStr(m_pGDC->Values[nRow][Column08->Index]);
  553. String OS_NM = VarToStr(m_pGDC->Values[nRow][Column09->Index]);
  554. String STTS_DSPL_YN = VarToStr(m_pGDC->Values[nRow][Column10->Index]);
  555. //pObj->SYST_ID = pObj->SYST_ID;
  556. pObj->SYST_TYPE = SYST_TYPE;
  557. pObj->SYST_NMBR = SYST_NMBR;
  558. pObj->SYST_NM = SYST_NM;
  559. pObj->SYST_IP_1 = SYST_IP_1;
  560. pObj->SYST_IP_2 = SYST_IP_2;
  561. pObj->PRGM_PORT = PRGM_PORT;
  562. pObj->HOST_NM = HOST_NM;
  563. pObj->OS_NM = OS_NM;
  564. pObj->STTS_DSPL_YN = STTS_DSPL_YN;
  565. pObj->DEL_YN = pObj->DEL_YN;
  566. if (pObj->Completed)
  567. {
  568. if (pObj->EditMode == DB_DELETE)
  569. {
  570. //delete
  571. ITSDb_SQLBind(pADOD, "p01", pObj->SYST_ID);
  572. ITSDb_SQLExec(pADOD);
  573. pObj->DEL_YN = "Y";
  574. pObj->MEM_DEL = "Y";
  575. }
  576. else
  577. if (pObj->EditMode == DB_UPDATE)
  578. {
  579. //update
  580. ITSDb_SQLBind(pADOU, "p01", pObj->SYST_ID);
  581. ITSDb_SQLBind(pADOU, "p02", pObj->SYST_TYPE);
  582. ITSDb_SQLBind(pADOU, "p03", pObj->SYST_NMBR);
  583. ITSDb_SQLBind(pADOU, "p04", pObj->SYST_NM);
  584. ITSDb_SQLBind(pADOU, "p05", pObj->SYST_IP_1);
  585. ITSDb_SQLBind(pADOU, "p06", pObj->SYST_IP_2);
  586. ITSDb_SQLBind(pADOU, "p07", pObj->PRGM_PORT);
  587. ITSDb_SQLBind(pADOU, "p08", pObj->HOST_NM);
  588. ITSDb_SQLBind(pADOU, "p09", pObj->OS_NM);
  589. ITSDb_SQLBind(pADOU, "p10", pObj->STTS_DSPL_YN);
  590. //ITSDb_SQLBind(pADOU, "p11", pObj->DEL_YN);
  591. ITSDb_SQLExec(pADOU);
  592. pObj->DEL_YN = "N";
  593. pObj->MEM_DEL = "N";
  594. }
  595. }
  596. else
  597. {
  598. if (pObj->EditMode == DB_NEW)
  599. {
  600. //insert
  601. ITSDb_SQLBind(pADOI, "p01", pObj->SYST_ID);
  602. ITSDb_SQLBind(pADOI, "p02", pObj->SYST_TYPE);
  603. ITSDb_SQLBind(pADOI, "p03", pObj->SYST_NMBR);
  604. ITSDb_SQLBind(pADOI, "p04", pObj->SYST_NM);
  605. ITSDb_SQLBind(pADOI, "p05", pObj->SYST_IP_1);
  606. ITSDb_SQLBind(pADOI, "p06", pObj->SYST_IP_2);
  607. ITSDb_SQLBind(pADOI, "p07", pObj->PRGM_PORT);
  608. ITSDb_SQLBind(pADOI, "p08", pObj->HOST_NM);
  609. ITSDb_SQLBind(pADOI, "p09", pObj->OS_NM);
  610. ITSDb_SQLBind(pADOI, "p10", pObj->STTS_DSPL_YN);
  611. //ITSDb_SQLBind(pADOI, "p11", pObj->DEL_YN);
  612. ITSDb_SQLExec(pADOI);
  613. pObj->DEL_YN = "N";
  614. pObj->MEM_DEL = "N";
  615. }
  616. }
  617. pObj->Completed = true;
  618. }
  619. ITSDb_GetConnection()->CommitTrans();
  620. Application->MessageBox(FrmLang->lblDbSave->Caption.c_str(),//L"프로세스정보를 저장 하였습니다.",
  621. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  622. FDbUpdate = true;
  623. }
  624. catch(EDatabaseError &E)
  625. {
  626. ITSDb_GetConnection()->RollbackTrans();
  627. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  628. ShowMessage(String(E.ClassName()) + E.Message);
  629. }
  630. catch(Exception &exception)
  631. {
  632. ITSDb_GetConnection()->RollbackTrans();
  633. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  634. ShowMessage(String(exception.ClassName()) + exception.Message);
  635. }
  636. }
  637. __finally
  638. {
  639. if (pADOI)
  640. {
  641. pADOI->Close();
  642. delete pADOI;
  643. }
  644. if (pADOU)
  645. {
  646. pADOU->Close();
  647. delete pADOU;
  648. }
  649. if (pADOD)
  650. {
  651. pADOD->Close();
  652. delete pADOD;
  653. }
  654. TvList->EndUpdate();
  655. }
  656. }
  657. //---------------------------------------------------------------------------
  658. void __fastcall TIDB0100M::FormCloseQuery(TObject *Sender, bool &CanClose)
  659. {
  660. SaveData();
  661. if (FDbUpdate)
  662. {
  663. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_09, 0);
  664. }
  665. }
  666. //---------------------------------------------------------------------------
  667. void __fastcall TIDB0100M::TvListKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
  668. {
  669. if (Key == VK_DELETE)
  670. {
  671. if (BtnDelete->Enabled) BtnDeleteClick(Sender);
  672. }
  673. }
  674. //---------------------------------------------------------------------------
  675. void __fastcall TIDB0100M::TvListDataControllerFilterChanged(TObject *Sender)
  676. {
  677. CMM_SetFilterLike(TvList);
  678. LblRecords->Caption = "("+FormatFloat("##,##0", m_pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", m_pGDC->RecordCount) + ")";
  679. }
  680. //---------------------------------------------------------------------------
  681. void __fastcall TIDB0100M::TvListCustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  682. bool &ADone)
  683. {
  684. if (AViewInfo)
  685. {
  686. String sType = AViewInfo->GridRecord->DisplayTexts[Column00->Index];
  687. if (sType == FrmLang->lblModify->Caption)//"수정")
  688. {
  689. ACanvas->Brush->Color = clOlive;
  690. }
  691. else if (sType == FrmLang->lblDelete->Caption)//"삭제")
  692. {
  693. ACanvas->Brush->Color = clRed;
  694. }
  695. else if (sType == FrmLang->lblNew->Caption)//"신규")
  696. {
  697. ACanvas->Brush->Color = clLime;
  698. if (AViewInfo->Focused) ACanvas->Font->Color = clBlack;
  699. }
  700. }
  701. }
  702. //---------------------------------------------------------------------------