TableAdapter
. की सीमाओं के कारण विज़ार्ड, आपको DataTable
बनाना होगा कोड का उपयोग करना।
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);
}
}
आपका dataTable
. होने के बाद भरा हुआ है, बस इसे रिपोर्ट व्यूअर के DataSource
को असाइन करें
ReportDataSource rds = new ReportDataSource(dataTable.TableName, dataTable);
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(rds);
कृपया ध्यान दें कि इन कोड स्निपेट के एक बड़े हिस्से का परीक्षण नहीं किया गया है।