FrmIncidVmsInfoF.cpp 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  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 "WindowMsgF.h"
  10. #include "FrmIncidVmsInfoF.h"
  11. #include "FrmLinkGradeSetF.h"
  12. #include "CDSNodeF.h"
  13. #include "CDSLinkF.h"
  14. #include "CDSIfscF.h"
  15. #include "CDSRoadF.h"
  16. #include "CDSTrafficGradeF.h"
  17. //---------------------------------------------------------------------------
  18. #pragma package(smart_init)
  19. #pragma link "cxButtons"
  20. #pragma link "cxClasses"
  21. #pragma link "cxContainer"
  22. #pragma link "cxControls"
  23. #pragma link "cxCustomData"
  24. #pragma link "cxData"
  25. #pragma link "cxDataStorage"
  26. #pragma link "cxEdit"
  27. #pragma link "cxFilter"
  28. #pragma link "cxGraphics"
  29. #pragma link "cxGrid"
  30. #pragma link "cxGridCustomTableView"
  31. #pragma link "cxGridCustomView"
  32. #pragma link "cxGridLevel"
  33. #pragma link "cxGridTableView"
  34. #pragma link "cxGroupBox"
  35. #pragma link "cxLabel"
  36. #pragma link "cxLookAndFeelPainters"
  37. #pragma link "cxLookAndFeels"
  38. #pragma link "cxStyles"
  39. #pragma link "cxTextEdit"
  40. #pragma link "dxSkinBlack"
  41. #pragma link "dxSkinBlue"
  42. #pragma link "dxSkinsCore"
  43. #pragma link "dxSkinscxPCPainter"
  44. #pragma resource "*.dfm"
  45. TFrmIncidVmsInfo *FrmIncidVmsInfo = NULL;
  46. //---------------------------------------------------------------------------
  47. __fastcall TFrmIncidVmsInfo::TFrmIncidVmsInfo(TComponent* Owner)
  48. : TForm(Owner)
  49. {
  50. LangTrans->Translate(this, ITSDb_GetConnection());
  51. Width = 474;
  52. Height= 495;
  53. int nHeight = Height;
  54. int nWidth = Width;
  55. ITSSkin_Load(this);
  56. CMM_LoadForm(g_sFormsDir, this);
  57. Height = nHeight;
  58. Width = nWidth;
  59. Caption = " " + Caption;//" 돌발구간 VMS 정보";
  60. m_sLinkId = "";
  61. TvList->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoInfo->Caption;//"<해당 구간에 VMS 정보가 없습니다>";
  62. FCodeRDR = ItsCodeManager->FLists.Find("RDR"); // 도로등급
  63. }
  64. //---------------------------------------------------------------------------
  65. void __fastcall TFrmIncidVmsInfo::FormClose(TObject *Sender, TCloseAction &Action)
  66. {
  67. try
  68. {
  69. CMM_SaveForm(g_sFormsDir, this);
  70. }
  71. catch(...)
  72. {
  73. }
  74. Action = caFree;
  75. FrmIncidVmsInfo = NULL;
  76. }
  77. //---------------------------------------------------------------------------
  78. void __fastcall TFrmIncidVmsInfo::RefreshInfo()
  79. {
  80. ShowIncidVmsInfo(m_sLinkId);
  81. }
  82. //---------------------------------------------------------------------------
  83. void __fastcall TFrmIncidVmsInfo::ShowIncidVmsInfo(String ALinkId)
  84. {
  85. m_sLinkId = ALinkId;
  86. EdId->Text = ALinkId;
  87. EdLevel->Text = String(1);
  88. EdLength->Text = FormatFloat("##,##0", 0);
  89. EdStId->Text = "";
  90. EdEdId->Text = "";
  91. EdStName->Text = FrmLang->lblNoName->Caption;//"명칭없음";
  92. EdEdName->Text = FrmLang->lblNoName->Caption;//"명칭없음";
  93. EdRoadName->Text = "";
  94. EdRoadRank->Text = "";
  95. EdRoadRank->Visible = false;
  96. TItsNode *pNode;
  97. TItsLink *pLink;
  98. pLink = ItsLinkManager->FLists.Find(m_sLinkId);
  99. if (!pLink) return;
  100. EdStId->Text = pLink->F_NODEID;
  101. EdEdId->Text = pLink->T_NODEID;
  102. EdLength->Text = FormatFloat("##,##0", StrToFloat(pLink->LINK_LENG));
  103. pNode = ItsNodeManager->FLists.Find(pLink->F_NODEID);
  104. if (pNode) EdStName->Text = pNode->NODE_NAME.Trim();
  105. pNode = ItsNodeManager->FLists.Find(pLink->T_NODEID);
  106. if (pNode) EdEdName->Text = pNode->NODE_NAME.Trim();
  107. EdRoadName->Text = pLink->ROAD_NAME;
  108. String sRDR = "[" + pLink->ROAD_RANK + "] ";
  109. if (FCodeRDR)
  110. {
  111. TItsSubCode *pSubCode = FCodeRDR->FSubLists.Find(pLink->ROAD_RANK);
  112. if (pSubCode) sRDR = sRDR + pSubCode->CMMN_CD_KOR_NM;
  113. }
  114. EdRoadRank->Text = sRDR;
  115. //TItsTrafficLink *pTraf = ItsTrafficLinkManager->FList.Find(m_sLinkId);
  116. //if (pTraf)
  117. //{
  118. //}
  119. EdRoadRank->Visible = true;
  120. SelVmsInfo(ALinkId);
  121. }
  122. //---------------------------------------------------------------------------
  123. void __fastcall TFrmIncidVmsInfo::SelVmsInfo(String ALinkId)
  124. {
  125. String sQry;
  126. TADOQuery *pADO = NULL;
  127. CMM_ClearGridTableView(TvList);
  128. try
  129. {
  130. TvList->BeginUpdate();
  131. TcxDataController *pGDC = TvList->DataController;
  132. pADO = new TADOQuery(NULL);
  133. pADO->Close();
  134. pADO->Connection = ITSDb_GetConnection();
  135. try
  136. {
  137. #if 0
  138. //구간이 여러개 있기때문에 VMS가 중복으로 표출된다.
  139. sQry = "SELECT A.LINK_ID, A.IFSC_ID, B.VMS_IFSC_ID, C.VMS_CTLR_NMBR, \r\n"
  140. " D.VMS_CTLR_ID, D.VMS_NM \r\n"
  141. " FROM TB_IFSC_LINK_RLTN A, \r\n"
  142. " TB_VMS_LINK_IFSC B, \r\n"
  143. " TB_VMS_IFSC_RLTN C, \r\n"
  144. " TB_VMS_CTLR D \r\n"
  145. " WHERE A.IFSC_ID = B.IFSC_ID \r\n"
  146. " AND C.VMS_IFSC_ID = B.VMS_IFSC_ID \r\n"
  147. " AND C.VMS_CTLR_NMBR = D.VMS_CTLR_NMBR \r\n"
  148. " AND A.LINK_ID = :p01 \r\n"
  149. " ORDER BY C.VMS_CTLR_NMBR \r\n";
  150. #else
  151. sQry = "SELECT VMS_CTLR_NMBR, VMS_CTLR_ID, VMS_NM \r\n"
  152. " FROM TB_VMS_CTLR \r\n"
  153. " WHERE VMS_CTLR_NMBR IN (SELECT DISTINCT C.VMS_CTLR_NMBR AS VMS_CTLR_NMBR \r\n"
  154. " FROM TB_IFSC_LINK_RLTN A, \r\n"
  155. " TB_VMS_LINK_IFSC B, \r\n"
  156. " TB_VMS_IFSC_RLTN C \r\n"
  157. " WHERE A.IFSC_ID = B.IFSC_ID \r\n"
  158. " AND C.VMS_IFSC_ID = B.VMS_IFSC_ID \r\n"
  159. " AND A.LINK_ID = :p01 ) \r\n"
  160. " AND DEL_YN = 'N' \r\n"
  161. " ORDER BY VMS_CTLR_NMBR \r\n";
  162. #endif
  163. ITSDb_SQLText(pADO, sQry);
  164. ITSDb_SQLBind(pADO, "p01", ALinkId);
  165. ITSDb_SQLOpen(pADO);
  166. int nRow;
  167. for( ; !pADO->Eof; pADO->Next())
  168. {
  169. nRow = pGDC->AppendRecord();
  170. pGDC->Values[nRow][Column01->Index] = pADO->FieldByName("VMS_CTLR_NMBR")->AsString;
  171. pGDC->Values[nRow][Column12->Index] = pADO->FieldByName("VMS_CTLR_ID")->AsString;
  172. pGDC->Values[nRow][Column02->Index] = pADO->FieldByName("VMS_NM")->AsString;
  173. }
  174. }
  175. catch(EDatabaseError &E)
  176. {
  177. throw Exception(String(E.ClassName()) + E.Message);
  178. }
  179. catch(Exception &exception)
  180. {
  181. throw Exception(String(exception.ClassName()) + exception.Message);
  182. }
  183. catch(...)
  184. {
  185. throw Exception(FrmLang->lblDbErr->Caption);//"[구간VMS정보조회] 알수없는 DB 오류가 발생하였습니다.");
  186. }
  187. }
  188. __finally
  189. {
  190. if (pADO)
  191. {
  192. pADO->Close();
  193. delete pADO;
  194. }
  195. TvList->EndUpdate();
  196. }
  197. }
  198. //---------------------------------------------------------------------------
  199. void __fastcall TFrmIncidVmsInfo::BtnCloseClick(TObject *Sender)
  200. {
  201. Close();
  202. }
  203. //---------------------------------------------------------------------------