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 )

I have written articles on creating a 3D HTML table and using a 3D HTML table for a recordset. I advise you to read these two articles first before you read this one. You should also have basic knowledge of 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: 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.

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

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).