The main aim of this article is to see how you can compare subtotals using a 3D HTML recordset. Subtotals result from aggregate functions such as Sum, Avg and Count on database tables. This article is the third part of a four-part series.
Comparing Subtotals Using a 3D HTML Recordset (Page 1 of 4 )
I have written two articles titled “Building a 3D HTML Table” and “Using a 3D HTML Table as a Recordset.” I advise you to read those two articles before you read this one. You should also have basic knowledge on database tables, HTML, DOM and JavaScript.
3D HTML Table Basics
The HTML specification does not give an HTML element for a 3D table. There are several ways of designing a 3D table. The design here is the one I prefer.
My design for a 3D table is as follows: to start with, you have the normal 2D table. Each cell in the table has only one element, which is a one-row table (a table with only one row). It is the cells of the one-row tables that can take arbitrary content. Each one-row table must have an ID. The following diagram illustrates how I give the IDs.
T00, T01, T02, T03, T04
T10, T11, T12, T13, T14
T20, T21, T22, T23, T24
T30, T31, T32, T33, T34
T40, T41, T42, T43, T44
T50, T51, T52, T53, T54
Each ID begins with a T, followed by the number of the 2D row that the one-row table belongs to, and then the number of the 2D column that the one-row table belongs to. You should imagine each of the one-row tables to be going into the page.
If the numbers of cells of the one-row tables are the same, then you have a cuboid, which is a regular 3D table. If they are not the same, then you have an irregular 3D table. In this article I only consider cases of regular 3D tables.
Planes
You can consider the cells to be in a 3D grid with horizontal and vertical planes. The vertical planes should be seen as 2D tables, one behind the other, into the page.
Indices
The counting of all indices begins from zero. I use the variable i to denote the index for a row in the normal 2D table; the variable j to denote the index for a column in the normal 2D table; and the variable k to denote the index for a vertical plane in the 3D table. This gives an index order of (i, j, k).
Minimum Requirements of a 3D Read/Write Recordset
Thinking logically from the above requirements, as a minimum, a 3D recordset should have the following functions:
A function to give the total number of horizontal and/or vertical planes of the recordset.
A function to locate a plane or a cell in order to access data.
A function to edit data in a cell, row or plane.
A function to delete a plane.
A function to add a plane.
Browsers today may not allow you to meet all of these requirements. All browsers today will allow you have a good 3D read-only recordset and some features for writing to them.