Asking "how should I generate reports?" is kinda like asking
"What kind of car should I buy?"
There are several different ways to do it.
Homegrown ( asp:repeater , asp:gridview) (as you've alluded to)
Crystal Reports
Active Reports
Sql Server Reporting
You do NOT want to generate <table><tr> statements.
I'm gonna suggest this article:
http://www.codeproject.com/useritems/CreatingCrystalReports.asp
with emphasis on "WITH A DATASET".
A (strong) dataset is kind of a mini-setup of you database.
You might have 100 tables in your database, but if you need a report of
Employees and which Department they are in, you only need to deal with 2 or
3 tables to make this report.
Employee (database table) and Department (database table) and maybe a
EmployeeDepartmentLink (database table)(if Employees are in more than 1
department).
The dataset would also (and only) have these 2/3 tables in it.
Then you create some kind of select (or stored procedure) method to populate
the dataset.
THEN (and only after you get the data you need in the dataset) you open
Crystal Reports (CR) and start working with the data, as the URL/Link I gave
you shows.
ActiveReports is like CrystalReports, but you have to buy/pay for it.
But I prefer AR over CR.
(like some people prefer Chevrolet over Ford).
But that'll get you going.