The main aim of this article is to see how you can compare marks per student per subject in a class using a 3D HTML recordset. Comparing in this case involves subtotals, which result from aggregate functions such as Sum, Avg and Count (on database tables). This article is the fourth part of a four-part series.
Comparing Test Marks Using a 3D HTML Recordset (Page 1 of 4 )
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: you start with 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 to which the one-row table belongs, and then the number of the 2D column to which the one-row table belongs. 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, you have a cuboid, which is a regular 3D table. If they are not the same, you have an irregular 3D table. In this article I only consider cases of regular 3D tables.
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.
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).