IDB0110MF.cpp 25 KB

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