sql >> Databáze >  >> RDS >> Sqlserver

Jak zobrazit sloupce DataColumns v Dataset DataTable

Kvůli omezením TableAdapter průvodce, musíte vytvořit DataTable pomocí kódu.

DataTable dataTable;

using (SqlConnection sqlConn = new SqlConnection())
{
    sqlConn.Open();

    using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter())
    using (sqlDataAdapter.SelectCommand = sqlConn.CreateCommand())
    {

        sqlDataAdapter.SelectCommand.CommandType = CommandType.Text;
        sqlDataAdapter.SelectCommand.CommandText = '
            SELECT * FROM (
                SELECT timeclock.dtTimeIn, timeclock.dtTimeOut, employees.sfirstname,
                    RANK() OVER ( ORDER BY dtTimeIn) rk1, --earliest record gets 1
                    RANK() OVER (ORDER BY dtTimeOut DESC) rk2 --latest record gets 1

                FROM TimeClock INNER JOIN
                    Employees ON TimeClock.lEmployeeID = Employees.lEmployeeID
                WHERE (dtTimeIn > dateadd(day, datediff(day, 0, getdate())-1, 0)) AND (dtTimeOut < dateadd(day, datediff(day, 0, getdate()), 0)) AND (sDept IN ('1', '2', '3'))
            ) A
            WHERE rk2=1';

        sqlDataAdapter.Fill(dataTable);
    }
}

Po vytvoření dataTable vyplněný, jednoduše jej přiřaďte k DataSource prohlížeče ReportViewer

ReportDataSource rds = new ReportDataSource(dataTable.TableName, dataTable);
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(rds);

Upozorňujeme, že velká část těchto fragmentů kódu není testována.



  1. SQL Server 2012 – Příkaz případu v klauzuli where

  2. mysql_query() očekává, že parametr 2 bude zdrojem, zadaným řetězcem

  3. Vlastní agregační funkce (concat) v SQL Server

  4. Při zvětšování velikosti sloupce VARCHAR na velké tabulce by mohly nastat nějaké problémy?