1

我对 VS 和 .NET 还很陌生。

我创建了一个新表单(在现有的 VB.NET 应用程序中),它将数据从 SQL Server 2008 DB 检索到 DataGridView 控件中。

我还需要允许我的用户过滤显示的数据,所以我添加了两个 Datetimepicker 控件——一个用于开始日期,一个用于结束日期。

当用户单击“应用过滤器”按钮时,我想过滤网格客户端中的数据(仅用于复制和粘贴到 MS Excel)或使用两个日期作为过滤器重新查询数据库...

所以我在我的 VB 代码中构建了一个 SQL 查询字符串,如下所示:

    sSQLQry = "SELECT * FROM ReturnUnpaidData_Audit WHERE [AuditDateTime]<= " & Me.dtPicketEndDate.Value.ToString & " AND [AuditDateTime]>= " & Me.dtPicketEndDate.Value.ToString

这给了我一个这样的查询字符串:

SELECT * FROM ReturnUnpaidData_Audit WHERE [AuditDateTime]>= 01/03/2013 15:28:09 AND [AuditDateTime]>= 01/03/2013 15:28:09

这(不出所料)不起作用......

所以我有点卡住了 - 有人可以指出我正确的方向或帮助我找到最好的方法。

顺便说一句,它适用于小型应用程序,数据不多(最有可能只有几行),4 或 5 个用户......无需过多担心大数据或性能

4

2 回答 2

1

您需要在日期值周围加上引号,并在没有时间的情况下对其进行格式化?
WHERE [AuditDateTime]<='" & Me.dtPicketEndDate.Value.ToString("yyyy-MM-dd") & "'"

而且,BETWEEN稍微优雅一些​​。
http://msdn.microsoft.com/en-us/library/ms187922.aspx

于 2013-03-11T16:09:50.850 回答
1

因为您只使用没有时间的日期值。您也可以使用 DtPicketEndDate.Value.date而不是格式化。

于 2014-03-08T07:18:51.760 回答