【发布时间】:2012-01-13 18:32:00
【问题描述】:
过去几个小时我在谷歌上搜索,这些问题都不适用于我的案例,所以希望你们能提供帮助。 我有一个报告应用程序,用户可以从 DateTimePicker 中选择一个日期,并且将显示具有最大数量值的项目。我使用报表查看器控件来显示信息。
这是我的表适配器中的 SQL 查询:
SELECT TOP (1)
Drink_Name,
SUM(Quantity) AS NoDrink,
Bill_No,
Staff_No,
Bill_Date,
Bill_Value,
Customer_No,
Unit_Price,
Quantity
FROM
(SELECT
Bill.Bill_No,
Bill.Staff_No,
Bill.Bill_Date,
Bill.Bill_Value,
Bill.Customer_No,
Bill_Detail.Drink_Name,
Bill_Detail.Bill_No AS Expr1,
Bill_Detail.Unit_Price,
Bill_Detail.Quantity
FROM
Bill INNER JOIN
Bill_Detail ON Bill.Bill_No = Bill_Detail.Bill_No
WHERE
(Bill.Bill_Date = @Bill_Date)
) AS Temp
GROUP BY Drink_Name,
Bill_No,
Staff_No,
Bill_Date,
Bill_Value,
Customer_No,
Unit_Price,
Quantity
ORDER BY NoDrink DESC
这是生成数据并将数据加载到报表数据集中的代码
CoffeeShopDataSetTableAdapters.DataTable1TableAdapter adapter =
new CoffeeShopDataSetTableAdapters.DataTable1TableAdapter();
CoffeeShopDataSet.DataTable1DataTable table =
new CoffeeShopDataSet.DataTable1DataTable();
adapter.FillByMax(table, dateTimePicker1.Value.ToShortDateString());
ReportDataSource maxdatasource =
new ReportDataSource("DataSet1form3", (DataTable)table);
this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(maxdatasource);
this.reportViewer1.LocalReport.Refresh();
this.reportViewer1.RefreshReport();
问题是我总是得到这个错误:
“System.Data.dll 中发生了“System.Data.SqlClient.SqlException”类型的未处理异常
附加信息:从字符串转换日期和/或时间时转换失败。"
当我尝试使用 SQL Server Management 2008 进行 SQL 查询时,它工作得很好,所以我认为这是 VS 的问题。 提前谢谢大家。 抱歉英语不好
【问题讨论】:
-
dateTimePicker1.Value.ToShortDateString()返回的值是多少
-
Bill.Bill_Date是数据库中的有效日期时间字段,还是字符类型字段(varchar、varchar 等)?它可以包含空值吗? -
为什么要传递字符串而不是日期时间?
标签: c# sql type-conversion