【发布时间】:2017-11-24 12:11:20
【问题描述】:
我目前正在使用报告应用程序。有一个查询,我必须在两个日期之间获取结果。查询如下,
sqlFreeVal = "SELECT FreePro, (SUM(FreeQty) * FreePrice) AS FreeValue, VAT, VATAmount FROM InvoiceDetails INNER JOIN InvoiceHeader ON ";
sqlFreeVal = sqlFreeVal + "InvoiceDetails.CompanyCode = InvoiceHeader.CompanyCode AND InvoiceDetails.StockiestID = InvoiceHeader.StockiestID AND ";
sqlFreeVal = sqlFreeVal + "InvoiceDetails.DailySalesID = InvoiceHeader.DailySalesID AND InvoiceDetails.RepID = InvoiceHeader.RepID AND InvoiceDetails.InvID = InvoiceHeader.InvID ";
sqlFreeVal = sqlFreeVal + "WHERE InvoiceDetails.StockiestID = '" + StockistID + "' AND FreeQty > 0 ";
sqlFreeVal = sqlFreeVal + "AND InvoiceHeader.SalesDate BETWEEN @date1 AND @date2 ";//InvoiceHeader.SalesDate <= '" + toDT + "' ";
sqlFreeVal = sqlFreeVal + "GROUP BY FreePrice, FreePro, VAT, VATAmount ";
然后我使用下面的代码执行它,
SqlCommand queryFree = new SqlCommand(sqlFreeVal, myConnection);
queryFree.Parameters.AddWithValue("@date1", fromDT);
queryFree.Parameters.AddWithValue("@date2", toDT);
SqlDataAdapter adpFree = new SqlDataAdapter(queryFree);
adpFree.Fill(freeTbl);
当我运行它时,它给了我“从字符串转换日期和/或时间时转换失败”。错误。 我的表具有“日期时间”数据类型。
请帮忙!。谢谢。
【问题讨论】:
-
该查询 isn't 已正确参数化 - 您仍在将
StockistID连接到查询中 - 立即停止这样做