go ahead and throw your cursor away.
the data you are looking for is already materialized for you;
the indexes maintain a count of the number of rows for every table.
try this and see if it's not doing exactly what you were trying to do with your cursor:
SELECT so.[name] as
, CASE WHEN si.indid between 1 and 254
THEN si.[name] ELSE NULL END
AS [Index Name]
, si.indid, rows
FROM sys.sysindexes si
INNER JOIN sysobjects so
ON si.id = so.id
WHERE si.indid < 2
AND so.type = 'U' -- Only User Tables
AND so.[name] != 'dtproperties'
ORDER BY so.[name]
Lowell