Washington State University



-6350000'This is a more advanced and way more fun version of the prior payroll program. Version 1 proved that you can figure out a business process and build a webpage to calculate and store the values that the system needed. Here we kick it up and simplify the program with arraytables (data structure in the aspx page ). We simplify the processing and add the aspx gridview which are colorful tables.'The business scenario is that Lewiston Jim needs to process payroll for a 200 employee manufacturing company that has operations in three states (ID, WA, OR). The employees of the company are organized into three labor grades - production, shipping/receiving and warehouse. Because the employees have different lengths of service they have different payrates, thus Jim has to type in the different payrates. A future version should lookup the employee's payrate from a database and insert it into the calculation when the employee was selected from a list. We'll need SQL programming language for that. SQL is the lingua franca of database processing.'This program calculates how much to pay each employee, and saves the data into a database table inside the aspx webpage (in the RAM of the webserver) in two ways. The first as a new row in an RAM-hosted datatable array (a data structure that can store a bunch of values in rows and columns akin to a spreadsheet). The data is also added to a second datatable to update the running totals for each state. The datatable is introduced to facilitate the display and management of the data.' The Ram-housed datatable array works very much like a SQL Server Database table or any other relational database table that stores the payroll transactions. So we now move from stacks of individual variables in our applications to organized, tabular in-memory data structures that store data in rows (very quickly too). Using gridview controls to display datatables is a great leap forward. Further, when we connect to SQL Server databases we will retrieve data into the same datatable. We make a big step closer today to understanding the best data storage solution invented so far, cloud-based relational databases that are stored in data centers (further introduced in the second half of the class if the class is 15 weeks). In fact you should learn very quickly in your database class next semester because of this content presented in our epic webdev class.'This table theoretically would get very tall over the years, as a result of many employees having weekly payroll calculated and distributed. A second datatable has three rows (one for each state) and stores the running totals. Think of this table as a stack of variables 3 rows tall and five columns wide - so 15 variables in all. After each payroll transaction, while a new row of data is inserted into the first datatable, here the values are used to update running totals for each state. So the transaction data is used to update a summary table. Data condensement (aggregation) is a common requirement.'A future version of this project saves the data back to your very own SQL Server database. That is actually only one line of code inside a try/catch block (dataadapter.update(name ofthedatatable that is storing the data). There is an appendix with more technical explanation. run teh program for 10 minutes first before reading that appendix. Further explanation of about datatables and arrays is presented, you can also google datatables.'This project introduces arrays using Visual Studio's powerful datatable object. . 'Datatables are essentially a stack of variables shaped like a table, with rows and columns. The columns hold the table schema (the column names, data types and any default values or restrictions). Rows hold records of transaction data. While older arrays allow for only one datatype (ie all string or all numeric fields), a datatable allows each column to be a different datatype which facilitates storage of dates, numbers, yes/no (Boolean) values and numbers. 'A datatable is an object specifically designed to work with Visual studio and relational databases such as Access and SQL Server. Here datatables are introduced to actually how simple the process Of setting up a virtual table (the columns) And inserting data into it (the rows) from a form. We leverage the finctionality of datatables later in the course. 'Think of an array as a table of variables, so rather than create 9 single variables, you can create a 3x3 grid of 9 variables. Arrays are like tables of variables in that they store data in a grid. Just like variables, arrays are stored in the memory of the computer. Think of arrays like an excel worksheet with rows and columns, you can type data into the cells and change the data in the cells, you can then easily tabulate columns of data, even on conditions such as total the sales only for the state of Washington. Historically RAM chips enable very fast data processing calculations, but was very expensive. So computer programs fetched blocks of data from secondary storage devices (paper tape, card, disk, etc.) and loaded the data into the primary storage (RAM) for processing. Then the compiled and processed data was stored back to the secondary storage. So arrays have been useful to speed up data processing for decades. 'The downside of all arrays including datatables is that when you turn the computer off you lose all the data (if you do not save the data back to secondary storage). Think of arrays as a virtual database table. The weakness of arrays however is that they are in-working memory only, hence the jump to database tables which afford permanent storage of data. Arrays are still used in many useful ways by different information systems and are called data structures, data grids, matrices, temp tables, tablevars, and arraytables. Entire classes are taught on manipulating arrays as this is the heart of data processing. For businesses programming the developer can often just save the transaction or processed data directly into database tables. Our class together will use this approach and focus on web-database interactivity. 'The systems designer needs to consider the data that will be stored in an array, the names of the column headings and their data types. The major datatypes match those you already know; integer, decimal, string, boolean, and datetime. 'In the process of learning this project a connection in the students' mind should be made. A connection from the web entry systems that we have been building to the storage of data into data structures. Further a connection should be made from the web entry system to the analytics, visualization and reporting systems which are the bread and butter of MIS work. Analytics is often just counting, summing and averaging values in columns and comparing the results across time such as total sales by month as compared to the prior year.Important Aspects of this project:Data entry is carefully validated Two datatable arrays are created at the page (global) level so that different procedures can access them.Payroll for one employee is calculated and stored as an individual transaction in a transactions datatable.The processed payroll values for the employee are used to update a summary payroll datatable which has a state level granularity (totals by state)Student learns that data can be stored at transaction level detail and a summary (aggregate) table can also be easily updated.Code: Run the program using the weblink above until you understand the processing and results. Read through the code and learn how the code produces the results. It is best to print and annotate this code, “connecting the dots” for example connecting the line of code that declares the variable and the lines of code that uses the variable. Next turn on Visual Studio, add a webform and create a similar program as shown here using this code as your reference guide. While the code files are provided in .aspx and .aspx.vb format, it is actually better for you to type the code itself rather than think that using a copy/paste technique facilitates learning. 'This is a more advanced and way more fun version of the prior payroll program. Version 1 proved that you can figure out a business process and build a webpage to calculate and store the values that the system needed. Here we kick it up and simplify the program with arraytables (data structure in the aspx page ). We simplify the processing and add the aspx gridview which are colorful tables.'The business scenario is that Lewiston Jim needs to process payroll for a 200 employee manufacturing company that has operations in three states (ID, WA, OR). The employees of the company are organized into three labor grades - production, shipping/receiving and warehouse. Because the employees have different lengths of service they have different payrates, thus Jim has to type in the different payrates. A future version should lookup the employee's payrate from a database and insert it into the calculation when the employee was selected from a list. We'll need SQL programming language for that. SQL is the lingua franca of database processing.'This program calculates how much to pay each employee, and saves the data into a database table inside the aspx webpage (in the RAM of the webserver) in two ways. The first as a new row in an RAM-hosted datatable array (a data structure that can store a bunch of values in rows and columns akin to a spreadsheet). The data is also added to a second datatable to update the running totals for each state. The datatable is introduced to facilitate the display and management of the data.' The Ram-housed datatable array works very much like a SQL Server Database table or any other relational database table that stores the payroll transactions. So we now move from stacks of individual variables in our applications to organized, tabular in-memory data structures that store data in rows (very quickly too). Using gridview controls to display datatables is a great leap forward. Further, when we connect to SQL Server databases we will retrieve data into the same datatable. We make a big step closer today to understanding the best data storage solution invented so far, cloud-based relational databases that are stored in data centers (further introduced in the second half of the class). In fact you should learn very quickly in your database class next semester because of this content presented in our epic webdev class.'This table theoretically would get very tall over the years, as a result of many employees having weekly payroll calculated and distributed. A second datatable has three rows (one for each state) and stores the running totals. Think of this table as a stack of variables 3 rows tall and five columns wide - so 15 variables in all. After each payroll transaction, while a new row of data is inserted into the first datatable, here the values are used to update running totals for each state. So the transaction data is used to update a summary table. Data condensement (aggregation) is a common requirement.'A future version of this project saves the data back to your very own SQL Server database. That is actually only one line of code inside a try/catch block (dataadapter.update(name of the datatable that is storing the data). There is an appendix with more technical explanation. Run the program for 10 minutes first before reading that appendix. Further explanation of about datatables and arrays is presented, you can also google datatables.'This is a more advanced and way more fun version of the prior payroll program. Version 1 proved that you can figure out a business process and build a webpage to calculate and store the values that the system needed. Here we kick it up and simplify the program with arraytables (data structure in the aspx page ). We simplify the processing and add the aspx gridview which are colorful tables.'The business scenario is that Lewiston Jim needs to process payroll for a 200 employee manufacturing company that has operations in three states (ID, WA, OR). The employees of the company are organized into three labor grades - production, shipping/receiving and warehouse. Because the employees have different lengths of service they have different payrates, thus Jim has to type in the different payrates. A future version should lookup the employee's payrate from a database and insert it into the calculation when the employee was selected from a list. We'll need SQL programming language for that. SQL is the lingua franca of database processing.'This program calculates how much to pay each employee, and saves the data into a database table inside the aspx webpage (in the RAM of the webserver) in two ways. The first as a new row in an RAM-hosted datatable array (a data structure that can store a bunch of values in rows and columns akin to a spreadsheet). The data is also added to a second datatable to update the running totals for each state. The datatable is introduced to facilitate the display and management of the data.' The Ram-housed datatable array works very much like a SQL Server Database table or any other relational database table that stores the payroll transactions. So we now move from stacks of individual variables in our applications to organized, tabular in-memory data structures that store data in rows (very quickly too). Using gridview controls to display datatables is a great leap forward. Further, when we connect to SQL Server databases we will retrieve data into the same datatable. We make a big step closer today to understanding the best data storage solution invented so far, cloud-based relational databases that are stored in data centers (further introduced in the second half of the class). In fact you should learn very quickly in your database class next semester because of this content presented in our epic webdev class.'This table theoretically would get very tall over the years, as a result of many employees having weekly payroll calculated and distributed. A second datatable has three rows (one for each state) and stores the running totals. Think of this table as a stack of variables 3 rows tall and five columns wide - so 15 variables in all. After each payroll transaction, while a new row of data is inserted into the first datatable, here the values are used to update running totals for each state. So the transaction data is used to update a summary table. Data condensement (aggregation) is a common requirement.'A future version of this project saves the data back to your very own SQL Server database. That is actually only one line of code inside a try/catch block (dataadapter.update(name of the datatable that is storing the data). There is an appendix with more technical explanation. Run the program for 10 minutes first before reading that appendix. Further explanation of about datatables and arrays is presented, you can also google datatables.Imports System.DataPartial Class PayrollDataTable Inherits System.Web.UI.Page 'this program can calculate payroll for one employee at a time and keep running totals by state which is an aggregation of all the payroll records processed into just 3 rows, one for ID, WA and OR. Running totals for total pay, net pay and taxes by state are kept for each of 3 states. The requirement is that the payroll clerk needs to know how much money to set aside for taxes each quarter. After you fully understand this program, make a similar program of your own interests that can store and display data in gridviews. Practice storing data, adding new rows to a datatable of your own design. 90% of the erros there will be in misspelled column names. You don't need any new special database or webserver accounts to create in-memory data structures. You can start today. 'These are the public shared datatable arrays. The first stores the more granular transactions for each employee, and the second datatable keeps the running totals by state. Public Shared gdtPayrollRecords As New DataTable Public Shared gdtStatePayrollRecords As New DataTable ' use these variables to store the # hours the employee worked, payrate gross, Gross pay, overtime pay, net pay and taxes for the employee, Dim gdecHours, gdecPayRate, gdecOTPay, gdecGrossPay, gdecNetPay, gdecTaxes As Decimal#Region "Define the tables in memory" Private Sub PayrollDataTable_Init(sender As Object, e As EventArgs) Handles Me.Init 'This is set up code that runs only one time when the webpage is displayed for the first time. This code runs before the form is filled in. At this point in the processing we have a datatable created but it has no columns yet. Here we add the columns. The red code in quotes below are the column names. The gettype code specifies the datatype for the column. Typically you have these datatypes match the datatypes in the SQL Server database table which would be the final destination for the transaction data. In a future module we connect directly to a database and interract with the table of data and do not have to create an in-memory data structure. So datatables are a bridge concept to database interactivity. 'just to make sure the columns are added only once we stop the program if the columns already exist. This protects against the program user reloading the page f they press the back button. If gdtPayrollRecords.Columns.Count > 0 Then Exit Sub End If 'ok so we have a global datatable but so far there is no plan for what data will be stored in it. Here now is the table structure for the columns. The business process decides what are the columns you need to create and store data with. Some processes are centered on employees, customers, products, etc.). When you create a database you have to create the columns, their names, datatypes and any restrictions. The same requirement holds for datatables. ' Here we perform the one-time set up of the columns for the data table. Again this is the set up. In another procedure, we scrape the user supplied values from the webpage and add a row of filled columns together generating one payroll record. When running the app and testing it out, check that the columns shown in the blue gridview table are the same as shown below in red quotes. Possible upgrades to this project include adding a column for a project name (to allow >1 project within a state), or perhaps to display more pay breakdowns in separate columns. 'together these columns will make up one row of data, which is the record for a payroll transaction. With gdtPayrollRecords.Columns .Add("TransactionID", GetType(Integer)) .Add("EmployeeName", GetType(String)) .Add("Department", GetType(String)) .Add("Hours", GetType(Decimal)) .Add("Payrate", GetType(Decimal)) .Add("State", GetType(String)) .Add("GrossPay", GetType(Decimal)) .Add("NetPay", GetType(Decimal)) .Add("OTPay", GetType(Decimal)) .Add("Taxes", GetType(Decimal)) End With 'Here we specify that the the first integer column will automagically have its value set during teh data entry process. We don't need to worry about this column, each row will have the next # in the sequence starting at 1. This is autonumbering or autoincrementing the first column. With gdtPayrollRecords.Columns("TransactionID") .AutoIncrement = True .AutoIncrementSeed = 1 .AutoIncrementStep = 1 End With 'Here is another datatable array that will be used to hold the cummulative totals for each state. 'So all the payroll records, for example Idaho, are compiled together. Again if the columns were already added to the datatable then stop. If gdtStatePayrollRecords.Columns.Count > 0 Then Exit Sub End If 'here are the columns for the table that will hold the running totals. This table replaces 15 global variables (5 parcels of data stored for each of 3 states). With gdtStatePayrollRecords.Columns .Add("State", GetType(String)) .Add("#Employees", GetType(Integer)) .Add("GrossPay", GetType(Decimal)) .Add("NetPay", GetType(Decimal)) .Add("OTPay", GetType(Decimal)) .Add("Taxes", GetType(Decimal)) End With 'if calculations are going to be made in columns (such as running totals) then the values need to start at 0 With gdtStatePayrollRecords .Columns("#Employees").DefaultValue = 0 .Columns("GrossPay").DefaultValue = 0 .Columns("NetPay").DefaultValue = 0 .Columns("OTPay").DefaultValue = 0 .Columns("Taxes").DefaultValue = 0 End With 'next we will add the 3 rows of data one row each for 3 states (ID, WA, OR). We next initialize each of the rows, getting it ready for later data storage. We make sure these 3 rows are only added once. If gdtStatePayrollRecords.Rows.Count > 0 Then Response.Write("Already have" & gdtStatePayrollRecords.Rows.Count & " records") Exit Sub End If 'This next code is somewhat advanced, but introduced here since we need to create, 'initialize' and add three rows of data (one for each state) to allow later data entry. If you were connecting to a database then you would pull data from tables into RAM memory to facilitate web page based operations. 'We need to create three rows of data, one state Idaho, Washington, or Oregon. When we created the columns, we set the default value for many of the columns to 0 (initialize the numeric columns). A radiobutton list exists for the states, so we can pull the state names from that list control using the loop below. We use the code below to create the three rows and set their values to one of the states and the rest of the columns are set to 0. Later we will be able to add a number to that 0. When a new row is created its numeric fields are set to NULL (empty). We can't add a number to a NULL (empty) value, so we need to set their initial values to 0. For Each li As ListItem In rblStates.Items Dim dr As DataRow = gdtStatePayrollRecords.NewRow dr.Item("State") = li.Text gdtStatePayrollRecords.Rows.Add(dr) Next 'we could also have used 3 blocks of code similar to shown next, adding 3 rows of data, one at a time. ''this row will hold the summary data for Washington. Notice we are adding a new row to the datatable, then putting a value into each column of that new row (called dr1- datarow 1) then we add the row to the datatable. Later we use a gridview and display that the row is indeed added. 'Dim dr1 = gdtStatePayrollRecords.NewRow 'dr1.item("State") = "Washington" 'gdtStatePayrollRecords.Rows.Add(dr2) 'So now our datatable has three rows in it. Next we display the datatable with the state data in a second datagrid on the webpage. For now the rows have columns of zeros for the measures and the state name in the first column. The result is that when the webpage loads there is a blue gridview on the form with the state names in it and a bunch of zeros in the columns. GridView2.DataSource = gdtStatePayrollRecords GridView2.DataBind() End Sub#End Region#Region "Calculate payroll" Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 'the following pay calculation algorithm (set of formulas), requires that a valid number was typed into the textbox. What if a bogus entry was made? We need some type of data Validation. So we check if a number was types in, and stop the program if data entry error is found. If a number is entered, then convert it to a decimal value and assign it to the decimal variable. If rblStates.SelectedIndex = -1 Then lblError.Visible = True lblError.Text = "Select a state" End If If IsNumeric(txtHours.Text) = True Then gdecHours = CDec(txtHours.Text) lblError.Visible = False Else ' show an error message and stop the program if the entry is not a number lblError.Visible = True lblError.Text = "hours entered must be numeric" Exit Sub End If If IsNumeric(txtPayrate.Text) Then 'if the user typed what resembles a # (using the IsNumeric function) into the textbox then convert the number to a decimal value (CDEC) and assign it to the decimal variable gdecPayRate = CDec(txtPayrate.Text) lblError.Visible = False Else lblError.Visible = True lblError.Text = "payrate entered must be numeric" Exit Sub End If 'OK now we can perform the payroll processing. We could zero out the values for gdecGrossPay, gdecOTPay, and gdecGrossPay (removing any values from prior payroll processing, but their values are overwritten in this next procedure. Select Case gdecHours Case Is <= 40 'If hours worked are <=40 then calculate gross without worrying about overtime gdecGrossPay = gdecHours * gdecPayRate Case > 40 'If hours worked are over 40 then grosspay is a combination of base 'plus overtime pay. In US overtime is typically paid at 150% of regular hourly rate gdecOTPay = (gdecHours - 40) * (gdecPayRate * 1.5) 'calc the OT pay which is # OT hours times time and a half 'add the regular and OT pay together to calc grosspay gdecGrossPay = (40 * gdecPayRate) + gdecOTPay End Select 'make sure a value was selected for the state taxes, stop program if no state selected If rblStates.SelectedIndex = -1 Then lblError.Visible = True lblError.Text = "Select a state" Exit Sub End If 'calculate the taxes and net pay (Netpay = grosspay minus taxes) gdecTaxes = gdecGrossPay * rblStates.SelectedValue gdecNetPay = gdecGrossPay - gdecTaxes 'show totals for calculated payroll for the current employee. you have to convert numbers (or dates) to text before you show it in a label or textbox that is what the .tostring is. The C = currency, with default of 2 decimal places. 'C0 = currency with 0 decimal places, you can also use P for percent, N for number. lblGrossPay.Text = gdecGrossPay.ToString("C") lblNetPay.Text = gdecNetPay.ToString("C") lblTaxes.Text = gdecTaxes.ToString("C") 'Now lets call the procedure to add the rows to the two datatables, both to record the transaction and to update the running totals. Call AddDataRows() End Sub#End Region#Region "Add Data Rows" Private Sub AddDataRows() 'ok here is the new functionality. Add a new row to save the employee payroll record, and add it to the datatable. 'This procedure takes the values from the web form and puts them ever so carefully into each column of a row or data, one column at a time. First we create a new datarow here called dr then place the values into each column of that new row. Finally we add the new row to the datatable. Notice that we are not creating any old blank row, but rather a row that has all the column schema names built into it, and the datarow expects the correct datatypes. Here a newrow is created. This is important, as you have to for example store a decimal variable into column that expects decimal values. 'We will later on use an integer to specify what row# of the datatable array to update (ie update labor data for one state) Dim intRowNumber As Integer Dim dr = gdtPayrollRecords.NewRow 'now we simply pull a value from the form into each column of that new row. Watch for typos! dr.item("EmployeeName") = txtEmployee.Text dr.item("Department") = ddlDepartment.SelectedItem.Text dr.item("Hours") = Convert.ToDecimal(txtHours.Text) 'could have also used the value in the variable for this column and the next dr.item("Payrate") = Convert.ToDecimal(txtPayrate.Text) dr.item("State") = rblStates.SelectedItem.Text dr.item("GrossPay") = gdecGrossPay dr.item("OTPay") = gdecOTPay dr.item("Taxes") = gdecTaxes dr.item("NetPay") = gdecNetPay 'This is how we add that new populated row of data to the bottom of the datatable gdtPayrollRecords.Rows.Add(dr) 'now we tell a gridview control on the form to display the values of the datatable. GridView1.DataSource = gdtPayrollRecords GridView1.DataBind() 'the section below is used to take the values from the form for teh current employee and use that to update one of the rows in teh states table. For example if the payroll data was for a Washingtonian, then the summary table needs to have its Washington row updated. Again teh states table only has three rows (one for OR, ID, WA). So we increment the aggregate data for state after employee is processed. 'We use an integer variable to store the row# of the statepayroll datatable to update. So here we set the value of inRowNumber to a values of 0,1,2 to signify what row# (0,1,or 2) of the statepayroll datatable to update. A nice trick! Other ways to perform this are also available. Select Case rblStates.SelectedItem.Text Case "Idaho" intRowNumber = 0 Case "Oregon" intRowNumber = 1 Case "Washington" intRowNumber = 2 End Select 'knowing the row# to update we update the columns for one row - the state of the employee. Notice the intRowNumber variable at the end of the next line. So this next code block replaces the process to update different global variables. One row is being updated with payroll information (the row that gets updated could be oregon, idaho or washington). With gdtStatePayrollRecords.Rows(intRowNumber) .Item("#Employees") += 1 .Item("GrossPay") += gdecGrossPay .Item("NetPay") += gdecNetPay .Item("OTPay") += gdecOTPay .Item("Taxes") += gdecTaxes End With 'Now tell the gridview control on the webpage to display the state totals datatable GridView2.DataSource = gdtStatePayrollRecords GridView2.DataBind() End Sub#End Region#Region "Clear form" Protected Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click 'just clear the form for the next employee txtEmployee.Text = Nothing txtHours.Text = Nothing txtPayrate.Text = Nothing rblStates.SelectedIndex = -1 ddlDepartment.SelectedIndex = -1 lblGrossPay.Text = Nothing lblNetPay.Text = Nothing lblTaxes.Text = Nothing lblError.Text = Nothing End Sub#End Region#Region "Appendix" 'This project introduces arrays using Visual Studio's powerful datatable object. . 'Datatables are essentially a stack of variables shaped like a table, with rows and columns. The columns hold the table schema (the column names, data types and any default values or restrictions). Rows hold records of transaction data. While older arrays allow for only one datatype (ie all string or all numeric fields), a datatable allows each column to be a different datatype which facilitates storage of dates, numbers, yes/no (Boolean) values and numbers. 'A datatable is an object specifically designed to work with Visual studio and relational databases such as Access and SQL Server. Here datatables are introduced to actually how simple the process Of setting up a virtual table (the columns) And inserting data into it (the rows) from a form. We leverage the finctionality of datatables later in the course. 'Think of an array as a table of variables, so rather than create 9 single variables, you can create a 3x3 grid of 9 variables. Arrays are like tables of variables in that they store data in a grid. Just like variables, arrays are stored in the memory of the computer. Think of arrays like an excel worksheet with rows and columns, you can type data into the cells and change the data in the cells, you can then easily tabulate columns of data, even on conditions such as total the sales only for the state of Washington. Historically RAM chips enable very fast data processing calculations, but was very expensive. So computer programs fetched blocks of data from secondary storage devices (paper tape, card, disk, etc.) and loaded the data into the primary storage (RAM) for processing. Then the compiled and processed data was stored back to the secondary storage. So arrays have been useful to speed up data processing for decades. 'The downside of all arrays including datatables is that when you turn the computer off you lose all the data (if you do not save the data back to secondary storage). Think of arrays as a virtual database table. The weakness of arrays however is that they are in-working memory only, hence the jump to database tables which afford permanent storage of data. Arrays are still used in many useful ways by different information systems and are called data structures, data grids, matrices, temp tables, tablevars, and arraytables. Entire classes are taught on manipulating arrays as this is the heart of data processing. For businesses programming the developer can often just save the transaction or processed data directly into database tables. Our class together will use this approach and focus on web-database interactivity. 'The systems designer needs to consider the data that will be stored in an array, the names of the column headings and their data types. The major datatypes match those you already know; integer, decimal, string, boolean, and datetime. 'In the process of learning this project a connection in the students' mind should be made. A connection from the web entry systems that we have been building to the storage of data into data structures. Further a connection should be made from the web entry system to the analytics, visualization and reporting systems which are the bread and butter of MIS work. Analytics is often just counting, summing and averaging values in columns and comparing the results across time such as total sales by month as compared to the prior year. #End RegionEnd Class ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download