SMS00301F.cpp 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. /****************************************************************************
  2. * @source :
  3. * @description :
  4. ****************************************************************************
  5. * DATE AUTHOR DESCRIPTION
  6. * --------------------------------------------------------------------------
  7. * 2011/12/24 정승호 최초작성
  8. *
  9. ****************************************************************************/
  10. //---------------------------------------------------------------------------
  11. #include <vcl.h>
  12. #include "ITSSkinF.h"
  13. #include "ITSUtilF.h"
  14. #include "ITSDbF.h"
  15. #include "AppGlobalF.h"
  16. #include "WindowMsgF.h"
  17. #pragma hdrstop
  18. #include "SMS00301F.h"
  19. //---------------------------------------------------------------------------
  20. #pragma package(smart_init)
  21. #pragma link "cxButtons"
  22. #pragma link "cxCalc"
  23. #pragma link "cxCheckBox"
  24. #pragma link "cxClasses"
  25. #pragma link "cxContainer"
  26. #pragma link "cxControls"
  27. #pragma link "cxCustomData"
  28. #pragma link "cxData"
  29. #pragma link "cxDataStorage"
  30. #pragma link "cxEdit"
  31. #pragma link "cxFilter"
  32. #pragma link "cxGraphics"
  33. #pragma link "cxGrid"
  34. #pragma link "cxGridCustomTableView"
  35. #pragma link "cxGridCustomView"
  36. #pragma link "cxGridLevel"
  37. #pragma link "cxGridTableView"
  38. #pragma link "cxLookAndFeelPainters"
  39. #pragma link "cxLookAndFeels"
  40. #pragma link "cxSplitter"
  41. #pragma link "cxStyles"
  42. #pragma link "cxTextEdit"
  43. #pragma link "dxSkinBlack"
  44. #pragma link "dxSkinBlue"
  45. #pragma link "dxSkinCaramel"
  46. #pragma link "dxSkinCoffee"
  47. #pragma link "dxSkinDarkRoom"
  48. #pragma link "dxSkinDarkSide"
  49. #pragma link "dxSkinFoggy"
  50. #pragma link "dxSkinGlassOceans"
  51. #pragma link "dxSkiniMaginary"
  52. #pragma link "dxSkinLilian"
  53. #pragma link "dxSkinLiquidSky"
  54. #pragma link "dxSkinLondonLiquidSky"
  55. #pragma link "dxSkinMcSkin"
  56. #pragma link "dxSkinMoneyTwins"
  57. #pragma link "dxSkinOffice2007Black"
  58. #pragma link "dxSkinOffice2007Blue"
  59. #pragma link "dxSkinOffice2007Green"
  60. #pragma link "dxSkinOffice2007Pink"
  61. #pragma link "dxSkinOffice2007Silver"
  62. #pragma link "dxSkinOffice2010Black"
  63. #pragma link "dxSkinOffice2010Blue"
  64. #pragma link "dxSkinOffice2010Silver"
  65. #pragma link "dxSkinsCore"
  66. #pragma link "dxSkinscxPCPainter"
  67. #pragma link "dxSkinSeven"
  68. #pragma link "dxSkinSharp"
  69. #pragma link "dxSkinSilver"
  70. #pragma link "dxSkinStardust"
  71. #pragma link "FRAME_ChartF"
  72. #pragma link "cxLabel"
  73. #pragma resource "*.dfm"
  74. TSMS00301 *SMS00301 = NULL;
  75. //---------------------------------------------------------------------------
  76. __fastcall TSMS00301::TSMS00301(TComponent* Owner, HWND hHandle, String sFrom, String sTo, String sIdList)
  77. : TForm(Owner)
  78. {
  79. ITSSkin_Load(this);
  80. CMM_LoadForm(g_sFormsDir, this);
  81. FParent = hHandle;
  82. FStDateTime = sFrom;
  83. FEdDateTime = sTo;
  84. FIdList = sIdList;
  85. }
  86. //---------------------------------------------------------------------------
  87. __fastcall TSMS00301::~TSMS00301(void)
  88. {
  89. }
  90. //--------------------------------------------------------------------------
  91. /*
  92. * form 초기화
  93. *
  94. * arguments
  95. *
  96. * return
  97. * void
  98. */
  99. void __fastcall TSMS00301::FormInit()
  100. {
  101. ADOQry->Connection = ITSDb_GetConnection();
  102. m_pGDC = TvList->DataController;
  103. TvList->OptionsView->NoDataToDisplayInfoText = "<SMS 발송 이력 정보>";
  104. //TvList->ViewInfo->GroupByBoxViewInfo->Text = "그룹핑할 필드의 헤더를 이곳으로 드래그 하세요";
  105. LblSearch->Caption = "검색조건: " + FStDateTime.SubString(1, 10) + " ~ " + FEdDateTime.SubString(1, 10);
  106. }
  107. //---------------------------------------------------------------------------
  108. /*
  109. * form을 보여줄때 호출되는 event 메서드이다.
  110. * arguments
  111. * Sender : event handler 객체
  112. * return
  113. * void
  114. */
  115. void __fastcall TSMS00301::FormShow(TObject *Sender)
  116. {
  117. FormInit();
  118. Refresh();
  119. TmrShow->Enabled = true;
  120. }
  121. //---------------------------------------------------------------------------
  122. /*
  123. * 닫기버튼 이나 x버튼 클릭시 공통으로 처리하는 로직이들어간다..
  124. * Form과 DataModule class를 delete시킨다.
  125. * arguments
  126. *
  127. * return
  128. * void
  129. */
  130. void __fastcall TSMS00301::CommClose()
  131. {
  132. CMM_SaveForm(g_sFormsDir, this);
  133. //SMS00301 = NULL;
  134. }
  135. //---------------------------------------------------------------------------
  136. /*
  137. * 최초 1회 수행되는 타이머 이벤트
  138. * arguments
  139. * Sender : event handler 객체
  140. * return
  141. * void
  142. */
  143. void __fastcall TSMS00301::TmrShowTimer(TObject *Sender)
  144. {
  145. TmrShow->Enabled = false;
  146. SelHistory();
  147. }
  148. //---------------------------------------------------------------------------
  149. void __fastcall TSMS00301::ChkExpandClick(TObject *Sender)
  150. {
  151. CMM_ExpandCollapseChk(TvList, ChkExpand->Checked);
  152. }
  153. //---------------------------------------------------------------------------
  154. /*
  155. * Refresh Data Event Function
  156. * arguments
  157. *
  158. * return
  159. * void
  160. */
  161. void __fastcall TSMS00301::SelHistory()
  162. {
  163. TSqlCursor sqlCrs;
  164. String sQry;
  165. TADOQuery *pADO = ADOQry;
  166. sQry = "SELECT SMS_SEQ, SMS_CRTN_DT, SEND_TEL, RPLY_TEL, SEND_MSG \r\n"
  167. " FROM TB_SMS_SEND_HS \r\n"
  168. " WHERE SMS_CRTN_DT BETWEEN :p01 AND :p02 \r\n"
  169. " AND ( SEND_TEL LIKE '%' || :p03 || '%' \r\n"
  170. " OR RPLY_TEL LIKE '%' || :p04 || '%' \r\n"
  171. " OR SEND_MSG LIKE '%' || :p05 || '%') \r\n"
  172. " ORDER BY SMS_SEQ \r\n";
  173. try
  174. {
  175. ITSDb_SQLText(pADO, sQry);
  176. ITSDb_SQLBind(pADO, "p01", FStDateTime);
  177. ITSDb_SQLBind(pADO, "p02", FEdDateTime);
  178. ITSDb_SQLBind(pADO, "p03", FIdList);
  179. ITSDb_SQLBind(pADO, "p04", FIdList);
  180. ITSDb_SQLBind(pADO, "p05", FIdList);
  181. ITSDb_SQLOpen(pADO);
  182. DspHistory();
  183. }
  184. catch(EDatabaseError &E)
  185. {
  186. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  187. throw Exception(String(E.ClassName()) + E.Message);
  188. }
  189. catch(...)
  190. {
  191. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  192. throw Exception("알수없는 오류가 발생하였습니다.");
  193. }
  194. }
  195. //---------------------------------------------------------------------------
  196. void __fastcall TSMS00301::DspHistory()
  197. {
  198. TADOQuery *pADO = ADOQry;
  199. try
  200. {
  201. TcxGridChartSeries *pChart = NULL;
  202. CMM_ClearGridTableView(TvList);
  203. int nRow = 0;
  204. int nDataCnt = 0;
  205. try {
  206. TvList->BeginUpdate();
  207. nDataCnt = pADO->RecordCount;
  208. m_pGDC->RecordCount = nDataCnt;
  209. for( ; !pADO->Eof; pADO->Next(), nRow++)
  210. {
  211. m_pGDC->Values[nRow][Column00->Index] = pADO->FieldByName("SMS_SEQ")->AsString;
  212. m_pGDC->Values[nRow][Column01->Index] = ITSUtil_StrToTime(pADO->FieldByName("SMS_CRTN_DT")->AsString);
  213. m_pGDC->Values[nRow][Column02->Index] = pADO->FieldByName("SEND_TEL")->AsString;
  214. m_pGDC->Values[nRow][Column03->Index] = pADO->FieldByName("RPLY_TEL")->AsString;
  215. m_pGDC->Values[nRow][Column04->Index] = pADO->FieldByName("SEND_MSG")->AsString;
  216. }
  217. }
  218. __finally
  219. {
  220. if (pADO)
  221. {
  222. pADO->Close();
  223. }
  224. TvList->EndUpdate();
  225. //CxList->SetFocus();
  226. LblRecords->Caption = FormatFloat("##,##0", m_pGDC->RecordCount) + " 건";
  227. String sEnd = "데이터 " + LblRecords->Caption + " 이 조회 되었습니다.";
  228. Application->MessageBox(sEnd.c_str(), L"데이터 조회 완료", MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  229. }
  230. }
  231. catch(EDatabaseError &E)
  232. {
  233. throw Exception(String(E.ClassName()) + E.Message);
  234. }
  235. catch(...)
  236. {
  237. throw Exception("알수없는 오류가 발생하였습니다.");
  238. }
  239. }
  240. //---------------------------------------------------------------------------
  241. void __fastcall TSMS00301::OnMessage(TMessage &Msg)
  242. {
  243. switch (Msg.Msg)
  244. {
  245. case WM_PARAM_DATABASE:
  246. if (WP_DB_SELECT_OK == Msg.WParam)
  247. {
  248. //ShowMessage("Select Ok");
  249. }
  250. break;
  251. }
  252. }
  253. //---------------------------------------------------------------------------
  254. void __fastcall TSMS00301::BtnExlSaveClick(TObject *Sender)
  255. {
  256. TcxGrid *pGrid = CxList;
  257. TcxGridTableView *pView = TvList;
  258. String sTitle = "SMS 문자발송이력";
  259. CMM_ExportToExcelFile(sTitle, pGrid, pView, this);
  260. }
  261. //---------------------------------------------------------------------------
  262. void __fastcall TSMS00301::FormClose(TObject *Sender, TCloseAction &Action)
  263. {
  264. POST_MSG(FParent, WM_SUBFORM_CLOSE, 0, 0);
  265. CommClose();
  266. //SMS00301 = NULL;
  267. }
  268. //---------------------------------------------------------------------------