Advertisement
Guest User

Untitled

a guest
Jul 26th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.42 KB | None | 0 0
  1. -----------------------------------------------------
  2. | ModId | ModText | AdditionalCost |
  3. -----------------------------------------------------
  4. | 58 | RANCH | 2000 |
  5. -----------------------------------------------------
  6. | 86 | GUACAMOLE | 500 |
  7. -----------------------------------------------------
  8. | 52 | CEBOLLA | 0 |
  9. -----------------------------------------------------
  10. | 87 | QUESO | 150 |
  11. -----------------------------------------------------
  12.  
  13. ---------------------------------------------
  14. | OrderId | OrderDateTime |
  15. ---------------------------------------------
  16. | 20001 | 2017-06-01 00:00:00 |
  17. ---------------------------------------------
  18. | 20001 | 2017-06-01 00:00:00 |
  19. ---------------------------------------------
  20. | 15224 | 2017-06-02 00:00:00 |
  21. ---------------------------------------------
  22. | 13501 | 2017-06-03 00:00:00 |
  23. ---------------------------------------------
  24.  
  25. ---------------------------------------------------------------------
  26. | TransaccionID | Mod1ID | Mod2ID | Mod3ID |
  27. ---------------------------------------------------------------------
  28. | 1 | | 86 | 87 |
  29. ---------------------------------------------------------------------
  30. | 2 | 58 | | |
  31. ---------------------------------------------------------------------
  32. | 3 | 87 | 52 | |
  33. ---------------------------------------------------------------------
  34. | 4 | | 58 | |
  35. ---------------------------------------------------------------------
  36.  
  37. -------------------------------------------------
  38. | Modificador | Cantidad | Valor |
  39. -------------------------------------------------
  40. | RANCH | 2 | 4000 |
  41. -------------------------------------------------
  42. | GUACAMOLE | 5 | 2500 |
  43. -------------------------------------------------
  44. | CEBOLLA | 7 | 0 |
  45. -------------------------------------------------
  46. | QUESO | 4 | 600 |
  47. -------------------------------------------------
  48.  
  49. SELECT
  50. t.MenuModifierText AS [Modificador],
  51. COUNT(*) AS [Cantidad],
  52. (SELECT MenuModCost.AdditionalCost FROM MenuModifiers AS MenuModCost WHERE MenuModCost.MenuModifierID = t.MenuModifierID) AS ValorMod,
  53. (SELECT MenuModCost.AdditionalCost FROM MenuModifiers AS MenuModCost WHERE MenuModCost.MenuModifierID = t.MenuModifierID) * COUNT(*) AS [Valor]
  54. FROM(
  55. SELECT MENUMODS.MenuModifierText, MENUMODS.MenuModifierID
  56. FROM (OrderTransactions AS ORDTRDS INNER JOIN OrderHeaders AS ORDHRD
  57. ON ORDTRDS.OrderID = ORDHRD.OrderID) INNER JOIN MenuModifiers AS MENUMODS
  58. ON MENUMODS.MenuModifierID = ORDTRDS.Mod1ID
  59. WHERE ORDHRD.OrderDateTime BETWEEN #06/21/2017 00:00:00# AND #06/22/2017 23:59:59#
  60. UNION ALL
  61. SELECT MENUMODS.MenuModifierText, MENUMODS.MenuModifierID
  62. FROM (OrderTransactions AS ORDTRDS INNER JOIN OrderHeaders AS ORDHRD
  63. ON ORDTRDS.OrderID = ORDHRD.OrderID) INNER JOIN MenuModifiers AS MENUMODS
  64. ON MENUMODS.MenuModifierID = ORDTRDS.Mod2ID
  65. WHERE ORDHRD.OrderDateTime BETWEEN #06/21/2017 00:00:00# AND #06/22/2017 23:59:59#
  66. UNION ALL
  67. SELECT MENUMODS.MenuModifierText, MENUMODS.MenuModifierID
  68. FROM (OrderTransactions AS ORDTRDS INNER JOIN OrderHeaders AS ORDHRD
  69. ON ORDTRDS.OrderID = ORDHRD.OrderID) INNER JOIN MenuModifiers AS MENUMODS
  70. ON MENUMODS.MenuModifierID = ORDTRDS.Mod3ID
  71. WHERE ORDHRD.OrderDateTime BETWEEN #06/21/2017 00:00:00# AND #06/22/2017 23:59:59#
  72. UNION ALL
  73. SELECT MENUMODS.MenuModifierText, MENUMODS.MenuModifierID
  74. FROM (OrderTransactions AS ORDTRDS INNER JOIN OrderHeaders AS ORDHRD
  75. ON ORDTRDS.OrderID = ORDHRD.OrderID) INNER JOIN MenuModifiers AS MENUMODS
  76. ON MENUMODS.MenuModifierID = ORDTRDS.Mod4ID
  77. WHERE ORDHRD.OrderDateTime BETWEEN #06/21/2017 00:00:00# AND #06/22/2017 23:59:59#
  78. ) AS t
  79. GROUP BY t.MenuModifierID, t.MenuModifierText;
  80.  
  81. Select ModID, Count(*) From [Transacciones] GROUP BY ModID
  82.  
  83. For I = 1 To 20
  84. CurrentDb.Execute "INSERT INTO [TransaccionesTEMP](TransaccionID, ModID)" & _
  85. " SELECT ORDTRDS.OrderID, MENUMODS.MenuModifierID " & _
  86. " FROM (OrderTransactions AS ORDTRDS INNER JOIN OrderHeaders AS ORDHRD " & _
  87. " ON ORDTRDS.OrderID = ORDHRD.OrderID) INNER JOIN MenuModifiers AS MENUMODS " & _
  88. " ON MENUMODS.MenuModifierID = ORDTRDS.Mod" & I & "ID " & _
  89. " WHERE ORDHRD.OrderDateTime BETWEEN #" & Format(Fecha1, "mm/dd/yy") & "# AND #" & Format(Fecha2, "mm/dd/yy") & "#"
  90. Next I
  91.  
  92. 'Aquí ya tendrías la tabla que te comenté al principio. Con ella ahora se pueden hacer consultas mas elegantes, ya sea por código o usando consultas
  93. End Sub
  94.  
  95. Public Sub GenerarConsultaTransacciones(ByVal Fecha1 As Date, ByVal Fecha2 As Date)
  96. Dim ConsultaSQL As String
  97.  
  98. ConsultaSQL = _
  99. " SELECT t.MenuModifierText AS [Modificador], COUNT(*) AS [Cantidad]," & _
  100. "(SELECT MenuModCost.AdditionalCost FROM MenuModifiers AS MenuModCost WHERE MenuModCost.MenuModifierID = t.MenuModifierID) AS ValorMod," & _
  101. "(SELECT MenuModCost.AdditionalCost FROM MenuModifiers AS MenuModCost WHERE MenuModCost.MenuModifierID = t.MenuModifierID) * COUNT(*) AS [Valor]" & _
  102. "FROM("
  103.  
  104. For I = 1 To 20
  105. ConsultaSQL = ConsultaSQL & _
  106. " INSERT INTO [TransaccionesTEMP](TransaccionID, ModID)" & _
  107. " SELECT MENUMODS.MenuModifierText, MENUMODS.MenuModifierID " & _
  108. " FROM (OrderTransactions AS ORDTRDS INNER JOIN OrderHeaders AS ORDHRD " & _
  109. " ON ORDTRDS.OrderID = ORDHRD.OrderID) INNER JOIN MenuModifiers AS MENUMODS " & _
  110. " ON MENUMODS.MenuModifierID = ORDTRDS.Mod" & I & "ID " & _
  111. " WHERE ORDHRD.OrderDateTime BETWEEN #" & Format(Fecha1, "mm/dd/yy") & "# AND #" & Format(Fecha2, "mm/dd/yy") & "#"
  112. If I < 20 Then ConsultaSQL = ConsultaSQL & " UNION ALL "
  113. Next I
  114.  
  115. ConsultaSQL = ConsultaSQL & ") AS t GROUP BY t.MenuModifierID, t.MenuModifierText"
  116.  
  117. On Error Resume Next
  118. DoCmd.DeleteObject acQuery, "Consulta TRansacciones"
  119. On Error GoTo 0
  120. CurrentDb.CreateQueryDef "Consulta Transacciones", ConsultaSQL
  121. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement