CDSVmsDsplSchF.cpp 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSVmsDsplSchF.h"
  4. #include "AppGlobalF.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. //---------------------------------------------------------------------------
  8. //---------------------------------------------------------------------------
  9. TCDSVmsDsplSchManager *CDSVmsDsplSchManager = NULL;
  10. //---------------------------------------------------------------------------
  11. /*
  12. * Manager
  13. */
  14. TCDSVmsDsplSchManager::TCDSVmsDsplSchManager()
  15. {
  16. }
  17. //---------------------------------------------------------------------------
  18. TCDSVmsDsplSchManager::~TCDSVmsDsplSchManager()
  19. {
  20. Clear();
  21. FPhases.RemoveAll();
  22. }
  23. //---------------------------------------------------------------------------
  24. void TCDSVmsDsplSchManager::Clear()
  25. {
  26. FMaxPhase = 0;
  27. FOR_STL(TCDSVmsDsplSch*, pObj, FPhases)
  28. {
  29. pObj->FWeeks.RemoveAll();
  30. }
  31. }
  32. //---------------------------------------------------------------------------
  33. bool TCDSVmsDsplSchManager::LoadFromDb(TADOConnection *ADbConn, String AVMS_CTLR_NMBR, String AVMS_SCH_TYPE)
  34. {
  35. String sQry;
  36. TADOQuery *pADO = NULL;
  37. sQry = "SELECT A.PHASE, B.WEEK_CD, B.SCH_HH \r\n"
  38. " FROM TB_VMS_DSPL_SCH A, \r\n"
  39. " TB_VMS_DSPL_SCH_WEEK B \r\n"
  40. " WHERE A.VMS_SCH_TYPE = :p01 \r\n"
  41. " AND A.VMS_CTLR_NMBR = :p02 \r\n"
  42. " AND A.VMS_SCH_TYPE = B.VMS_SCH_TYPE(+) \r\n"
  43. " AND A.VMS_CTLR_NMBR = B.VMS_CTLR_NMBR(+) \r\n"
  44. " AND A.PHASE = B.PHASE(+) \r\n"
  45. " ORDER BY A.PHASE, B.WEEK_CD \r\n";
  46. Clear();
  47. FPhases.Lock();
  48. try
  49. {
  50. try
  51. {
  52. pADO = new TADOQuery(NULL);
  53. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  54. pADO->SQL->Clear();
  55. pADO->SQL->Text = sQry;
  56. pADO->Parameters->ParamByName("p01")->Value = AVMS_SCH_TYPE;
  57. pADO->Parameters->ParamByName("p02")->Value = AVMS_CTLR_NMBR;
  58. pADO->Prepared = true;
  59. pADO->Open();
  60. for( ; !pADO->Eof; pADO->Next())
  61. {
  62. int PHASE = pADO->FieldByName("PHASE")->AsInteger;
  63. TCDSVmsDsplSch *pObj = FPhases.Find(PHASE);
  64. if (!pObj)
  65. {
  66. pObj = new TCDSVmsDsplSch();
  67. pObj->PHASE = PHASE;
  68. FPhases.Push(PHASE, pObj);
  69. }
  70. if (PHASE > FMaxPhase)
  71. {
  72. FMaxPhase = PHASE;
  73. }
  74. String WEEK_CD = pADO->FieldByName("WEEK_CD")->AsString;
  75. if (WEEK_CD == "") continue;
  76. TCDSVmsDsplSchWeek *pWeek = pObj->FWeeks.Find(WEEK_CD);
  77. if (!pWeek)
  78. {
  79. pWeek = new TCDSVmsDsplSchWeek();
  80. pWeek->WEEK_CD = WEEK_CD;
  81. pObj->FWeeks.Push(pWeek->WEEK_CD, pWeek);
  82. }
  83. pWeek->SCH_HH = pADO->FieldByName("SCH_HH")->AsString;
  84. }
  85. }
  86. catch(EDatabaseError &E)
  87. {
  88. DBERRORMSG("TCDSVmsDsplSchManager::LoadFromDb", String(E.ClassName()), E.Message, sQry);
  89. throw Exception(String(E.ClassName()) + E.Message);
  90. }
  91. catch(Exception &e)
  92. {
  93. DBERRORMSG("TCDSVmsDsplSchManager::LoadFromDb", String(e.ClassName()), e.Message, sQry);
  94. throw Exception(String(e.ClassName()) + e.Message);
  95. }
  96. }
  97. __finally
  98. {
  99. if (pADO)
  100. {
  101. pADO->Close();
  102. delete pADO;
  103. }
  104. FOR_STL(TCDSVmsDsplSch*, pObj, FPhases)
  105. {
  106. for (int nWeek = 1; nWeek <= 7; nWeek++)
  107. {
  108. TCDSVmsDsplSchWeek *pWeek = pObj->FWeeks.Find(String(nWeek));
  109. if (!pWeek)
  110. {
  111. pWeek = new TCDSVmsDsplSchWeek();
  112. pWeek->WEEK_CD = String(nWeek);
  113. pObj->FWeeks.Push(pWeek->WEEK_CD, pWeek);
  114. }
  115. }
  116. }
  117. FPhases.UnLock();
  118. }
  119. return true;
  120. }
  121. //---------------------------------------------------------------------------