IFM0020MF.cpp 26 KB

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