コード例 #1
0
        protected override void WriteRecord(IReportWriter wtr, TRecord record, TRecord previousRecord, int breakLevel)
        {
            for (int idxGroup = 0; idxGroup < GroupColumns.Count; ++idxGroup)
            {
                var column = GroupColumns[idxGroup];

                if (previousRecord == null || idxGroup >= breakLevel - 1)
                {
                    wtr.WriteCellTotal(column.GetFormattedValue(record), 1);
                }
                else
                {
                    wtr.WriteEmptyCell(1);
                }
            }

            foreach (var column in DataColumns)
            {
                wtr.WriteCell(column.GetFormattedValue(record), 1);
            }

            foreach (var column in AggregateColumns)
            {
                wtr.WriteCell(column.GetFormattedValue(record), 1);
            }
        }
コード例 #2
0
        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);
            }
        }