IFM0020MF.cpp 26 KB

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