我正在尝试构建一个从 SQL 数据库数据生成 RDLC 报告的 ASP NET 网站,但是在尝试通过两个文本框使用用户输入时,它只是在报告中没有显示任何内容,有人能告诉我为什么吗?
代码如下:
protected void ShowReport()
{
DataTable dtOrders = GetOrdersByDates(DateTime.Parse(txtStartDate.Text),
DateTime.Parse(txtEndDate.Text));
RV1.Reset();
RV1.LocalReport.ReportPath = Server.MapPath("~/reports/Report1.rdlc");
ReportDataSource ds = new ReportDataSource("DataSet1", dtOrders);
RV1.LocalReport.DataSources.Add(ds);
}
private DataTable GetOrdersByDates(DateTime from, DateTime to)
{
DataTable dt = new DataTable();
String ConnectionString = @"Data Source=(local)\sqlexpress;initial Catalog=Operations;integrated Security=true;";
using (SqlConnection cn = new SqlConnection(ConnectionString))
{
string query = @"SELECT Date AS Datet, nUser AS cvUser, NameUser AS User, COUNT(nTicket) AS notravels, CASE WHEN flagout = 0 THEN 'NO' ELSE 'YES' END AS FlaggedOut, '"+ from +"' AS FI, '" + to + "' AS FF FROM Operations WHERE Date BETWEEN '"+ from + "' AND '"+to+"' GROUP BY Date, nUser, NameUser, Flagout ORDER BY cvUser";
SqlCommand cmd = new SqlCommand(query, cn);
cn.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows) {
dt.Load(reader);
}
}
return dt;
}
我已经在 SQL Management Studio 上完成了存储过程,并测试了使用此代码手动将查询设置为存储过程,并且它以这种方式工作
protected void Users_Click(object sender, EventArgs e)
{
String ConnectionString = @"Data Source=(local)\sqlexpress;initial Catalog=Operations;integrated Security=true;";
SqlConnection conn = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
string query = @"SELECT CONVERT(datetime, MAX(Date)) AS Datet, nUser AS cvUser, NameUser AS User, COUNT(nTicket) AS notravels, CASE WHEN flagout = 0 THEN 'NO' ELSE 'YES' END AS FlaggedOut, CONVERT (datetime, '2022/12/09 6:0:00.000') AS FI, CONVERT(datetime, '2022/12/10 6:0:00.000') AS FF FROM Operations WHERE (CONVERT(datetime, Date) BETWEEN CONVERT(datetime, '2022/12/09 6:0:00.000') AND CONVERT (datetime, '2022/12/10 5:59:59.999')) GROUP BY Date, nUser, NameUser, Flagout ORDER BY cvUser";
cmd.CommandText = "PR_CantUsers";
cmd.CommandType = System.Data.CommandType.StoredProcedure;
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
conn.Close();
RV1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dt));
RV1.LocalReport.ReportPath = Server.MapPath("~/reports/Report1.rdlc");
RV1.LocalReport.EnableHyperlinks = true;
}