this is my solution - takes a fraction of a second to run for 6000. It does work off a calculated row number rather than a table with 6000 records in it. It also depends on the number of records being exactly divisible by number of columns x number of rows to give an exact number of pages. If you don't the additional fields get added as additional rows rather than creating an extra page. Leave that for someone else to worry about
to create the calculated row number, create a table with a single field and populate with the numbers 0 to 9. my table is called admCounter and the field is called ctr
then create this query
Code:
SELECT CLng([singles].[ctr]+([tens].[ctr]*10)+[hundreds].[ctr]*100)+([thousands].[ctr]*1000) AS [Counter]
FROM admCounter AS tens, admCounter AS singles, admCounter AS hundreds, admCounter AS thousands
ORDER BY CLng([singles].[ctr]+([tens].[ctr]*10)+[hundreds].[ctr]*100)+([thousands].[ctr]*1000);
The ORDER BY is not really required but is there anyway
and save it as admCounter
finally to the query proper
Code:
SELECT "3553 5657 8952 3146" AS NUMBER1, admCount.Counter AS Serial_Number, 6000 AS rcount, 15 AS [rows], 4 AS cols, [rcount]\([rows]*[cols]) AS pages, ((([counter]-1) Mod ([pages]*[cols]))\[cols])+1 AS page, ([counter]-1)\([cols]*[pages])+1 AS rownum, (([counter]-1) Mod cols)+1 AS col, ([page]*1000)+([rownum]*10)+[col] AS SortOrder
FROM admCount
WHERE (((admCount.Counter) Between 1 And 6000));
I've included the basis of each element so you can see the calculation - the assumption is in the report it will be sorted on the sortorder column and the rows go across, then down. In a live environment you would be able to populate rcount, rows and cols from other variables and remove the stage calculations. Note: changed cols from 3 to 4 as 45 items per page does not divide equally into 6000
whether this meets to op's requirements is not clear, the screenshots imply a table, but not sure why one is needed - at best you would have a cartesian query with serial number in one table and NUMBER1 as a single value in another table