Tom,
The issue here is understanding where this information is located. Also, that pages are not pages -- from the point of view of the DotNetNuke database - pages are called Tabs. The name is historical. In the database you will fine several tables that start with TAB ... these define what is on a page and how the page is processed.
Here are two helpful queries that can be used by the reports module and other SQL grid display modules (eg. SQLGridSelectedView or SQLView) You will need to customize the queries for PortalID ,TabID, and friendlyname as appropriate.
-- display all tabs(pages) where a given module exist
SELECT
T.TabOrder,
T.TabID,
T2.TabName as [Parent Tabname],
T.TabName,
M.ModuleID,
M.Moduletitle
FROM
dbo.tabs T
join TabModules TM on T.TabID = TM.TabID
join dbo.Modules M on TM.ModuleID = M.ModuleID
join dbo.ModuleDefinitions MD on M.ModuleDefID = MD.ModuleDefID
join dbo.DesktopModules DM on MD.DesktopModuleID = DM.DesktopModuleID
left outer join Tabs T2 on T.ParentID = T2.TabID
WHERE
DM.FriendlyName = 'friendly name of module' '??????
and T.portalid = 2 '????
and M.IsDeleted = 0
and DM.IsAdmin = 0
order by
T.TabOrder
--- modules on a give page (tab)
SELECT
Left(dm.friendlyname, 25) as [Friendly Name],
count(dm.friendlyname) as [count],
dm.version as [Version]
FROM
dbo.tabs t
JOIN tabmodules tm
ON t.tabid = tm.tabid
JOIN dbo.modules m
ON tm.moduleid = m.moduleid
join dbo.ModuleDefinitions MD
on M.ModuleDefID = MD.ModuleDefID
join dbo.DesktopModules DM on MD.DesktopModuleID = DM.DesktopModuleID
WHERE
t.tabid = 54 '????
AND t.portalid = 2 '????
AND m.isdeleted = 0
Group by
dm.friendlyname, dm.version
Order by
dm.friendlyname, dm.version
Hope this helps
Paul.