public void Run(IReportWriter wtr, IQuiltContextFactory quiltContextFactory) { WriteHeading(wtr); using (var conn = quiltContextFactory.CreateConnection()) { conn.Open(); var records = GetRecords(conn); TRecord previousRecord = null; foreach (var record in records) { var currentBreakLevel = GetBreakLevel(record, previousRecord); for (int breakLevel = BreakLevelMax; breakLevel >= currentBreakLevel; --breakLevel) { WriteTotals(wtr, breakLevel); } WriteRecord(wtr, record, previousRecord, currentBreakLevel); AccumulateTotals(record); previousRecord = record; } } for (int breakLevel = BreakLevelMax; breakLevel >= BreakLevelMin; --breakLevel) { WriteTotals(wtr, breakLevel); } }
public void Run(IReportWriter wtr, IQuiltContextFactory quiltContextFactory) { using var conn = quiltContextFactory.CreateConnection(); conn.Open(); // Get list of tables. // var tableNames = new List <string>(); using (var cmd = new SqlCommand("select name from sys.tables order by name", conn)) { using var rdr = cmd.ExecuteReader(); while (rdr.Read()) { var tableName = rdr.GetString(0); tableNames.Add(tableName); } } // Get record count for each table. // var recordCounts = new Dictionary <string, int>(); foreach (var tableName in tableNames) { #pragma warning disable CA2100 // Review SQL queries for security vulnerabilities using var cmd = new SqlCommand("select count(*) from [" + tableName + "]", conn); using var rdr = cmd.ExecuteReader(); if (rdr.Read()) { var recordCount = rdr.GetInt32(0); recordCounts.Add(tableName, recordCount); } } // Write report. // wtr.DefineColumn("Table Name"); wtr.DefineColumn("Record Count"); foreach (var tableName in tableNames) { wtr.WriteCell(tableName, 1); wtr.WriteCell(recordCounts[tableName].ToString(), 1); } }