0

我在 SQL Server 2005 中有一个如下所示的存储过程:

CREATE PROCEDURE [dbo].[REP_PayRange]
    @StartDate datetime = NULL,
    @EndDate datetime = NULL
AS
BEGIN
    SET NOCOUNT ON;
    SELECT * FROM Payment WHERE PayTime BETWEEN @StartDate AND @EndDate
END

它执行,我通过运行从 SQL 中获取结果:

EXEC REP_PayRange '1 Jan 2012', '10 Jan 2012'

我遇到困难的地方是 Visual Studio。

以下是我正在采取的步骤:

  1. 创建一个新的空白“Web 窗体”/aspx 页面,并选择 Visual Basic 语言
  2. 插入一个 GridView
  3. 选择一个数据源并选择“数据库”
  4. 选择我已确认有效的数据连接(SQL Server Native)
  5. “指定自定义 SQL 语句或存储过程”
  6. 选择“存储过程:”“REP_PayRange”
  7. 为 StartDate 选择“参数来源:无”和默认值“2012 年 1 月 1 日”,为 EndDate 选择“参数来源:无”和默认值“2012 年 1 月 10 日”
  8. 在测试查询页面上,我点击了“测试查询”,确保我的值是我上面指定的值并且没有返回数据。如果我保存它并在浏览器中预览它,则 GridView 为空。

我想使用这种方法创建我的网页,以便以后可以将参数源更改为日历而不是默认值。

提前感谢您的任何帮助或提示。

4

1 回答 1

1

你需要做两件事:

(a) 停止使用区域性、依赖于语言的样式来格式化您的字符串。使用适当、标准、明确的格式,例如'YYYYMMDD'. 您的 Web 表单应该传递正确键入的参数和/或用于.Format()摆脱这种“2012 年 1 月 1 日”的废话。

(b) 停止使用BETWEEN日期范围查询,因为这可能很模糊(即使您认为您的日期时间列不包含时间,您确定之间的意思是您认为的意思吗)?

一些背景:

于 2012-07-10T01:40:44.580 回答