home *** CD-ROM | disk | FTP | other *** search
/ 66.142.0.142 / 66.142.0.142.tar / 66.142.0.142 / rptEventReport.aspx.vb < prev    next >
Text File  |  2010-09-29  |  25KB  |  415 lines

  1. Imports System.Data
  2. Imports System.Data.OleDb
  3. Imports ceTe.DynamicPDF
  4. Imports ceTe.DynamicPDF.PageElements
  5. Imports System.Web.UI
  6.  
  7. Public Class rptEventReport
  8.     Inherits AspNetMaker7_tfpssnet
  9.  
  10. #Region " Web Form Designer Generated Code "
  11.  
  12.     'This call is required by the Web Form Designer.
  13.     <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
  14.  
  15.     End Sub
  16.  
  17.  
  18.     Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
  19.         'CODEGEN: This method call is required by the Web Form Designer
  20.         'Do not modify it using the code editor.
  21.         InitializeComponent()
  22.     End Sub
  23.  
  24. #End Region
  25.  
  26.     'Groups for header elements
  27.     Private m_objPageHeader As Group = New Group
  28.     'Groups for footer elements
  29.     Private m_objPageFooter As Group = New Group
  30.  
  31.     'Page Dimensions of pages
  32.     Private Shared s_objPageDimensions As PageDimensions = New PageDimensions(PageSize.Letter, PageOrientation.Portrait, 54.0F)
  33.     'Current page that elements are being added to
  34.     Private m_objCurrentPage As ceTe.DynamicPDF.Page
  35.     'Top Y coordinate for the body of the report
  36.     Private m_fltBodyTop As Single = 82
  37.     'Bottom Y coordinate for the body of the report
  38.     Private m_fltBodyBottom As Single = s_objPageDimensions.Body.Bottom - s_objPageDimensions.Body.Top
  39.     'Current Y coordinate where elements are being added
  40.     Private m_fltCurrentY As Single
  41.     'Used to control the alternating background
  42.     Private m_blnAlternateBG As Boolean
  43.  
  44.     Private sStartDate As String, sEndDate As String, tmpCount As Long, SortOption As Long, tmpEventID As Long, tmpLastEventID As Long = 9999999
  45.     Private sEmployeeName As String, tmpLastPart As String = "ZZZZZZZZZ", tmpLastDate As String = "12/31/2999"
  46.     Private tmpEventTotalMinutes As Long, tmpDayTotalMinutes As Long, tmpEmpCount As Long
  47.     Private tmpLastDeptAcctCode As String, tmpLastDeptDesc As String, tmpLastTypeDesc As String
  48.     Private tmpTotalHours As Double, tmpActualTotalHours As Double
  49.     Private tmpTotalAmount As Double, tmpActualTotalAmount As Double
  50.     Private tmpDTotalHours As Double, tmpDActualTotalHours As Double
  51.     Private tmpDTotalAmount As Double, tmpDActualTotalAmount As Double
  52.     Private tmpGTotalHours As Double, tmpGActualTotalHours As Double
  53.     Private tmpGTotalAmount As Double, tmpGActualTotalAmount As Double
  54.  
  55.     Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  56.         sStartDate = Session("tmpStartDate")
  57.         sEndDate = Session("tmpEndDate")
  58.         tmpEventID = Session("tmpEvent")
  59.  
  60.         'Create a document and set it's properties
  61.         Dim objDocument As Document = New Document
  62.         objDocument.Creator = "rptEventReport.aspx"
  63.         objDocument.Author = "Tony L. Clayton"
  64.         objDocument.Title = "PSS Event Report"
  65.         objDocument.InitialPageZoom = PageZoom.FitWidth
  66.  
  67.         'Adds elements to the header groups
  68.         SetPageHeader()
  69.         SetPageFooter()
  70.  
  71.         'Establises connection to the database
  72.         Dim objconnection As OleDbConnection = GetOpenDBConn()
  73.         Dim objData As OleDbDataReader = GetData(objconnection)
  74.  
  75.         'Builds the report
  76.         BuildDocument(objDocument, objData)
  77.  
  78.         'Cleans up database connections
  79.         objData.Close()
  80.         objconnection.Close()
  81.  
  82.         'Outputs the SimpleReport to the current web page
  83.         objDocument.DrawToWeb("rptEventReport.pdf")
  84.         Response.End()
  85.     End Sub
  86.  
  87.     Private Sub SetPageHeader()
  88.         'Adds elements to the header group
  89.         With m_objPageHeader
  90.             .Add(New Image(Server.MapPath("images\logo.png"), 0, 0, 0.7F))
  91.             .Add(New Image(Server.MapPath("images\logo.png"), 405, 0, 0.7F))
  92.  
  93.             .Add(New Label("P R O D U C T I O N   S E R V I C E S   S C H E D U L I N G   S Y S T E M", 0, 0, 504, 10, Font.HelveticaBold, 8, TextAlign.Center))
  94.             .Add(New Label("Event Report", 0, 12, 504, 16, Font.HelveticaBold, 16, TextAlign.Center))
  95.             .Add(New Label("As of " & ew_FormatDateTime(Now(), vbLongDate), 0, 30, 504, 9, Font.HelveticaBold, 9, TextAlign.Center))
  96.  
  97.             .Add(New Label("From " & ew_FormatDateTime(sStartDate, vbShortDate) & " through " & ew_FormatDateTime(sEndDate, vbShortDate), 0, 40, 504, 9, Font.HelveticaBold, 9, TextAlign.Right))
  98.             '.Add(New Label(Session("tmpEventText"), 1, 40, 504, 14, Font.HelveticaBold, 14, TextAlign.Left))
  99.  
  100.             .Add(New Rectangle(120, 57, 70, (10), Grayscale.Black, New WebColor("000000"), 0.0F))
  101.             .Add(New Label("Variance", 120, 56, 50, 9, Font.TimesBold, 9, TextAlign.Right, RgbColor.White))
  102.             .Add(New Rectangle(200, 57, 145, (10), Grayscale.Black, New WebColor("000000"), 0.0F))
  103.             .Add(New Label("Scheduled", 240, 56, 50, 9, Font.TimesBold, 9, TextAlign.Right, RgbColor.White))
  104.             .Add(New Rectangle(352, 57, 150, (10), Grayscale.Black, New WebColor("000000"), 0.0F))
  105.             .Add(New Label("Actual", 390, 56, 50, 9, Font.TimesBold, 9, TextAlign.Right, RgbColor.White))
  106.  
  107.             .Add(New Label("Employee", 5, 68, 50, 9, Font.TimesBold, 9))
  108.             .Add(New Label("Position", 80, 68, 50, 9, Font.TimesBold, 9))
  109.             .Add(New Label("Hours", 115, 68, 40, 9, Font.TimesBold, 9, TextAlign.Right))
  110.             .Add(New Label("Amount", 150, 68, 40, 9, Font.TimesBold, 9, TextAlign.Right))
  111.             .Add(New Label("In", 195, 68, 40, 9, Font.TimesBold, 9, TextAlign.Right))
  112.             .Add(New Label("Out", 237, 68, 40, 9, Font.TimesBold, 9, TextAlign.Right))
  113.             .Add(New Label("Hours", 265, 68, 40, 9, Font.TimesBold, 9, TextAlign.Right))
  114.             .Add(New Label("Amount", 300, 68, 40, 9, Font.TimesBold, 9, TextAlign.Right))
  115.             .Add(New Label("In", 345, 68, 40, 9, Font.TimesBold, 9, TextAlign.Right))
  116.             .Add(New Label("Out", 390, 68, 40, 9, Font.TimesBold, 9, TextAlign.Right))
  117.             .Add(New Label("Hours", 420, 68, 40, 9, Font.TimesBold, 9, TextAlign.Right))
  118.             .Add(New Label("Amount", 460, 68, 40, 9, Font.TimesBold, 9, TextAlign.Right))
  119.  
  120.             m_objPageHeader.Add(New Line(0, 80, 504, 80))
  121.         End With
  122.     End Sub
  123.  
  124.     Private Sub SetPageFooter()
  125.         'Adds elements to the footer group
  126.         Dim objLabel As PageNumberingLabel = New PageNumberingLabel("Page %%CP%% of %%TP%%", 0, 692, 504, 8, Font.HelveticaBold, 8, TextAlign.Right)
  127.         'objLabel.HasPageNumbering = True
  128.         m_objPageFooter.Add(objLabel)
  129.     End Sub
  130.  
  131.     Private Sub AddNewPage(ByVal document As Document)
  132.         'Adds a new page to the document
  133.         m_objCurrentPage = New ceTe.DynamicPDF.Page(s_objPageDimensions)
  134.         m_objCurrentPage.Elements.Add(m_objPageHeader)
  135.         m_objCurrentPage.Elements.Add(m_objPageFooter)
  136.  
  137.         'Uncomment the line below to add a layout grid to the each page
  138.         'm_objCurrentPage.Elements.Add(New LayoutGrid)
  139.  
  140.         m_fltCurrentY = m_fltBodyTop
  141.         m_blnAlternateBG = False
  142.  
  143.         document.Pages.Add(m_objCurrentPage)
  144.     End Sub
  145.  
  146.     Private Sub BuildDocument(ByVal document As Document, ByVal data As OleDbDataReader)
  147.         'Builds the PDF document with data from the DataReader
  148.         AddNewPage(document)
  149.         While data.Read()
  150.             AddRecord(document, data)
  151.         End While
  152.         PrintTotals()
  153.     End Sub
  154.  
  155.     Private Sub AddRecord(ByVal document As Document, ByVal data As OleDbDataReader)
  156.         Dim intReqHeight As Integer
  157.         intReqHeight = 9
  158.  
  159.         'Adds a new page to the document if needed
  160.         If m_fltCurrentY > m_fltBodyBottom - 20 Then AddNewPage(document)
  161.  
  162.         If tmpLastDate <> data("schDate") Then
  163.             If tmpLastDate <> "12/31/2999" Then
  164.                 'Adds alternating background to document if needed
  165.                 If m_blnAlternateBG Then
  166.                     m_objCurrentPage.Elements.Add(New Rectangle(0, m_fltCurrentY, 504, (intReqHeight + 4), Grayscale.Black, New WebColor("E0E0FF"), 0.0F))
  167.                 End If
  168.                 m_objCurrentPage.Elements.Add(New Line(125, m_fltCurrentY, 155, m_fltCurrentY))
  169.                 m_objCurrentPage.Elements.Add(New Line(160, m_fltCurrentY, 190, m_fltCurrentY))
  170.                 m_objCurrentPage.Elements.Add(New Line(280, m_fltCurrentY, 305, m_fltCurrentY))
  171.                 m_objCurrentPage.Elements.Add(New Line(315, m_fltCurrentY, 340, m_fltCurrentY))
  172.                 m_objCurrentPage.Elements.Add(New Line(430, m_fltCurrentY, 460, m_fltCurrentY))
  173.                 m_objCurrentPage.Elements.Add(New Line(470, m_fltCurrentY, 500, m_fltCurrentY))
  174.                 m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpDActualTotalHours - tmpDTotalHours, 2, -2, -2, -2), 115, m_fltCurrentY, 40, intReqHeight, Font.TimesRoman, 10, TextAlign.Right))
  175.                 m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpDActualTotalAmount - tmpDTotalAmount, 2, -2, -2, -2), 150, m_fltCurrentY, 40, intReqHeight, Font.TimesRoman, 10, TextAlign.Right))
  176.                 m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpDTotalHours, 2, -2, -2, -2), 255, m_fltCurrentY, 50, intReqHeight, Font.TimesRoman, 10, TextAlign.Right))
  177.                 m_objCurrentPage.Elements.Add(New TextArea(FormatCurrency(tmpDTotalAmount, 2, -2, -2, -2), 300, m_fltCurrentY, 40, intReqHeight, Font.TimesRoman, 10, TextAlign.Right))
  178.                 m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpDActualTotalHours, 2, -2, -2, -2), 410, m_fltCurrentY, 50, intReqHeight, Font.TimesRoman, 10, TextAlign.Right))
  179.                 m_objCurrentPage.Elements.Add(New TextArea(FormatCurrency(tmpDActualTotalAmount, 2, -2, -2, -2), 450, m_fltCurrentY, 50, intReqHeight, Font.TimesRoman, 10, TextAlign.Right))
  180.                 m_blnAlternateBG = Not m_blnAlternateBG
  181.                 m_fltCurrentY += intReqHeight + 5
  182.                 tmpDTotalHours = 0
  183.                 tmpDActualTotalHours = 0
  184.                 tmpDTotalAmount = 0
  185.                 tmpDActualTotalAmount = 0
  186.             End If
  187.         End If
  188.  
  189.         If tmpLastEventID = 9999999 Then
  190.             m_objCurrentPage.Elements.Add(New TextArea(data("evtDescription"), 1, m_fltCurrentY, 100, intReqHeight, Font.TimesBold, 12))
  191.             m_fltCurrentY += intReqHeight + 5
  192.         End If
  193.         If data("evtID") <> tmpLastEventID And tmpLastEventID <> 9999999 Then
  194.             PrintTotals()
  195.             AddNewPage(document)
  196.             m_objCurrentPage.Elements.Add(New TextArea(data("evtDescription"), 1, m_fltCurrentY, 100, intReqHeight, Font.TimesBold, 12))
  197.             m_fltCurrentY += intReqHeight + 5
  198.             tmpLastPart = ""
  199.         End If
  200.         tmpLastEventID = data("evtID")
  201.  
  202.         If tmpLastPart <> data("prtDescription") Then
  203.             If tmpLastPart <> "ZZZZZZZZZ" Then
  204.                 m_fltCurrentY += intReqHeight
  205.             End If
  206.             If Not IsDBNull(data("prtDescription")) Then
  207.                 m_objCurrentPage.Elements.Add(New TextArea(data("prtDescription"), 1, m_fltCurrentY, 100, intReqHeight, Font.TimesBold, 10))
  208.             End If
  209.             If Not IsDBNull(data("schStartTime")) And Not IsDBNull(data("schEndTime")) Then
  210.                 m_objCurrentPage.Elements.Add(New TextArea(ew_FormatDateTime(data("schStartTime"), 14) & " - " & ew_FormatDateTime(data("schEndTime"), 14), 100, m_fltCurrentY, 150, intReqHeight, Font.TimesBold, 10))
  211.             End If
  212.             If Not IsDBNull(data("schDate")) Then
  213.                 m_objCurrentPage.Elements.Add(New TextArea(FormatDateTime(data("schDate"), DateFormat.LongDate), 200, m_fltCurrentY, 200, intReqHeight, Font.TimesBold, 10))
  214.             End If
  215.             m_blnAlternateBG = True
  216.             m_fltCurrentY += intReqHeight + 5
  217.         End If
  218.  
  219.         'Adds alternating background to document if needed
  220.         If m_blnAlternateBG Then
  221.             m_objCurrentPage.Elements.Add(New Rectangle(0, m_fltCurrentY, 504, (intReqHeight + 4), Grayscale.Black, New WebColor("E0E0FF"), 0.0F))
  222.         End If
  223.  
  224.         m_objCurrentPage.Elements.Add(New TextArea(data("empName"), 5, m_fltCurrentY, 80, intReqHeight, Font.TimesRoman, 10))
  225.         m_objCurrentPage.Elements.Add(New TextArea(data("posDescription"), 80, m_fltCurrentY, 60, intReqHeight, Font.TimesRoman, 10))
  226.         If Not IsDBNull(data("TotalHours")) Then
  227.             tmpTotalHours = data("TotalHours")
  228.         Else
  229.             tmpTotalHours = 0
  230.         End If
  231.         If Not IsDBNull(data("ActualTotalHours")) Then
  232.             tmpActualTotalHours = data("ActualTotalHours")
  233.         Else
  234.             tmpActualTotalHours = 0
  235.         End If
  236.         m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpActualTotalHours - tmpTotalHours, 2, -2, -2, -2), 115, m_fltCurrentY, 40, intReqHeight, Font.TimesRoman, 10, TextAlign.Right))
  237.         If Not IsDBNull(data("ShiftAmount")) Then
  238.             tmpTotalAmount = data("ShiftAmount")
  239.         Else
  240.             tmpTotalAmount = 0
  241.         End If
  242.         If Not IsDBNull(data("ActualAmount")) Then
  243.             tmpActualTotalAmount = data("ActualAmount")
  244.         Else
  245.             tmpActualTotalAmount = 0
  246.         End If
  247.         m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpActualTotalAmount - tmpTotalAmount, 2, -2, -2, -2), 150, m_fltCurrentY, 40, intReqHeight, Font.TimesRoman, 10, TextAlign.Right))
  248.  
  249.         If Not IsDBNull(data("schCallTime")) Then
  250.             m_objCurrentPage.Elements.Add(New TextArea(ew_FormatDateTime(data("schCallTime"), 14), 195, m_fltCurrentY, 40, intReqHeight, Font.TimesRoman, 10, TextAlign.Right))
  251.         End If
  252.         If Not IsDBNull(data("schOutTime")) Then
  253.             m_objCurrentPage.Elements.Add(New TextArea(ew_FormatDateTime(data("schOutTime"), 14), 237, m_fltCurrentY, 40, intReqHeight, Font.TimesRoman, 10, TextAlign.Right))
  254.         End If
  255.         If tmpTotalHours <> 0 Then
  256.             m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpTotalHours, 2, -2, -2, -2), 255, m_fltCurrentY, 50, intReqHeight, Font.TimesRoman, 10, TextAlign.Right))
  257.         End If
  258.         If tmpTotalAmount <> 0 Then
  259.             m_objCurrentPage.Elements.Add(New TextArea(FormatCurrency(tmpTotalAmount, 2, -2, -2, -2), 300, m_fltCurrentY, 40, intReqHeight, Font.TimesRoman, 10, TextAlign.Right))
  260.         End If
  261.  
  262.         If Not IsDBNull(data("schActualStart")) Then
  263.             m_objCurrentPage.Elements.Add(New TextArea(ew_FormatDateTime(data("schActualStart"), 14), 345, m_fltCurrentY, 40, intReqHeight, Font.TimesRoman, 10, TextAlign.Right))
  264.         End If
  265.         If Not IsDBNull(data("schActualEnd")) Then
  266.             m_objCurrentPage.Elements.Add(New TextArea(ew_FormatDateTime(data("schActualEnd"), 14), 390, m_fltCurrentY, 40, intReqHeight, Font.TimesRoman, 10, TextAlign.Right))
  267.         End If
  268.         If tmpActualTotalHours <> 0 Then
  269.             m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpActualTotalHours, 2, -2, -2, -2), 410, m_fltCurrentY, 50, intReqHeight, Font.TimesRoman, 10, TextAlign.Right))
  270.         End If
  271.         If tmpActualTotalAmount <> 0 Then
  272.             m_objCurrentPage.Elements.Add(New TextArea(FormatCurrency(tmpActualTotalAmount, 2, -2, -2, -2), 450, m_fltCurrentY, 50, intReqHeight, Font.TimesRoman, 10, TextAlign.Right))
  273.         End If
  274.  
  275.         tmpDTotalHours = tmpDTotalHours + tmpTotalHours
  276.         tmpDActualTotalHours = tmpDActualTotalHours + tmpActualTotalHours
  277.         tmpDTotalAmount = tmpDTotalAmount + tmpTotalAmount
  278.         tmpDActualTotalAmount = tmpDActualTotalAmount + tmpActualTotalAmount
  279.         tmpGTotalHours = tmpGTotalHours + tmpTotalHours
  280.         tmpGActualTotalHours = tmpGActualTotalHours + tmpActualTotalHours
  281.         tmpGTotalAmount = tmpGTotalAmount + tmpTotalAmount
  282.         tmpGActualTotalAmount = tmpGActualTotalAmount + tmpActualTotalAmount
  283.  
  284.         If IsDBNull(data("prtDescription")) Then
  285.             tmpLastPart = ""
  286.         Else
  287.             tmpLastPart = data("prtDescription")
  288.         End If
  289.         tmpLastDate = data("schDate")
  290.         If IsDBNull(data("depAcctCode")) Then
  291.             tmpLastDeptAcctCode = ""
  292.         Else
  293.             tmpLastDeptAcctCode = data("depAcctCode")
  294.         End If
  295.         If IsDBNull(data("depDescription")) Then
  296.             tmpLastDeptDesc = ""
  297.         Else
  298.             tmpLastDeptDesc = data("depDescription")
  299.         End If
  300.         If IsDBNull(data("typDescription")) Then
  301.             tmpLastTypeDesc = ""
  302.         Else
  303.             tmpLastTypeDesc = data("typDescription")
  304.         End If
  305.         'Toggles alternating background
  306.         m_blnAlternateBG = Not m_blnAlternateBG
  307.         'Increments the current Y position on the page
  308.         m_fltCurrentY += intReqHeight + 5
  309.         tmpCount += 1
  310.  
  311.     End Sub
  312.  
  313.     Private Function GetOpenDBConn() As OleDbConnection
  314.         'Creates and opens a database connection
  315.         Dim sConnStr As String = EW_DB_CONNECTION_STRING
  316.         Dim objConnection As New OleDbConnection(sConnStr)
  317.         objConnection.Open()
  318.         Return objConnection
  319.     End Function
  320.  
  321.     Private Function GetData(ByVal connection As OleDbConnection) As OleDbDataReader
  322.         'Creates a DataReader for the report
  323.         Dim strSQL As String
  324.         Dim objCommand As OleDbCommand = connection.CreateCommand()
  325.         strSQL = "SELECT tblSchedule.schDate, tblEvents.evtID, tblEvents.evtDescription, " _
  326. & "tblDepartments.depAcctCode, tblSchedule.schDepID, tblPositions.posDescription, " _
  327. & "tblParts.prtDescription, tblLocations.locDescription, tblSchedule.schStartTime, tblSchedule.schEndTime, " _
  328. & "tblEmployees.empFirstName, tblEmployees.empLastName, tblEmployees.empName, tblSchedule.schCallTime, " _
  329. & "tblSchedule.schOutTime, tblTypes.typDescription, " _
  330. & "tblEmployees.empRate, tblDepartments.depDescription, tblSchedule.schActualStart, tblSchedule.schActualEnd, " _
  331. & "tblEmployeeStatus.tscStatus, " _
  332. & "IIf((DateDiff('n',[schCallTime],[schOutTime])/60)=24,0,(DateDiff('n',[schCallTime],[schOutTime])/60)) AS [TotalHours],  " _
  333. & "IIf((DateDiff('n',[schActualStart],[schActualEnd])/60)=24,0,(DateDiff('n',[schActualStart],[schActualEnd])/60)) AS [ActualTotalHours], " _
  334. & "([ActualTotalHours]*[empRate]) AS [ActualAmount], ([TotalHours]*[empRate]) AS [ShiftAmount]," _
  335. & "IIf([evtDescription]='Projects' Or [evtDescription]='VIP Management' Or [evtDescription]='Weekend Services','0','1') AS [tmpOrder] " _
  336. & "FROM tblPositions RIGHT JOIN (tblTypes RIGHT JOIN (tblParts RIGHT JOIN (tblLocations RIGHT JOIN (tblEvents RIGHT JOIN ((tblEmployeeStatus RIGHT JOIN tblEmployees ON tblEmployeeStatus.ID = tblEmployees.empStatusID) INNER JOIN (tblDepartments RIGHT JOIN tblSchedule ON tblDepartments.depID = tblSchedule.schDepID) ON tblEmployees.empID = tblSchedule.schEmpID) ON tblEvents.evtID = tblSchedule.schEvtID) ON tblLocations.locID = tblSchedule.schLocID) ON tblParts.prtID = tblSchedule.schPartsID) ON tblTypes.typID = tblSchedule.schTypID) ON tblPositions.posID = tblSchedule.schPosID " _
  337. & "WHERE (evtDescription IS NOT NULL) AND "
  338.         If Not IsDBNull(sStartDate) Then
  339.             strSQL = strSQL & "(schDate >= #" & sStartDate & "#) "
  340.         End If
  341.         If Not IsDBNull(sEndDate) Then
  342.             If Not IsDBNull(sEndDate) Then
  343.                 strSQL = strSQL & " AND "
  344.             End If
  345.             strSQL = strSQL & "(schDate <= #" & sEndDate & "#) "
  346.         End If
  347.         If tmpEventID <> 0 Then
  348.             strSQL = strSQL & " AND (evtID = " & tmpEventID & ") "
  349.         End If
  350.         strSQL = strSQL & "ORDER BY evtDescription, schDate, prtDescription "
  351.         Session("strSQL") = strSQL
  352.         objCommand.CommandText = strSQL
  353.         Dim objDataReader As OleDbDataReader = objCommand.ExecuteReader()
  354.  
  355.         Return objDataReader
  356.     End Function
  357.  
  358.     Sub PrintTotals()
  359.         'Adds alternating background to document if needed
  360.         If m_blnAlternateBG Then
  361.             m_objCurrentPage.Elements.Add(New Rectangle(0, m_fltCurrentY, 504, (10 + 4), Grayscale.Black, New WebColor("E0E0FF"), 0.0F))
  362.         End If
  363.         m_objCurrentPage.Elements.Add(New Line(125, m_fltCurrentY, 155, m_fltCurrentY))
  364.         m_objCurrentPage.Elements.Add(New Line(160, m_fltCurrentY, 190, m_fltCurrentY))
  365.         m_objCurrentPage.Elements.Add(New Line(280, m_fltCurrentY, 305, m_fltCurrentY))
  366.         m_objCurrentPage.Elements.Add(New Line(315, m_fltCurrentY, 340, m_fltCurrentY))
  367.         m_objCurrentPage.Elements.Add(New Line(430, m_fltCurrentY, 460, m_fltCurrentY))
  368.         m_objCurrentPage.Elements.Add(New Line(470, m_fltCurrentY, 500, m_fltCurrentY))
  369.         m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpDActualTotalHours - tmpDTotalHours, 2, -2, -2, -2), 115, m_fltCurrentY, 40, 10, Font.TimesRoman, 10, TextAlign.Right))
  370.         m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpDActualTotalAmount - tmpDTotalAmount, 2, -2, -2, -2), 150, m_fltCurrentY, 40, 10, Font.TimesRoman, 10, TextAlign.Right))
  371.         m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpDTotalHours, 2, -2, -2, -2), 255, m_fltCurrentY, 50, 10, Font.TimesRoman, 10, TextAlign.Right))
  372.         m_objCurrentPage.Elements.Add(New TextArea(FormatCurrency(tmpDTotalAmount, 2, -2, -2, -2), 300, m_fltCurrentY, 40, 10, Font.TimesRoman, 10, TextAlign.Right))
  373.         m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpDActualTotalHours, 2, -2, -2, -2), 410, m_fltCurrentY, 50, 10, Font.TimesRoman, 10, TextAlign.Right))
  374.         m_objCurrentPage.Elements.Add(New TextArea(FormatCurrency(tmpDActualTotalAmount, 2, -2, -2, -2), 450, m_fltCurrentY, 50, 10, Font.TimesRoman, 10, TextAlign.Right))
  375.         'Toggles alternating background
  376.         m_blnAlternateBG = Not m_blnAlternateBG
  377.         'Increments the current Y position on the page
  378.         m_fltCurrentY += 20 + 5
  379.  
  380.         'Adds alternating background to document if needed
  381.         If m_blnAlternateBG Then
  382.             m_objCurrentPage.Elements.Add(New Rectangle(0, m_fltCurrentY, 504, (10 + 4), Grayscale.Black, New WebColor("E0E0FF"), 0.0F))
  383.         End If
  384.         m_objCurrentPage.Elements.Add(New Line(115, m_fltCurrentY, 145, m_fltCurrentY))
  385.         m_objCurrentPage.Elements.Add(New Line(150, m_fltCurrentY, 190, m_fltCurrentY))
  386.         m_objCurrentPage.Elements.Add(New Line(270, m_fltCurrentY, 295, m_fltCurrentY))
  387.         m_objCurrentPage.Elements.Add(New Line(300, m_fltCurrentY, 340, m_fltCurrentY))
  388.         m_objCurrentPage.Elements.Add(New Line(420, m_fltCurrentY, 450, m_fltCurrentY))
  389.         m_objCurrentPage.Elements.Add(New Line(460, m_fltCurrentY, 500, m_fltCurrentY))
  390.         m_objCurrentPage.Elements.Add(New TextArea("Event Totals: ", 30, m_fltCurrentY, 140, 10, Font.TimesBold, 10, TextAlign.Left))
  391.         m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpGActualTotalHours - tmpGTotalHours, 2, -2, -2, -2), 105, m_fltCurrentY, 40, 10, Font.TimesBold, 10, TextAlign.Right))
  392.         m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpGActualTotalAmount - tmpGTotalAmount, 2, -2, -2, -2), 150, m_fltCurrentY, 40, 10, Font.TimesBold, 10, TextAlign.Right))
  393.         m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpGTotalHours, 2, -2, -2, -2), 245, m_fltCurrentY, 50, 10, Font.TimesBold, 10, TextAlign.Right))
  394.         m_objCurrentPage.Elements.Add(New TextArea(FormatCurrency(tmpGTotalAmount, 2, -2, -2, -2), 300, m_fltCurrentY, 40, 10, Font.TimesBold, 10, TextAlign.Right))
  395.         m_objCurrentPage.Elements.Add(New TextArea(FormatNumber(tmpGActualTotalHours, 2, -2, -2, -2), 400, m_fltCurrentY, 50, 10, Font.TimesBold, 10, TextAlign.Right))
  396.         m_objCurrentPage.Elements.Add(New TextArea(FormatCurrency(tmpGActualTotalAmount, 2, -2, -2, -2), 450, m_fltCurrentY, 50, 10, Font.TimesBold, 10, TextAlign.Right))
  397.         'Toggles alternating background
  398.         m_blnAlternateBG = Not m_blnAlternateBG
  399.         'Increments the current Y position on the page
  400.         m_fltCurrentY += 10 + 5
  401.  
  402.         m_objCurrentPage.Elements.Add(New TextArea("Department Cost Allocation:", 1, m_fltCurrentY, 140, 10, Font.TimesBold, 10, TextAlign.Left))
  403.         'Toggles alternating background
  404.         m_blnAlternateBG = Not m_blnAlternateBG
  405.         'Increments the current Y position on the page
  406.         m_fltCurrentY += 20 + 5
  407.  
  408.         m_objCurrentPage.Elements.Add(New TextArea(tmpLastDeptDesc & "     (# " & tmpLastDeptAcctCode & " )     " & tmpLastTypeDesc, 20, m_fltCurrentY, 400, 10, Font.TimesBold, 10, TextAlign.Left))
  409.         'Toggles alternating background
  410.         m_blnAlternateBG = Not m_blnAlternateBG
  411.         'Increments the current Y position on the page
  412.         m_fltCurrentY += 20 + 5
  413.     End Sub
  414. End Class
  415.