CDSItsCrossInfoF.cpp 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "ITSDbF.h"
  4. #include "AppGlobalF.h"
  5. #include "CDSItsCrossInfoF.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. String __fastcall STCondition::ToSQLOrString(String strField)
  9. {
  10. String strRet;
  11. int nCount = 0;
  12. if(true == bUse)
  13. {
  14. strRet += "( ";
  15. vector<String>::iterator it, itEnd = Codes.end();
  16. for(it = Codes.begin(); it != itEnd; ++it)
  17. {
  18. if(Codes.begin() != it)
  19. {
  20. strRet += " or ";
  21. }
  22. if(nCount >= 100)
  23. {
  24. strRet += " \n";
  25. nCount = 0;
  26. }
  27. strRet += strField + " = '";
  28. strRet += *it;
  29. strRet += "'";
  30. }
  31. strRet += ") ";
  32. }
  33. return strRet;
  34. }
  35. //------------------------------------------------------------------------------
  36. String __fastcall STCondition::ToSQLInString(String strField)
  37. {
  38. String strRet;
  39. if(true == bUse)
  40. {
  41. if(strField.IsEmpty() == false)
  42. {
  43. strRet.sprintf(L" %s IN ( ", strField);
  44. }
  45. else
  46. {
  47. strRet = " IN ( ";
  48. }
  49. vector<String>::iterator it, itEnd = Codes.end();
  50. for(it = Codes.begin(); it != itEnd; ++it)
  51. {
  52. if(Codes.begin() != it)
  53. {
  54. strRet += ", ";
  55. }
  56. strRet += "(";
  57. strRet += *it;
  58. strRet += ")";
  59. }
  60. strRet += ") ";
  61. }
  62. return strRet;
  63. };
  64. //------------------------------------------------------------------------------
  65. TRCrossDir::TRCrossDir()
  66. {
  67. FShow = true;
  68. }
  69. //---------------------------------------------------------------------------
  70. void TRCrossDir::Clear()
  71. {
  72. }
  73. //---------------------------------------------------------------------------
  74. TRCrossDir::~TRCrossDir()
  75. {
  76. }
  77. //---------------------------------------------------------------------------
  78. TRCross::TRCross()
  79. {
  80. FShow = true;
  81. }
  82. //---------------------------------------------------------------------------
  83. void TRCross::Clear()
  84. {
  85. }
  86. //---------------------------------------------------------------------------
  87. TRCross::~TRCross()
  88. {
  89. }
  90. //---------------------------------------------------------------------------
  91. TRCrossRoad::TRCrossRoad()
  92. {
  93. FShow = true;
  94. }
  95. //---------------------------------------------------------------------------
  96. void TRCrossRoad::Clear()
  97. {
  98. }
  99. //---------------------------------------------------------------------------
  100. TRCrossRoad::~TRCrossRoad()
  101. {
  102. }
  103. //---------------------------------------------------------------------------
  104. //---------------------------------------------------------------------------
  105. TRCrossManager *RCrossManager = NULL;
  106. //---------------------------------------------------------------------------
  107. TRCrossManager::TRCrossManager()
  108. {
  109. FLoadLink = false;
  110. }
  111. //---------------------------------------------------------------------------
  112. TRCrossManager::~TRCrossManager()
  113. {
  114. FLists.RemoveAll();
  115. }
  116. //---------------------------------------------------------------------------
  117. bool TRCrossManager::LoadCrossRoad(TADOConnection *ADbConn/*=NULL*/)
  118. {
  119. String sQry;
  120. TADOQuery *pADO = NULL;
  121. sQry = "SELECT B.ROAD_NAME \r\n"
  122. " FROM TB_VDS_CTLR A \r\n"
  123. " INNER JOIN TB_VDS_CMRA B \r\n"
  124. " ON A.DEL_YN = 'N' \r\n"
  125. " AND B.DEL_YN = 'N' \r\n"
  126. " AND A.VDS_TYPE_CD = 'C' \r\n"
  127. " AND A.VDS_CTLR_NMBR = B.VDS_CTLR_NMBR \r\n"
  128. " GROUP BY B.ROAD_NAME \r\n";
  129. try
  130. {
  131. FLists.Lock();
  132. FLists.RemoveAll();
  133. try
  134. {
  135. pADO = new TADOQuery(NULL);
  136. pADO->Close();
  137. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  138. pADO->SQL->Clear();
  139. pADO->SQL->Text = sQry;
  140. pADO->Prepared = true;
  141. pADO->Open();
  142. for( ; !pADO->Eof; pADO->Next())
  143. {
  144. TRCrossRoad *pCrsRoad = new TRCrossRoad();
  145. pCrsRoad->ROAD_NAME = pADO->FieldByName("ROAD_NAME")->AsString;
  146. FLists.Push(pCrsRoad->ROAD_NAME, pCrsRoad);
  147. }
  148. }
  149. catch(EDatabaseError &E)
  150. {
  151. throw Exception(String(E.ClassName()) + E.Message);
  152. }
  153. catch(Exception &exception)
  154. {
  155. throw Exception(String(exception.ClassName()) + exception.Message);
  156. }
  157. }
  158. __finally
  159. {
  160. if (pADO)
  161. {
  162. pADO->Close();
  163. delete pADO;
  164. }
  165. FLists.UnLock();
  166. }
  167. return true;
  168. }
  169. //---------------------------------------------------------------------------
  170. bool TRCrossManager::LoadCross(TADOConnection *ADbConn/*=NULL*/)
  171. {
  172. String sQry;
  173. TADOQuery *pADO = NULL;
  174. sQry = "SELECT B.ROAD_NAME, B.CROSS_NAME \r\n"
  175. " FROM TB_VDS_CTLR A \r\n"
  176. " INNER JOIN TB_VDS_CMRA B \r\n"
  177. " ON A.DEL_YN = 'N' \r\n"
  178. " AND B.DEL_YN = 'N' \r\n"
  179. " AND A.VDS_TYPE_CD = 'C' \r\n"
  180. " AND A.VDS_CTLR_NMBR = B.VDS_CTLR_NMBR \r\n"
  181. " GROUP BY B.ROAD_NAME, B.CROSS_NAME \r\n";
  182. TRCrossRoad *pCrsRoad;
  183. try
  184. {
  185. try
  186. {
  187. pADO = new TADOQuery(NULL);
  188. pADO->Close();
  189. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  190. pADO->SQL->Clear();
  191. pADO->SQL->Text = sQry;
  192. pADO->Prepared = true;
  193. pADO->Open();
  194. for( ; !pADO->Eof; pADO->Next())
  195. {
  196. String ROAD_NAME = pADO->FieldByName("ROAD_NAME")->AsString;
  197. pCrsRoad = FLists.Find(ROAD_NAME);
  198. if (!pCrsRoad) continue;
  199. TRCross *pCrs = new TRCross();
  200. pCrs->ROAD_NAME = ROAD_NAME;
  201. pCrs->CROSS_NAME = pADO->FieldByName("CROSS_NAME")->AsString;
  202. pCrsRoad->FCrosss.Push(pCrs->CROSS_NAME, pCrs);
  203. }
  204. }
  205. catch(EDatabaseError &E)
  206. {
  207. throw Exception(String(E.ClassName()) + E.Message);
  208. }
  209. catch(Exception &exception)
  210. {
  211. throw Exception(String(exception.ClassName()) + exception.Message);
  212. }
  213. }
  214. __finally
  215. {
  216. if (pADO)
  217. {
  218. pADO->Close();
  219. delete pADO;
  220. }
  221. }
  222. return true;
  223. }
  224. //---------------------------------------------------------------------------
  225. bool TRCrossManager::LoadCrossDir(TADOConnection *ADbConn/*=NULL*/)
  226. {
  227. if (FLoadLink) return true;
  228. String sQry;
  229. TADOQuery *pADO = NULL;
  230. sQry = "SELECT B.ROAD_NAME, B.CROSS_NAME, B.DIR_NAME, B.VDS_CTLR_NMBR, B.VDS_CMRA_NO \r\n"
  231. " FROM TB_VDS_CTLR A \r\n"
  232. " INNER JOIN TB_VDS_CMRA B \r\n"
  233. " ON A.DEL_YN = 'N' \r\n"
  234. " AND B.DEL_YN = 'N' \r\n"
  235. " AND A.VDS_TYPE_CD = 'C' \r\n"
  236. " AND A.VDS_CTLR_NMBR = B.VDS_CTLR_NMBR \r\n"
  237. " GROUP BY B.ROAD_NAME, B.CROSS_NAME, B.DIR_NAME, B.VDS_CTLR_NMBR, B.VDS_CMRA_NO \r\n";
  238. TRCrossRoad *pCrsRoad;
  239. TRCross *pCrs;
  240. try
  241. {
  242. try
  243. {
  244. pADO = new TADOQuery(NULL);
  245. pADO->Close();
  246. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  247. pADO->SQL->Clear();
  248. pADO->SQL->Text = sQry;
  249. pADO->Prepared = true;
  250. pADO->Open();
  251. for( ; !pADO->Eof; pADO->Next())
  252. {
  253. String ROAD_NAME = pADO->FieldByName("ROAD_NAME")->AsString;
  254. pCrsRoad = FLists.Find(ROAD_NAME);
  255. if (!pCrsRoad) continue;
  256. String CROSS_NAME = pADO->FieldByName("CROSS_NAME")->AsString;
  257. pCrs = pCrsRoad->FCrosss.Find(CROSS_NAME);
  258. if (!pCrs) continue;
  259. TRCrossDir *pDir = new TRCrossDir();
  260. pDir->DIR_NAME = pADO->FieldByName("DIR_NAME")->AsString;
  261. pDir->VDS_CTLR_NMBR = pADO->FieldByName("VDS_CTLR_NMBR")->AsString;
  262. pDir->VDS_CMRA_NO = pADO->FieldByName("VDS_CMRA_NO")->AsString;
  263. pCrs->FLinks.Push(pDir->DIR_NAME, pDir);
  264. }
  265. }
  266. catch(EDatabaseError &E)
  267. {
  268. throw Exception(String(E.ClassName()) + E.Message);
  269. }
  270. catch(Exception &exception)
  271. {
  272. throw Exception(String(exception.ClassName()) + exception.Message);
  273. }
  274. }
  275. __finally
  276. {
  277. if (pADO)
  278. {
  279. pADO->Close();
  280. delete pADO;
  281. }
  282. }
  283. FLoadLink = true;
  284. return true;
  285. }
  286. //---------------------------------------------------------------------------