sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan viser du DataColumns i Dataset DataTable

På grund af begrænsningerne i TableAdapter guiden, skal du oprette DataTable ved hjælp af kode.

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);
    }
}

Efter at have din dataTable udfyldt, skal du blot tildele den til ReportViewers DataSource

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

Bemærk venligst, at en stor del af disse kodestykker ikke er testet.



  1. Indsættelse af en fremmednøgle med flere værdier

  2. Postgres sorteringsproblem

  3. mysqli_stmt::bind_param() - angiv en anden datatype end s for hver parameter

  4. Hvilket er bedre 1Tabel 150.000.000.000 rækker eller 5000 TABELLER med 300.000 rækker